查看原文
其他

王者荣耀背后的三大匹配算法及数学模型

王海华 模型视角 2023-10-02

在9月26日19时,杭州亚运会的电子竞技王者荣耀亚运版本金牌比赛中,中国队以2-0的成绩战胜马来西亚队,在杭州电竞中心成功夺冠,赢得了在本届亚运会电竞项目的首金!但是,除了队伍之间的实力和策略外,还有一个因素在电竞比赛中起到了关键作用,那就是匹配机制。有人可能会问,匹配机制与这场比赛有什么关系呢?电子竞技如此吸引人,不仅仅是因为它的刺激和竞争性,更是因为背后精确的数学匹配机制。这种机制确保了玩家的技能与其对手的技能大致相当,从而创造了一种既有挑战性又充满乐趣的游戏环境。这也是为什么电子竞技如此吸引人的原因之一。接下来,我们将探索电竞背后的三大匹配算法,揭示它们如何运作,以及为什么它们对于创造公平和有趣的电竞环境至关重要。

1. Elo评分系统

Elo评分系统,最初为国际象棋设计,但随后在各种竞技游戏中得到了广泛应用。Elo评分的核心思想是为每位玩家提供一个分数,这个分数代表玩家的技能水平

两名玩家比赛前,系统会根据他们的Elo评分(一种数学公式,待会儿细讲)来预测比赛结果。它考虑了两位玩家的评分差异来估算各自的胜率。比如,如果两位玩家的评分相当,那么他们各自赢的机会基本为50%。但如果一方的评分远高于另一方,那么高分玩家赢的概率就会更大。

每场比赛结束后,玩家的Elo评分会根据实际比赛结果进行更新。如果一个低分玩家击败了高分玩家,他将获得更多的积分。相反,如果高分玩家如预期那样赢了,他只会获得少量的积分。

具体来说,这里的预期得分的计算公式为:

其中 是玩家A的预期胜率。 分别是玩家 和玩家 的当前Elo评分。

同理,玩家B的预期得分为:

注意,

在比赛结束后,玩家的评分将根据实际结果和预期得分进行更新。更新公式为:

其中 是玩家 的新评分。 是权重因子,通常是一个固定的数值,例如16、32或64。它决定了一场比塞可以改变玩家评分的最大值。 是玩家 的实际得分:胜利为1,平局为 0.5 ,失败为 0 。

举个具体例子,假设你现在正在玩一个棋类游戏,每次你赢了,你得到一些积分,输了就失去一些积分。但是,如果你赢的对手很强,那么你会得到更多的积分;反之,如果你赢的对手很弱,那么你只会得到少量的积分。

当你刚开始玩时,你会有一个初始的评分,比如1500分。每场比赛开始前,根据你和你的对手的评分,系统会预测谁更有可能赢。如果你和你的对手评分相当,那么双方赢的机会都是50%;如果你的评分比对手高很多,那么你赢的机会就更大。比赛结束后,系统会根据实际结果调整你的评分。如果你赢了预测你会输的比赛,你会得到很多积分;反之,如果你输了预测你会赢的比赛,你会失去很多积分。如果比赛结果和预测一致,你的评分变化就会比较小。

简而言之,Elo评分算法就是一个方法,它根据你和你的对手的评分预测比赛结果,并根据实际结果调整你的评分。这样,随着时间的推移,你的评分会更准确地反映你的实际水平

在游戏和电子竞技中,Elo评分系统的主要应用是为玩家匹配合适的对手。基于每个玩家的Elo评分,系统可以估算玩家之间的胜率,从而为他们匹配到水平相当的对手。此外,Elo评分还可以用来排名玩家。高Elo评分的玩家通常被认为是更高水平的玩家。

尽管Elo评分系统在很多情况下都很有用,但它也有一些限制和问题,不完全适应团队游戏。因此,很多游戏可能会采用修改过的Elo系统或其他匹配算法。

2. Glicko系统

尽管Elo系统已经非常成功,但它也有其局限性,特别是在处理玩家长时间未参与比赛的情况。为了改进这一点,Mark Glickman开发了Glicko系统。不同于Elo系统只考虑玩家的技能水平,Glicko还考虑了技能的不确定性,即评分偏差(RD)。如果一个玩家长时间没有玩游戏,他的RD会增加,表示我们对他的实际技能越来越不确定。当他重新开始玩游戏并取得一些胜利时,他的评分将快速上升,反映出我们对他的技能有了更多的了解。

Glicko系统为每位玩家维护两个主要参数:技能的平均值 (通常表示为 ) 和关于技能的不确定性 (通常表示为 ,代表 Rating Deviation)。另外,Glicko系统还引入了一个系统参数,称为 (tau),代表技能的变化可能性。

每位玩家的技能被建模为一个高斯分布,其中平均值是 ,标准差是

两位玩家间的技能差异被定义为他们的评分差异除以常数 。具体地说,

其中, 是常数,通常取值为

玩家A对玩家B的预期胜率计算为:

玩家的新评分 和新的 计算为:

其中, 是实际比赛结果(胜=1,平 ,负 ),而 是预期胜率和实际结果的差异的方差。

Glicko的主要应用是为玩家匹配合适的对手。系统会尽量匹配评分和RD都相近的玩家。Glicko还可以用于创建玩家的排行榜和等级。一般来说,评分 用于排名,而 用于表示排名的不确定性。Glicko系统定期增加玩家的 值,表示随着时间的推移对玩家技能的不确定性增加。这鼓励玩家经常参加比赛,以保持他们的 值较低

Glicko评分系统提供了一种在考虑技能不确定性的同时,更准确地评估和匹配玩家的方法。

3. Trueskill算法

TrueSkill算法是由微软研究开发的,主要用于多人在线游戏的玩家匹配。与Elo和Glicko系统不同,TrueSkill专门为团队游戏设计,可以处理多于两名玩家或两队的情况

TrueSkill算法的核心是使用贝叶斯推断来估计玩家的技能水平。TrueSkill为每位玩家维护两个参数:技能的平均值 和关于技能的不 确定性 。这两个参数共同形成了玩家技能的高斯分布。

首先每位玩家的技能被建模为一个高斯分布:

其中, 是玩家 的技能水平, 是该玩家技能的平均值,而 是技 能的标准差,表示对技能估计的不确定性。

每场比赛中,玩家的性能 也是随机的,并且基于玩家的技能分布:

其中, 是一个固定的参数,表示每场比赛中玩家性能的固有变异性。

如果玩家 击败玩家 ,那么

基于比赛的实际结果,我们可以更新玩家的技能分布。这通常涉及到复杂的贝叶斯推断,其中玩家的新技能分布是基于他们的旧技能分布和比赛结果计算出来的。为了有效地进行这种更新,TrueSkill使用了因子图和Sum-Product算 法。在比赛结束后,通过观察到的比赛结果,玩家的技能分布将得到更新,其中 会相应地调整。

TrueSkill算法的实际实现涉及到了许多细节和优化,这只是一个概述。此外,Trueskill 2 是TrueSkill的一个更现代的版本,它引入了额外的功能和改进。


这三大评分系统都试图解决一个核心问题:如何准确地估计玩家的技能水平,并为他们匹配合适的对手。每种系统都有其独特之处,但它们都基于数学原理工作,并帮助创造了一个公平而有竞争力的游戏环境。

下次你再进入"王者荣耀"的战场时,记得背后有一组复杂的数学算法正在为你努力工作,确保每场比赛都是有趣且具有挑战性的!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存