查看原文
其他

程序丨教你利用工具将单机游戏改造成对战网游

农夫与射手 腾讯GWB游戏无界 2022-08-30

前言:本Demo原来是Cocos Creator官方的一个Demo,本文章利用了第三方联网插件工具Matchvs将其改造成了一个三人对战的Demo(点击文末阅读原文,可获取在线体验地址)。


注意:


1.游戏满三人才可以开启,匹配成功后,玩家通过键盘AD键操纵小怪物向左向右移动抢摘星星。


2.下载Demo源码后,需用Cocos Creator打开工程(建议使用1.7.0及以上版本)。


游戏配置


Demo运行之前需要去Matchvs 官网配置游戏相关信息,以获取Demo运行所需要的GameID、AppKey、SecretID。如图:



获取到相关游戏信息之后,运行Demo,即可进入房间,准备开始游戏,如图所示:



初始化SDK


在引入SDK之后,在初始化前需要先调用Matchvs.MatchvsEngine.getInstance()获取一个Matchvs引擎对象实例:



另外我们需要定义一个对象,该对象定义一些回调方法,用于获取游戏中玩家加入、离开房间、数据收发的信息,这些方法在特定的时刻会被SDK调用。



为方便使用,我们把engine和reponse放到单独的文件Mvs.js中,使用module.exports将它们作为全局变量使用:



其他文件可以用require函数引入engine和reponse:



完成以上步骤后,我们可以调用初始化接口建立相关资源。


注意 在整个应用全局,开发者只需要对引擎做一次初始化。


建立连接


接下来,我们就可以从Matchvs获取一个合法的用户ID,通过该ID连接至Matchvs服务端。


获取用户ID:



用户信息需要保存起来,我们使用一个类型为对象的全局变量GLB来存储:



登录:



加入房间


成功连接至Matchvs后,立即随机匹配加入一个房间进行游戏。


代码如下:



停止加入


我们设定如果有3个玩家匹配成功则满足开始条件且游戏设计中不提供中途加入,此时需告诉Matchvs不要再向房间里加人。


代码如下:



在这里需要记下房间的用户列表,记入到全局变量GLB.playerUserIds中,后面要使用到。


发出游戏开始通知


如果收到服务端的房间关闭成功的消息,就可以通知游戏开始了。



游戏数据传输


游戏进行中在创建星星、玩家进行向左、向右操作时,我们将这些操作广播给房间内其他玩家。界面上同步展示各个玩家的状态变化。


其中星星是房主创建和展示,然后通知其他玩家,其他玩家收到消息后展示,相关的代码如下:



玩家进行向左、向右操作时,这些消息会发送给其他玩家:



考虑到数据同步会有延迟,不同客户端收到的数据的延迟也会有差异,如果只在同步玩家左右移动的操作数据,那么过一段时间之后,不同客户端的小怪物位置可能会不一样,因此每隔一段时间还是需要再同步一次小怪物的位置、速度和加速度数据:



最终效果如下:



搞定。


今日推荐  

·《暗黑2》经典数值公式分析总结(一)

·完成!使用Unity从零点五开始,做半个不能玩的小游戏


加微信(GADtxzw),回复“程序”,加入程序猿交流群,领取60G腾讯内部分享等独家资料。


↓↓↓点击阅读原文,了解更多。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存