背景:
首先说明一下匹配中可能遇到的问题:
问题1:
就是玩家发起匹配请求进入匹配队列后,然后此时玩家却在副本打boss,此时是十分有可能出现:匹配成功再拉它进入别的地图的时候,却发现:拉取失败了。因为它正在战斗,无法传送。
问题2:
对于不同分段的玩家,是否能采用分治的思维,进行多线程匹配? 毕竟:不同分段的玩家其实是匹配互相不干扰的。
---------
实现方式1(逻辑层设计匹配):
再逻辑层匹配,也就是用一个内存表,结构为List类型,以:匹配满5人进地图为例子,那就是每次匹配都进行检测是否满5人(同时把匹配条件不满足的剔除,如:不在匹配场景了)。
即使玩家在不同的分线,其实逻辑上大家还是在一个匹配队列的。
实现方式2(在场景层进行匹配):
玩家增多后,会开出不同的分线,场景层是单线程的,直接搞一个List结构做匹配池即可,同时多个场景可能会对应不同的线程,因此匹配可以认为是使用的多线程匹配策略。
--------
增加了备战场景,其实这种从设计上避免了很多问题。保证玩家:仅仅只能做匹配,而不能在副本中打boss,避免了很多问题(如:匹配成功但是处于战斗状态而无法传送)。