项目情况
游戏名:《游侠姐妹》
工具说明:本游戏前端使用白鹭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...
目前游戏已经上线微信平台,在线体验地址如下: