共计 1750 个字符,预计需要花费 5 分钟才能阅读完成。
项目由来
在三月份的时候就开始编写这个项目,原本只是觉得自己对 Swoole 不太熟练,当作练手来写着玩的。写着写着发现还挺好玩的,代码量也不多,捉迷藏游戏的趣味性不错。
如果只写完代码就扔在 Github,感觉就好像做大学实践作业一样,自己也没什么提高。那就干脆写一个简略的教程吧,把一些开发时的思路写下来,可能会对其他学习 Swoole 的同学有一定的帮助。
原本只是一些零散的篇章,想着三章之内应该就写完的。写出来以后觉得和网上的教程好像又差不多,一点新意都没有。我就想着要不把一些开发思路改成题目,让读者自己去思考和完成,这样学习效果可能会更好。
小册其实在六月份(熬了好多个周末通宵)已经写完了,但是因为掘金的一些原因,现在才正式上架,下面这张就是小册的封面图。
(不要问为什么是粉红色,我也是被安排的那个,可能是我比较帅吧)
小册介绍
为什么要学习 Swoole
根据资料显示,全世界有 80% 以上的 Web
网站都是使用 PHP
进行开发,在编程语言排行榜上虽然不是名列前茅,但在 Web
领域 PHP
可以说是数一数二,网上最流行的段子“PHP 是世界上最好的语言 ”看来并不是空穴来风。PHP
的环境搭建方便,内置函数齐全,数组结构特别适合 Web
开发。但 PHP
也不是万能的,他的 动态加载 和单进程特性 决定了他不适合做密集运算或长连接的项目。
Swoole
的出现解决了 PHP
的诸多问题,常驻内存 的Server
避免了 PHP
重复加载造成的性能损耗,协程和异步 也使得 I / O 密集型场景并发处理能力大幅提升,WebSocket 应用 也较为容易开发。
游戏效果
本小册主要是带领大家完成一个联机小游戏,为了降低项目复杂度,降低初学者的学习成本,并没有使用到 Swoole
的协程
以及其他高级特性,尽可能地用最基础的功能来实现游戏逻辑。
话不多说,我们先上一个游戏的最终效果图给大家看看:
没错,就是紧张刺激的捉迷藏小游戏。
使用技术
- PHP 7.2
- Swoole 4.3.0
- Swoole WebSocket Server
- Swoole Task Worker
- Swoole Static Handler
- Swoole Timer After
- Vuejs
- HTML WebSocket
- Redis String
- Redis List
- 少量算法逻辑
基础功能开发
- 捉迷藏游戏逻辑(逻辑)★★
- 匹配机制(缓存)★
- 联机对战(网络编程、缓存)★★★★
- 游戏结束判定(逻辑)★
可扩展功能
- 当前在线人数:使用 Redis Set 保存在线人员(缓存)★
- 排行榜:使用 Redis SortSet(缓存)★
- 观战模式:在游戏管理者 Game 中增加 Watcher 数组,订阅游戏消息(逻辑)★★
- 邀请对战:往被邀请人发一条消息确认开战(网络编程)★★
- 多人模式:参与时不限制人数(网络编程)★★★
- 随机地图生成:暂时只想到了多点随机路线拼接(算法)★★★
- 优化地图展示:手机适配(前端)★★★
- 游戏时间限制:使用定时器制定每局游戏时间(逻辑)★★★
小册的内容
本小册将会分为四个部分。
- 第一部分占用三章的幅度,主要讲解游戏逻辑的编写,我们会先制作出一个单机版的服务端逻辑,让电脑随机行走进行测试。
- 第二部分占用六章的幅度,这里将会分为两个主要部分,分别是:接入
Swoole
作为网络层和使用Vue
写一个简单的前端页面,让游戏能够满足两个玩家联机对抗。当然,并不是直接就把服务端全部代码写完,然后再跑去写前端这么粗暴,两个部分的代码都是按照项目的开发流程一点一点往里填。 - 第三部分占用七章的幅度,将会带领大家实现多个游戏的扩展功能,优化游戏体验,让游戏更有乐趣。
- 第四部分是附录,为部分没有接触过
Swoole
和Vue
的童鞋介绍两种技术的入门知识。
作者介绍
赵童鞋,西山居后端工程师,专职于游戏专题开发,觉得写游戏是一件很好玩的事情。创造快乐,传递快乐。
- 公众号「写程序的赵童鞋」作者
你会学到什么?
- 游戏逻辑的开发思路
- Swoole WebSocket Server 的使用
- Swoole Task 机制的使用
- Swoole 定时器的使用
- Vue 的入门知识
- WebSocket 的前后端通信
- Redis 的各种使用方式
- 少量算法逻辑
- …
适宜人群
- 厌倦了每天编写枯燥的增删改查接口的同学
- 有 PHP 开发经验,但还没有接触过 Swoole 的同学
- 看过 Swoole 文档但缺乏项目经验的同学
- 想写一个游戏但又无从下手的同学
特别鸣谢
- 架构师 龙哥