程序丨教你利用工具将单机游戏改造成对战网游
前言:本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中,后面要使用到。
发出游戏开始通知
如果收到服务端的房间关闭成功的消息,就可以通知游戏开始了。
游戏数据传输
游戏进行中在创建星星、玩家进行向左、向右操作时,我们将这些操作广播给房间内其他玩家。界面上同步展示各个玩家的状态变化。
其中星星是房主创建和展示,然后通知其他玩家,其他玩家收到消息后展示,相关的代码如下:
玩家进行向左、向右操作时,这些消息会发送给其他玩家:
考虑到数据同步会有延迟,不同客户端收到的数据的延迟也会有差异,如果只在同步玩家左右移动的操作数据,那么过一段时间之后,不同客户端的小怪物位置可能会不一样,因此每隔一段时间还是需要再同步一次小怪物的位置、速度和加速度数据:
最终效果如下:
搞定。
加微信(GADtxzw),回复“程序”,加入程序猿交流群,领取60G腾讯内部分享等独家资料。
↓↓↓点击阅读原文,了解更多。