码迷,mamicode.com
首页 > 其他好文 > 详细

联网游戏开发实例分享之《游侠姐妹》(附源码)

时间:2020-04-28 10:06:16      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:游戏   机制   延迟   接受   创建   end   对战游戏   速度   git   

项目情况

游戏名:《游侠姐妹》

工具说明:本游戏前端使用白鹭Egret开发,后端联网部分通过接入Matchvs游戏云的SDK实现。

游戏简介:

《游侠姐妹》是一款支持联网对战的休闲类小游戏。游戏具体玩法为:在屏幕中的大灰狼走到游侠姐妹的弓箭准星之中时,点击对应的准星进行射击,打中大灰狼加分。 红色姐妹只能打红色的大灰狼,蓝色姐妹只能打蓝色的大灰狼,打错颜色或者漏打自身颜色的大灰狼将扣除生命值。 成功集中大灰狼可以获得分数,使用金币可以复活。 随着游戏进行,大灰狼的前进速度将越来越快。在本局时间结束后,分数高的一方将获胜。

注意事项:

多人玩法:此游戏为联网对战游戏. 测试完整游戏流程需要两台手机和两个微信帐号,并同时进行多人对战。

单人模式:登录后大厅界面的 创建房间 按钮可体验真人+机器人玩法(需联网)

部分技术实现方案

UI方面使用用Egret游戏引擎,Egret有一整套工具来支撑UI上的开发,网络利用Matchvs 的JavaScript SDK配合Matchvs云服务完成通信环节开发。同步机制采用Matchvs使用的是帧同步策略,定时触发同步但不等待。客户端定时上报消息,服务器定时下发数据给客户端,延迟高的客户端不会拖累其他人。

对于画面同步,实现方式也很简单。数据同步帧和渲染帧分离的情况下,收到同步帧数据,驱动渲染帧渲染。 首先在发送事件之前, 我们设置下同步帧的帧率,使用接口setFrameSync,一般设置为10(看你的项目要求)。这时, 我们发送帧同步数据,sdk只会在每整100ms( 1s / 你设置的帧率大小)时发送一次数据包,这个数据包括这段时间内的所有数据包(也可称之为这一帧的数据), 接收方就可以接到这一帧的数据。
具体的使用方法:先用接口setFrameSync设置帧率,然后再选择进入游戏界面,用接口sendFrameEvent发送帧同步事件(比如;游戏战斗情况实时事件)。这时房间内所有玩家通过绑定frameUpdate回调事件,就可以接受到这一帧的数据。
我们的实现: 玩家点击按钮射箭的判断以后,把消息通过接口sendFrameEvent发送出去,但是该玩家不立即处理客户端画面, 当玩家(包括该玩家)通过接口frameUpdate接受到数据,再修改客户端画面,从而实现同步。

技术图片

基本原则;先绑定,再使用

技术图片

发送帧同步事件(其实和普通接口一样的使用方式)

技术图片

接受帧同步数据, 根据不同的event判断不同的事件
资源地址:

源码及体验地址

源码地址:https://github.com/matchvs/Ra...

目前游戏已经上线微信平台,在线体验地址如下:

技术图片

联网游戏开发实例分享之《游侠姐妹》(附源码)

标签:游戏   机制   延迟   接受   创建   end   对战游戏   速度   git   

原文地址:https://www.cnblogs.com/baimeishaoxia/p/12791735.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!