点击上方亿元程序员+关注和★星标
引言
Cocos联机游戏入门
大家好,相信小伙伴们通过关注亿元程序员,慢慢地进入了游戏开发行业,对游戏开发的认知也逐渐增长。
也有小伙伴通过阅读笔者的文章,成功独立完成了属于自己的游戏,并且成功地上线。
这是值得开心的事情,打造自己理想中的游戏,一是完成心中的梦,二是获得一些惊喜的收益。
不知道大家有没有联机游戏的开发经验呢?如今小游戏的趋势逐渐往中、重度发展,随着小游戏性能的提升,越来越多的厂商投入到小游戏开发中去,与此同时,联机游戏的发展也必将蓬勃。
本文重点介绍一下Cocos如何进行联机游戏开发,如果对您或者其他人有帮助,建议转发、收藏、点赞和在看!
本文源工程在文末获取,小伙伴们自行前往。
1.什么是联机游戏?
联机游戏是指可以通过互联网或局域网与其他玩家实时互动和共同游戏的电子游戏。
联机游戏包括多种形式,从简单的双人对战游戏到复杂的大型多人在线游戏(MMORPG)。
这些游戏允许玩家在同一虚拟环境中交流、竞争或合作。
2.联机游戏有哪些特点?
联机游戏的主要特点包括:
- 实时互动:玩家可以在同一时间进入游戏,与其他玩家进行实时互动。
- 社交功能:许多联机游戏提供聊天、好友列表和公会等社交功能,增强玩家之间的交流。
- 多人模式:除了单人模式,联机游戏通常支持多人模式,可以与其他玩家组队或对战。
- 持续更新:联机游戏通常会不断更新内容和功能,保持游戏的新鲜感和吸引力。
联机游戏的类型包括以下几种,不知道小伙伴们有没有玩过呢?
- 对战游戏:如《英雄联盟》《Dota 2》等,玩家之间进行竞技对战。
- 合作游戏:如《怪物猎人》《绝地求生》,玩家共同完成任务或生存挑战。
- 大型多人在线角色扮演游戏(MMORPG):如《魔兽世界》《最终幻想14》,玩家在一个巨大的虚拟世界中探索、战斗和交流。
联机游戏已经成为现代游戏行业的重要组成部分,吸引了全球大量玩家,并形成了庞大的社群和电竞产业。
3.Cocos进行联机游戏开发实例
1.服务端
环境:为了更加通俗易懂,我们后端采用nodejs
来简易搭建。
首先我们创建一个Server.js
作为服务端的主程序,搭建简易的服务端。
联机游戏通常采用Socket
连接,在这里我们需要用到ws
模块,这个模块的使用比较简单,通过npm install ws
即可完成安装。
打开我们的脚本,引入我们安装好的ws
模块,指定端口3000
这个端口创建WebSocket服务。
本次教程主要展示客户端主角以及其他客户端玩家的移动交互,即玩家在游戏世界中可以看到其他玩家并且看到他们的移动。
所以服务端主要的功能有以下几点:
1.监听客户端连接:监听客户端连接主要通过server.on('connection', (socket) => {});
实现。
2.客户端唯一id的分配与保持:服务端需要给连接上来的客户端分配唯一id,以及保存他们的实例,便于管理。
3.玩家出现:玩家进入游戏后,与服务端连接建立完成,需要告诉已经在游戏中的其他玩家,于此同时,需要告诉玩家其他玩家的信息。通过socket.send();
给特定客户端发送消息。实例中给其他玩家发送appear
消息,消息内容包括cmd指令、handle唯一句柄,x坐标和y坐标
。
4.接受客户端指令:联机游戏的核心在于,客户端不断给服务端发送消息,服务端对消息进行处理后转发给到特定的其他玩家。形成联机的状态。连接成功后主要通过socket.on('message', (message) => {});
接收客户端发送的消息。实例中主要处理玩家的move
移动消息,修改玩家的实时位置信息以及广播给其他玩家。
5.玩家下线:当玩家退出游戏后,服务端需要处理玩家下线操作,主要通过socket.on('close', () => {});
监听玩家的断线情况。当玩家离开游戏后,我们需要把玩家从客户端保持列表中移除,同时需要给其他玩家广播该玩家的离线disappear
消息。
这样我们的简易服务端就编写完成了,下面我们把它运行起来。
2.客户端
环境:CocosCreator 3.8.3
回到我们熟悉的CocosCreator
,简单拼接一下UI
,用笔者的Logo
作为主角,Cocos
的Logo
作为其他玩家并且制作成预制体(其他玩家有多个)。
文中的Socket
模块使用笔者前面文章《8年主程手把手打造Cocos独立游戏开发框架》系列中的《Cocos独立游戏开发框架中的Socket网络模块》整理出来的,感兴趣或者有需要的小伙伴可以前去翻阅,这里不做过多介绍。
首先打开我们创建好的OnlineGameDemo
脚本,关联一下我们的主角以及其他玩家的预制体。
在start
方法中创建Socket
并且与服务端进行连接。
然后监听服务端的消息:
1.其他玩家的出现:我们需要对其他新出现的玩家进行实例化创建,设置初始位置,并保持。
2.其他玩家移动:当接收到其他玩家移动的数据包时,我们需要实时更新其他玩家的位置信息。
3.其他玩家的消失:当其他玩家消失时,我们需要对其他玩家的实例进行销毁,并且从保持列表中移除。
最后我们需要监听键盘事件,通过WSAD
进行移动,修改位置后,发送移动消息给服务端。
3.效果演示
注意,由于没做玩家头像同步,因此设定玩家自己是亿元程序员
的Logo
,其他玩家是Cocos
的Logo
。
多人联机。
4.进阶
本文主要是介绍Cocos如何进行联机游戏开发,属于入门级的教程,可以加深小伙伴们对联机开发的印象。
如果需要更进一步地运用到实际项目中去,需要对服务器的并发、IO、负载
等都需要考虑到。在这个时候我们就可以考虑市面上一些比较成熟的框架了。
这里笔者推荐麒麟子的TGX大厅子游戏联机框架-V2.0。
它的优势:
- 前后端统一编程语言
- 商业级解决方案
- 服务器多进程分布式负载
- 使用二进制传输数据
- 子游戏分包管理
- UI 框架
- 子模块框架
- SVIP 交流群
- 付费知识星球
- 一次购买,终身更新
感兴趣的小伙伴可以通过私信"联机框架"进行了解,感谢您的支持与鼓励!
链接:store.cocos.com/app/detail/…
结语
本文源工程可通过私信发送OnlineGameDemo获取。
更多实用源码可通过阅读原文搜索"亿元程序员"获取。
我是"亿元程序员",一位有着8年游戏行业经验的主程。在游戏开发中,希望能给到您帮助, 也希望通过您能帮助到大家。
AD:笔者线上的小游戏《填色之旅》《方块掌机经典》《贪吃蛇掌机经典》《重力迷宫球》大家可以自行点击搜索体验。
实不相瞒,想要个赞和在看!请把该文章分享给你觉得有需要的其他小伙伴。谢谢!
推荐专栏: