我的游戏acolytefight.io是一个多人技巧射击竞技场。它看起来可能看起来很简单,但它被设计成一款高技能的游戏。熟练的玩家学习每个法术的准确时间、速度、距离和行为,并学会预测和躲避敌人,使其成为最后一个站稳脚跟的人。当然,像这样的游戏需要一个评级系统。每个人都想知道,谁是第一名?
大多数评级系统都基于ELO评级系统,该系统最初是为国际象棋设计的。有很多变体-TrueSkill是最知名的。DOTA 2和英雄联盟都是基于ELO的系统。当我把埃洛用在追随者格斗中时,每个人都很讨厌。每隔几天,就会有新的人加入到不和谐的行列中,说评级系统是垃圾。花了几个月、几千万场游戏和4个重拍的评级系统才明白原因。
任何ELO系统(包括所有变体,如TrueSkill)的输赢曲线如下所示:
这张图显示,如果你的对手比你低500分(也许你是一名经验丰富的球员,而他们是新手):
ELO承认你是更好的玩家,在20场比赛中,你会赢19场,他们会赢1场,所以为了保持平衡,埃洛让你输的比你赢的多19倍。均衡允许评级系统只衡量技能,而不是玩游戏的数量。
在Elo术语中,表达这个19:1输赢比率的另一种方式是说你有95%的获胜概率。
在追随者的争斗中,评分系统有很多次迭代。人们提出了很多(数学上不靠谱的)建议。找出根本原因花了很长时间。
根本原因是什么?ELO预计您的获胜概率将遵循指数曲线,如下所示:
如果你的对手略低于你(200分之差),你将有76%的机会获胜。
如果你的对手比你低很多(差400分),你将有91%的机会获胜。
问题是,追随者战斗的实际胜率曲线实际上并不是这样的。以下是100000场比赛的实际胜率:
请注意,这里的实际曲线看起来与上图完全不同。并没有真正的指数曲线。它更具线性。正是这种洞察力让我意识到我必须改变评级体系。如果我们让一名顶级球员,让他们反复与高级别、中级和低级别球员比赛,直到我们从统计上对他们的胜率充满信心,那么他们的胜率没有理由符合指数曲线。为什么我们甚至要使用指数曲线呢?是谁决定的?他们是根据什么数据得出这一结论的?
我假设像DOTA 2这样的游戏在他们的方程式中仍然有一个指数曲线,尽管它可能是错误的。这不会影响他们的原因是他们的媒人只是把技能相似的玩家放在一起。与我的小游戏不同,他们很少需要准确评估一个高水平的球员在与其他技能水平的球员的比赛中会表现如何。不过,如果他们曾经这样做过,我肯定它会不能正常工作。
我设计了一个新的评级系统,名为ACO评级系统,除了解决了一些关键问题外,它与ELO类似。
实际胜率:获胜概率根据过去100000场比赛的实际数据计算。这意味着它不需要拟合指数曲线。例如,系统可以查找其数据库并看到1800评级玩家与1300评级玩家的匹配结果是较高级别的玩家在76.3%的时间内获胜。如果高水平的玩家表现优于这一点,他们会随着时间的推移获得积分,根据实际数据,这是一个公平的系统。
新手压制:当你在玩评分比你低得多的人时,可以获得/失去的点数会减少。这会让人们更快乐,因为他们不会输给新手那么多分。相反,他们只能把最多的分数输给与他们技能水平相似的人,这感觉要公平得多。
小增量:一般情况下,每场比赛你会得到或失去大约1分。这意味着每一场比赛在计划中都是无关紧要的,而且在排名模式下玩每一场比赛也不会有什么坏处。TrueSkill或Glicko等竞争系统表示,它们的优势是你可以更快地收敛到你的评分上,有时一场比赛就会增加50或100分。实际上我发现这是一个不利因素。ACO的缓慢评级增长意味着,如果你登上排行榜榜首,你肯定知道你真的赚到了,这不仅仅是因为评级系统中的不确定性错误造成的。
每日衰退:每天,一个人的评分都会下降5个百分点。这确保了每个人都被鼓励继续打排名,捍卫自己的冠军头衔。为了保持真实评级不变,衰败与评级分开存储,上限为100,每场比赛抵消1个衰减点。以前,人们会在最高排行榜上扎营,根本不是为了保住自己的位置而打球,这并不好玩。
“评级系统是垃圾”的投诉大幅减少,尽管还没有达到零。外面有没有一个完美的评级系统?大概不会吧。
只有当你和其他技能水平相近的人玩时,ELO才能真正发挥作用。它是在我们可以对数十万个游戏进行数据挖掘之前发明的。我预计,即使对于国际象棋来说,获胜的概率曲线实际上也不是指数型的。
有了ACO评级系统,即使你没有与其他类似技能水平的人相匹配,你在统计上仍然是在与他们竞争。这意味着它适合不能依赖大玩家基础和配对系统的较小游戏。