大家好,如果您还对帧同步坦克竞技对战平台匹配机制揭秘不太了解,没有关系,今天就由本站为大家分享帧同步坦克竞技对战平台匹配机制揭秘的知识,包括的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
项目主要有四个场景: start --> home --> choose --> game
start_scene: 是游戏的开始场景,在此场景主要做了微信授权,获取用户的昵称,头像等信息。通过云函数获取用户的openid(不了解云函数的可以参考这篇文章:http://mp.weixin.qq.com/s?__biz=MzU3NTg5OTcyNQ==&mid=100000114&idx=1&sn=da9a127751e8050f3c52caa4ea1069f2&chksm=7d1d50504a6ad946f6a37c2a9a79e22774609e4594db9d7bb89a0247c035438800773c67aea9#rd)。然后把用户的信息和用户的openid都放到全局对象Global里边,方便以后使用。
home_scene: 授权成功之后,就跳转到此场景。
进入此场景之后,需要初始化MGOBE框架的SDK。
首先,设置SDK所需要的参数值(gameId , openId, secretKey, server,从控制台获取),并放入缓存中。
initListen函数做的就是初始化Listener,并创建房间实例,给房间添加监听。截取主要代码如下:
初始化完成之后,就可以选择1V1,3V3。目前3V3其实我现在设置的是2V2,没有实际去测效果,但是计算坦克的初始位置的时候,把这种情况考虑进去了,这个到帧同步时再细讲。
choose_scene: 选择1V1或者3V3之后,就会进入此场景。其实,目前来讲,choosescene完全可以和homescene合并为一个场景。在此,我说明一下为什么把它们分开。
因为,之前我设想的是,在这个场景可以由玩家自由选择坦克类型什么的,选择好之后,由玩家手动点击匹配。同时,也可以在玩家匹配成功之后,显示所有对战玩家的对局信息,类似于王者荣耀进入游戏之前的那个场景。这是为了以后,拓展功能方便。比如以下这种:
现在省略掉这些优先级较低的环节。因此,进入choose_scene场景之后,就直接发起匹配。
发起匹配之前,我们需要在MGOBE控制台创建一个匹配规则。
首先,在控制台左侧菜单【房间管理】,找到【匹配规则集】
新建规则集,填写规则集名称和规则集内容。名称随意填就好,规则集内容是一个json。它的结构是这样的:
我以当前坦克大战的规则集为例,解释一下各个字段的含义。
{ "version": "V1.0", //版本号,一般填V1.0就可以 "teams": [ { "name": "1v1", // 名称1v1 "maxPlayers": 1, //每支队伍的最大玩家数量为1 "minPlayers": 1, //每支队伍的最小玩家数量为1 "number": 2 //总共有两支队伍 } ], "playerAttributes": [ { "name": "lv", //等级,匹配时需要传入此参数 "type": "number" //属性的类型,目前暂时仅支持number } ], "rules": [ { "type": "deviation", //匹配规则的类型:当前为误差规则 "expression": "teams[i].players.lv", //依据玩家等级组队 "value": 5, //表示所有玩家之间等级相差不能超过5 "waitTimeSteps": [ { "waitTimeSeconds": 10, //等待10秒若匹配不上,则放宽规则 "value": 10 //把等级差放宽为10 } ] } ], "timeout": 15 //全局匹配超时时间}
更复杂的匹配规则,可以参考官方文档:https://cloud.tencent.com/document/product/1038/34952
规则集创建完之后,就需要创建匹配code了。左侧菜单【房间管理】,找到【在线匹配】。右侧新建匹配,填写描述信息,匹配规则选择刚才我们创建的那条匹配规则集。
点击确定之后,就会分配一个匹配code,这个code就是调用发起匹配API需要传入的一个参数。
现在,可以调用room.matchPlayers方法发起匹配了。匹配超时之后,会弹出超时的对话框,可以选择重新匹配,或者取消匹配退出匹配队列。取消匹配,会返回到home_scene场景。(超时对话框是我从cocos论坛找的UI,结合自己需要改的)
说明一下:
目前MGOBE匹配支持两种模式,房间匹配和玩家自由匹配。房间匹配采用的是类似于棋牌游戏,一个玩家开房,然后邀请其他玩家进来游戏,或者其他玩家通过房间匹配进来。所有玩家准备之后,开始进行游戏。而玩家自由匹配,是指所有玩家进行的单人匹配。因此,目前框架不支持类似于王者荣耀那样的组队匹配。之前,有联系过他们的产品,说以后会上线此功能。
帧同步,所有逻辑都在客户端完成,因此不需要在服务端写额外的代码。这样一来,有好处也有坏处。好处就是我们不用关心服务端的实现,坏处就是灵活性不够强,很多问题,只能通过在客户端想办法来实现。另外,此框架有个需要注意的地方就是,在这种情况下,也需要下载实时服务器的代码(即服务端),然后发布到实时服务器。操作流程可查看官方文档。
框架所有的API都可以在 MGOBE.t.ds文件里找到相对应的解释和使用方法。因此,多看此文件会让你更加熟悉整个框架。
代码中有很多被注释掉的代码。有的是为了不让之前的代码影响到现在的逻辑,有的是在调试过程中,为了对比各种实现方式而留下的。忽略即可。
代码下载下来可以用cocoscreator 2.0.10 直接跑起来,暂时用我的服务器参数就可以。
用户评论
这个帧同步坦克大战匹配系统玩起来太爽了!游戏运行流畅,几乎没有延迟。
有15位网友表示赞同!
匹配速度让人惊讶,快节奏的游戏体验非常刺激。
有19位网友表示赞同!
"帧同步"这个词很专业,但我能感觉到这个游戏在技术上真的很棒。
有15位网友表示赞同!
坦克对战的画面真是震撼人心,操作起来感觉很真实。
有10位网友表示赞同!
匹配到的玩家都挺有礼貌和技巧的,玩得挺过瘾。
有5位网友表示赞同!
游戏中的坦克种类多样,每个都有自己独特的性能,选择自己喜欢的来组队战斗超级酷!
有20位网友表示赞同!
帧同步技术使得即使多人联机也能保持流畅度,我非常喜欢。
有8位网友表示赞同!
"匹配系统"做的真的不错,避免了等待时间长的问题。
有18位网友表示赞同!
无论是新手还是坦克战爱好者都能找到乐趣,游戏难度适中。
有19位网友表示赞同!
视觉效果非常好,坦克炮火的炸裂场景特别震撼.
有11位网友表示赞同!
匹配系统的公平性得到了保障,没有明显卡点或延迟现象。
有13位网友表示赞同!
"帧同步"技术使得多人对战时非常流畅,很适合竞技爱好者。
有9位网友表示赞同!
游戏内有大量的挑战和成就,增加了重复游玩的乐趣。
有15位网友表示赞同!
匹配过程超级快,几乎不需要等待太久就能开始战斗。
有13位网友表示赞同!
我喜欢这个匹配系统因为它有效地减少了我的输赢时间浪费在等待上。
有6位网友表示赞同!
"帧同步"技术使得我的操作反应和队友紧密协调,玩得过瘾极了!
有15位网友表示赞同!
游戏的平衡性做得挺好的,每个坦克都需要策略去应对。
有12位网友表示赞同!
高效率的匹配流程确保了每一局都有高质量的游戏体验。
有18位网友表示赞同!
尽管是在线多人模式,我几乎感觉不到网络延迟问题的存在。
有15位网友表示赞同!
"帧同步"保证了我们的坦克操作和队友的动作如同在本地一样无缝衔接。
有12位网友表示赞同!