当前位置: 首页 > 后端技术 > PHP

《基于 Swoole 的对战游戏实践》开始上课

时间:2023-03-29 15:40:11 PHP

项目缘起我是三月份开始写这个项目的。只是觉得自己对Swoole不是很精通,所以写出来作为练习手。写和找还是蛮好玩的,代码量不多,捉迷藏的游戏很有趣。如果只是把代码写好扔到Github上,感觉就像在做大学练习作业,并没有太大的进步。然后就写个简单的教程,写下一些开发思路,可能对其他学习Swoole的同学有所帮助。本来就是零零散散的几章,我觉得三章之内就可以看完了。写完之后感觉和网上的教程差不多,没什么新意。只是想着把一些开发思路改成题目,让读者自己去思考和完成,这样学习效果可能会更好。小册子其实在6月份就完成了(在熬了很多个周末),但是由于掘金的一些原因,现在才正式上架。以下是小册子的封面图片。(不要问为什么是粉红色的,我也是被安排的,可能我比较帅)手册介绍了为什么要学习Swoole资料显示,全球80%以上的网站都是开发的使用PHP。虽然它不是编程语言中的佼佼者,但PHP可以说是Web领域中的佼佼者。网上流传最广的笑话“PHP是世界上最好的语言”似乎并不是空穴来风。PHP环境搭建简单,内置功能齐全,数组结构特别适合Web开发。但是PHP并不是万能的。其动态加载和单进程的特点决定了它不适合计算密集或长连接的项目。Swoole的出现解决了PHP的很多问题。驻留内存的Server避免了PHP重复加载带来的性能损失。协程和异步也大大提升了I/O密集场景的并发处理能力。WebSocket应用程序也更易于开发。游戏效果这本小册子主要是带领大家完成一个网络小游戏。为了降低项目的复杂度,降低初学者的学习成本,没有使用Swoole的协程等高级特性,尽量使用最基础的功能。实现游戏逻辑。话不多说,给大家看一下上一场比赛的最终效果图:是的,这是一款刺激的捉迷藏游戏。使用技术PHP7.2Swoole4.3.0SwooleWebSocketServerSwooleTaskWorkerSwooleStaticHandlerSwooleTimerAfterVuejsHTMLWebSocketRedisStringRedisList少量算法逻辑捉迷藏游戏逻辑(逻辑)基本功能开发匹配机制(缓存)联机对战(网络编程,缓存)★★★★游戏结束判断(逻辑)★可扩展功能当前在线人数:使用RedisSet保存在线人数(缓存)★排行榜:使用RedisSortSet(缓存)★观看模式:在游戏管理器中添加Watcher数组,订阅游戏Message(逻辑)★★邀请对战:发送消息给被邀请者确认开战(网络编程)★★多人模式:参与人数不限(网络编程))★★★随机地图生成:暂时只想到多个点随机路线拼接(算法)★★★优化地图显示:手机适配(前端)★★★游戏时限:使用定时器to设置每场比赛的时间(逻辑)★★★小册子的内容这小册子将分为四个部分。第一部分共三章,主要讲解游戏逻辑的编程。我们会先创建一个单机版的服务器逻辑,让电脑随机走动进行测试。第二部分占据了六章的范围,将分为两个主要部分,即:接入Swoole作为网络层和使用Vue编写一个简单的前端页面,让游戏满足两个玩家在线对抗。当然,不是把服务端的代码全部写完,然后跑着写前端就这么粗鲁了。两部分的代码是根据项目的开发过程一点一点填写的。第三部分共计七章,将带领大家实现多种游戏的扩展功能,优化游戏体验,让游戏更加有趣。第四部分是附录,为一些没有接触过Swoole和Vue的童鞋介绍两种技术的入门知识。笔者介绍的是西山居后端工程师赵同协,专门从事游戏开发,觉得写游戏是一件非常有趣的事情。创造快乐,传递快乐。公众号你会从《写程序的赵童鞋》作者那里学到什么?游戏逻辑开发思路SwooleWebSocketServer使用Swoole任务机制使用SwooleTimer入门知识使用VueWebSocket前后端通信Redis各种使用方法小算法逻辑...适合厌倦每天写无聊加法的人The删除、修改、查看接口的同学有PHP开发经验,但没有接触过Swoole。看过Swoole文档但缺乏项目经验的同学。想写游戏却无从下手的同学。特别鸣谢建筑师龙哥