帧同步坦克大战匹配系统
在介绍匹配系统之前,先说一下项目的整体结构。
项目主要有四个场景: start --> home --> choose --> game
start_scene: 是游戏的开始场景,在此场景主要做了微信授权,获取用户的昵称,头像等信息。通过云函数获取用户的openid(不了解云函数的可以参考这篇文章:微信云开发使用教程)。然后把用户的信息和用户的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 直接跑起来,暂时用我的服务器参数就可以。
帧同步坦克大战匹配系统相关推荐
- 帧同步坦克大战移动系统
上节讲到了匹配系统,匹配完成之后,我们就需要开始进行帧同步了.但是,需要注意,只有房主才可以调用开始帧同步的方法.因此,需要加一层判断. 然后,房间内的其他玩家需要监听开始帧同步的广播,接收到开始帧同 ...
- 基于java的坦克大战游戏系统毕业设计-5.0(论文设计+源码+PPT答辩).rar
随着计算机的普及以及对电子游戏的认识, 电子游戏已被越来越多的人选作放松. 娱乐的休闲方式: 电子游戏既不需要专门购买游戏器材, 也不需要宽阔的游戏场地, 只需要一台能独立完成任务的计算机即可, 它可 ...
- 坦克大战-C语言-详注版
代码地址如下: http://www.demodashi.com/demo/14259.html 坦克大战-C语言-详注版 概述 本文详述了C语言版坦克大战游戏的原理以及实现方法,对游戏代码进行了详细 ...
- Unity项目总结(已完成17项,持续更新ing,含商城、塔防、背包、动画、坦克大战等)
Unity项目总结 写在前面 视频播放(Lua调UnityAPI) AB包使用(异步加载AB包) 编辑器模式运行(Editor编辑器开发) Phong光照模型(顶点片元Shader.表面体Shader ...
- 多人游戏对战技术(坦克大战、状态同步)
用状态同步的方式实现一个坦克大战的小游戏,这也是一次全新的尝试,从游戏的效果来看,在正常的网络速度下效果符合预期.这里跟大家分享下游戏客户端中用到的关键技术点. 一. 同步方式的选择,状态同步or ...
- 帧同步_微信小游戏接入“熊孩子噩梦”健康系统 帧同步能力上线
3月31日,微信小游戏官方公众号"做个小游戏"发文宣布全新面向未成年人保护的健康系统已经上线,该系统联动"成长守护平台"的功能,可以更好助力家长群体对于未成年人 ...
- java坦克大战 实训报告_坦克大战系统《Java程序开发实训》综合实训报告.doc
坦克大战系统<Java程序开发实训>综合实训报告 <Java程序开发实训>综合实训报告 题目: 坦克大战系统 姓名: 方庆 学号: 2010203206 班级: 10软件(2) ...
- 【跟我一起学Unity3D】做一个2D的90坦克大战之AI系统
对于AI,我的初始想法非常easy,首先他要能动,而且是在地图里面动. 懂得撞墙后转弯,然后懂得射击,其它的没有了,基于这个想法,我首先创建了一个MyTank类,用于管理玩家的坦克的活动,然后创建AI ...
- 坦克大战python_Python语言学了没用?那只能说你是真的没有精通了Python语言
[文末有福利] Python的热度一直高居不下,运维,自动化测试,后端开发,机器学习...Python的用武之地真的太多了! "人生苦短,我用Python",对于普通职场人士来说, ...
最新文章
- 肠里细菌“肚里蛔虫”:肠脑研究缘何越来越热
- 联发科mtk和骁龙730哪个好_天玑720和骁龙730g哪个好?两款处理器应该如何选择?...
- fckeditor2.63 上传图片的一个问题的解决办法
- C++ map 使用详解(含C++20新特性)
- Hadoop(5)-Hive
- php模板引擎循环start,PHP模板引擎Smarty内建函数section,sectionelse用法详解
- java new对象 =null_在Java中将对象分配为null会影响垃圾回收吗?
- BOM操作及DOM表单案例练习
- 美团 -python
- 如何使用高大上的方法调参数
- Socket编程---聊天室终极版-私聊群聊
- 基于java象棋游戏_基于JAVA技术的中国象棋游戏设计与实现
- 车载电源的ISO7637处理
- C语言实现矩阵卷积运算
- 架构图、用例图、流程图、时序图、类图
- 震坤行工业超市研发效能提升之路 | 云效
- DataWhale天池-金融风控贷款违约预测-Task01赛题理解
- 阿里巴巴高效的页面动画解决方案——Ant Motion Design
- 我的python爬虫自学之路
- 初中生用计算机作弊,初中生“考试作弊”惯用的3个手段,全中是学渣,学霸:长见识了...
热门文章
- 【日题】数学是什么?是做题(bushi)
- 【pygame】Python 制作 XP 经典扫雷游戏
- Word,PDF,PPT,TXT之间的转换方法 2010-11-27 05:13
- Typescript----前端
- redis:db0-db15
- python微信聊天机器人_python微信群聊天机器人[python] import curses
- Python自学日记28——如何选择学习资料
- 2021武冈高考成绩查询,扩散!武冈高考成绩明日出炉!附高考成绩查询入口及全国高校名单.........
- 决策树(decision tree)(二)——剪枝
- 干货 | 数字经济创新创业——软件研究