告别“鱼塘局”! 这套匹配机制为你找到真正“势均力敌”的对手

原创 作者:杀手番茄 2019-09-11 2.8k

很多多人对局的游戏,都有如何匹配玩家的需求。大到《王者荣耀》,小到《clash royale》。


每个游戏对于匹配的需求,各不相同,但仍然有不少的地方是共性的:

  • 水平相近的在一起玩
  • 尽可能快的匹配成功


要解决这个问题,我们要从匹配池讲起。

匹配池,即玩家群体分步。通常有几种典型分步:

  • 头部集中、长尾
  • 梭子
  • 正态



这几种分步,看似各不相同,但其实是可以互相转化的,在游戏的不同阶段。

大部分游戏,刚上线/开服时,通常所有人都处在头部集中。

随着活跃情况不同,就会有头部玩家跑的很快,把后面的大部队拉开,呈现长尾的分步。

随着时间,大部队开始缓慢前移,形成梭子形状。绝对的正态分步是极端理想情况,几乎不会出现。

我们先制定一个基本匹配逻辑:

  • 玩家进入匹配池
  • 后台扫描玩家段位,根据段位相近原则,找寻是否有合适的其他玩家
  • 如果人数不足,扩大搜寻范围;循环此过程
  • 找到足够的玩家,匹配成功


这个逻辑是一个最基本的原型,现在我们结合匹配池的情况,看看会出现什么情况。

在头部集中情况下,几乎是秒匹配,体验很好,玩家之间段位也比较相当。

很明显的例子,就是低段位、刚开服、赛季刚开始的时候,匹配很快。

但是仍然有问题:这个大量的玩家中,其实混杂了很多水平高的玩家。因为段位还没有拉开,所以按照段位相近原则,他们是和菜鸟一起在玩的,也就是俗称的鱼塘局。

作为设计者,我们是希望这些大神,尽快脱离鱼塘的——因为实力不对等的对局对双方都是垃圾体验。

那么我们就需要一个机制,来识别——通常是连胜,然后让他们获得更多段位分。比如炉石的连胜奖励星星规则。

这是第一个补充规则的形成过程。

  • 在梭子、长尾的分步中,开始出现部分玩家跑的太快,脱离了大部队,逐渐越来越难匹配。


通常来讲,能冲在最前面的,都是游戏的核心用户,他们是游戏的风向标和重要的观测对象。我们不太希望他们因为太积极而反而玩不下去。但是确实等待时间太久,怎么办?

我们回到基本匹配逻辑,我们发现,等待时间主要来自于两个地方

  • 段位相近玩家多少
  • 扩大搜寻范围的效率


其中第一条,我们无法解决。但第二条,可以想点办法。我们可以认为,

等待时间T=需要扩大的搜寻范围S/单次扩大范围的幅度p

那么缩小T的方式就非常明显

扩大p:让每次找不到人时,扩大范围的刻度提高

缩小S:让一开始,就有一个很大的搜寻范围,减少中间无用循环

用一个实际数字距离。

假设一个3000分的玩家,初始在3000±200的范围开始搜寻,然后每次找不到时,扩大50搜寻范围。如此循环。假设预期是在扩大到3000±1500范围才能匹配成功的话,时间会是[(1500-200)/50*后台单次循环时间t]=26t

我们可以调整为:初始在3000±1000的范围开始搜寻,如果找不到,扩大100范围。那么时间会是[(1500-1000)/100*后台单次循环时间]=5t

减少了约80%的时间。

  • 尽管低段位玩家人数一般都是很多的,足够匹配,但多人对抗类游戏的零和博弈会导致玩家被打流失,无法感受到真正乐趣。这时候,我们会启用AI。


这里我们不探讨AI怎么做,只探讨匹配机制的相关问题。

我们会设立两个参数:放几个AI、AI的难度。

大部分玩家肯定感受过,刚进一个游戏,如PUBGM,都是机器人。一局最多5个真人。


考虑到玩家的渐进感受,会随着玩家段位提升,逐步提升真人数量、减少AI数量。直到进入到梭子分步的中间高点附近时,才可能是几乎全真人的对局。

  • 最后讲讲elo


elo的公式,和核心参数,网上资料一大把。我就不赘述了。

在我看来,elo只是一个衡量标准。我之所以一开始不讲这个,而是讲匹配池,是希望建立一个对宏观数据的概念。然后随着推演,来解决微观体验的问题,从而完善规则。

因为即使你用最简单的星星模型——赢一局+1星星、输一局-1星星,你也得面对匹配规则如何设计。也就是前面三大点的精髓。

这套规则,是比较简单、容易掌握的方式。在大部分情况下,是足够用的。对于像LOL、王者这样规模的项目,需要的细则更加的多,也有基于特定的需求来源指定的。


作者:杀手番茄
专栏地址:https://zhuanlan.zhihu.com/p/79926382

相关推荐