Z项目跨服玩法
pvp跨服匹配赛
- 线程问题
匹配线程
网络连接的建立、注册、断开
游戏服请求匹配
匹配成功创建副本
副本创建成功通知游戏服
匹配服 MatchServer
- 如何处理逻辑服、战斗服断开的逻辑
- 如何处理匹配过程中各种原因的匹配失败?
- 线程问题
战斗服 PVPServer
- 连接匹配服
- 其他逻辑和地图服一样,增加额外的创建副本逻辑
- 游戏服和战斗的连接时效性什么时候断开?
- 负载情况上报匹配服逻辑需要完善
- 匹配服如果断开了,应该怎么办?
- 线程目前没有问题,因为只有一个创建副本的请求,和匹配服的连接管理放一个线程就OK.
游戏服 GameServer
- ID调整保证玩家id全服唯一
- 服务器的唯一标志调整,采用pid+sid保证全平台的服务器hostID唯一
- 远程地图客户端支持多地图,增加远程服务器类型,保证刷新,开关闭都能针对指定类型的远程地图
- 匹配服断开应该怎么办?
服务器之间的心跳
基础逻辑已经完成,心跳失效处理需要完善细节
待处理问题
- 如果匹配过程中,匹配服和游戏服断开连接如何处理?
- 匹配过程中断线取消所有正在匹配的队伍
- 如果匹配成功,创建战场,匹配服和战斗服断开连接如何处理?
- 如果匹配成功找不到战斗服会提示占不到战斗服然后取消这次匹配
- 如果创建成功后,没有反馈到中心服,那么中心服也就不能通知游戏服,此时游戏服会有个超时设置,超过时间取消这次匹配,然后重新匹配
- 如果比赛过程中,游戏服和战斗服断开连接如何处理?
- 游戏服和战斗服断开逻辑,走通用的地图逻辑,就是玩家踢回默认地图
- 踢回地图后删除本次匹配信息,清除当前比赛的信息
- 玩家下线,再次上线还能进入战场吗?
- 数据保留,根据策划需要不需要
- 打完比赛匹配组队何时清理?
- 通过notice
- 战斗服的连接和断开
- 需要就连接
- 什么时候断开?
- 中心服的连接?什么时候连接
- 暂时一直连接(配置了就连接)
- 如果游戏服处理掉了匹配,那么,中心服怎么知道呢?中心服继续匹配?那么会提示重复?
- 未解决
- 如果一切以游戏服请求为主,新的来了,老的覆盖?如何?
- 游戏服毕竟是通过验证的不可能让玩家随便请求
- 如果匹配重复了,通知游戏服,其实游戏服发现groupid对不上,是不需要处理的?
- 游戏服一定保证一个玩家只有一个groupid,这样一旦对不上,这次匹配就拉到
- 唯一问题,就是副本会创建多余的,这里就是内存的问题,其实这个问题可以理解,因为毕竟这种重复的情况是少数的
- 游戏服线程问题?
- 未解决
- 战斗服地图同步问题,应该处理成只同步自己的副本和地图 已搞定
- 开启时间问题
- 活动开启时间
- 副本连接
健壮性保证
- 匹配服
- 匹配服和游戏服、战斗服都有心跳,检测连接的健壮性
- 心跳超时,匹配服主动关闭连接,等待对端重连
- 当游戏服请求匹配发现重复的时候,此时需要用新的匹配住去替换老的匹配组,保证一个玩家不会同事存在多个匹配
- 对于游戏服和战斗服,做重复注册的逻辑,重复注册会产生玩家顶号一样的逻辑
- 当玩家已经匹配成功,此时游戏服再次重复匹配,此时返回的匹配成功信息中的group.id将会和新的不一致,
将放弃本次匹配结果,保证和游戏服的一致性。
- 游戏服
- 游戏服和匹配服持有心跳
- 游戏服有检查心跳的定时器 HeartChecker
- 心跳超时,那么会断开所有连接,等待重连机制重连
- 取消所有正在匹配的队伍(正在比赛的不用管)
- 取消匹配之后清楚玩家各种状态,保证重连以后,玩家可以很快进行新的匹配
- 游戏服和战斗服利用原有远程地图机制保证玩家的稳定性
- 当战斗服发生错误(断开连接、关服等)玩家被踢回默认地图时,如果发现该地图是战斗地图,
那么会情况玩家匹配数据,保证玩家不会状态错误,导致不能进行新的匹配 - 战斗服在活动期间不进行连接清理,连接上,就让保持连接,知道活动结束,在进行断开,这样不会出现中间状态
保证此期间稳定性,如果需要考虑性能,可以后期进行处理,逻辑会相对复杂一些 - 匹配服的连接,暂时采用一旦配置了,就一直保持连接,减少中间切换的复杂性,和战斗服连接一样
- 游戏服定时器 PlayerMatchCheckTask 检查玩家匹配的各种状态
- 匹配请求状态超过10000S没返回,那么将会放弃本次请求
- 正在匹配中状态超过5分钟没有匹配成功,那么也将会放弃本次匹配
- 战斗中状态超过60分钟没有结果,那么也将放弃本次战斗
- 以上所有状态放弃之后,都降清理玩家数据,保证玩家可以进行下一次匹配请求
- 战斗服
- 战斗服和匹配服保持心跳
- 战斗服作为游戏服的远程地图,有原远程地图的可靠性保障
- 如果玩家匹配之后,由于游戏服各种原因导致游戏服放弃了本次匹配,但是此次匹配已经产生了副本,由于此时的group.id
和玩家的id不一致,玩家将会放弃此次副本,保证玩家只会进一个地图。 - 第三条的情况下,将会有玩家占便宜,因为对放没进来,这也算是运气好吧。
- 战斗服会主动上报负载到匹配服,游戏服会进行一些计算达到简单的负载均衡