随机球队的球员评分

时间:2010-06-20 11:22:16

标签: algorithm rating-system

我正在研究一种算法,以便在基于团队的游戏中对各个玩家进行评分。问题是没有固定的球队 - 每次有10名球员想要比赛,他们被分成两个(有些)甚至是球队并且相互比赛。因此,对球队进行评分是没有意义的,相反,我们需要依靠个人球员评分。

我希望考虑许多问题:

  • 新玩家需要某种临时排名来达到他们的“真实”评级,然后他们的评分与经验丰富的玩家相同。
  • 系统需要考虑到团队可能包含各种玩家技能等级 - 例如。一个非常好,一个好,两个平庸,一个真的很穷。因此,玩家评级的简单“平均”可能是不够的,可能需要以某种方式加权。
  • 在每场比赛之后调整评级,因此算法需要基于每场比赛,而不是每个“评级期”。如果出现一个好的解决方案,这可能会改变(我知道Glicko使用评级期)。

请注意,作弊不是此算法的问题,因为我们还有其他验证玩家的措施。

我查看了TrueSkillGlickoELO(这是我们目前正在使用的内容)。我喜欢TrueSkill / Glicko的想法,你有一个偏差,用于确定评级的准确程度,但没有一个算法考虑随机团队的观点,似乎主要基于1v1或FFA游戏。

有人建议您对球员进行评分,好像每个获胜球队的球员都击败了失败球队中的所有球员(25“决斗”),但我不确定这是否是正确的方法,因为它可能会疯狂地当一个真正糟糕的球员进入胜利球队并且在输球队中赢得一场非常优秀的球员时,就会夸大评级。

欢迎提出任何建议!

编辑:我正在为已建立的玩家寻找一种算法+某种方式来对新手进行排名,而不是两者的组合。对不起,感到困惑。

没有AI,玩家只能互相玩耍。游戏由赢/输决定(没有抽奖)。

9 个答案:

答案 0 :(得分:5)

临时排名系统总是不完美的,但是更好的排名系统(例如Elo)旨在比现有玩家的评级更快地调整临时评级。这承认,尝试与其他玩家仅仅通过几个游戏建立能力评级本身就容易出错。

我认为你应该使用对方球队所有球员的平均评分作为确定新手球员临时评分的输入,但是只将其作为一场比赛来处理,而不是作为N场比赛与N场比赛。每个游戏实际上只是一个数据样本,并且Elo系统处理这些游戏的累积,以便在切换到正常排名系统之前提高单个玩家的排名估计值。

为简单起见,在为另一个团队的某个成员计算新的规定评级时,我也不会区分反对团队成员的既定和临时评级(除非Elo要求这样)。所有这些评级都隐含了误差,因此没有必要在增加排名估算值时添加可能没什么价值的不必要的复杂性。

答案 1 :(得分:2)

首先:你很难找到一个完美的系统。每个系统都会在某个地方出现漏洞。

并回答你的问题:也许这里的想法会有所帮助:Lehman Rating on OkBridge

这个评级系统正在使用(自1993年以来!)在名为OKBridge的互联网桥网站上。 Bridge是一款合作伙伴游戏,通常由一队2人组成的另一支队伍进行比赛。评级系统的设计旨在评估个别玩家,并迎合许多人与不同合作伙伴一起玩的事实。

答案 2 :(得分:2)

在这个领域没有任何背景,在我看来,排名系统基本上是一个统计模型。一个好的模型将随着时间的推移收敛到一致的排名,目标是尽可能快地收敛。我想到了几个想法,其中一些已经在其他帖子中被提及:

  1. 显然,老牌球员有赛道记录而新球员没有。因此,对于新玩家来说,不确定性可能更大,尽管对于不一致的玩家来说它可能非常高。此外,这可能取决于游戏是否主要使用先天技能或获得技能。我认为你会想要每个玩家的“差异”参数。方差可以由两部分组成:真实方差和“温度”。温度就像模拟退火一样,你的温度随着时间的推移而变冷。据推测,在足够的比赛结束后,气温将降至零。
  2. 是否有多个方面可供使用?就像在足球比赛中一样,你可能拥有优秀的射手,优秀的传球手,拥有良好控球能力的球员等等。基本上,这些将是你系统中的自由度(在我的足球类比中,他们可能是也可能不是真正独立的)。似乎一个准确的模型会将这些考虑在内,当然你可能有一个黑盒子模型隐含地处理这些。但是,我希望了解你系统中的自由度数量有助于选择黑匣子。
  3. 你如何划分球队?您的团队算法意味着建立平等团队的模型。也许你可以使用这个模型为每个玩家和/或预期的表现水平创建一个权重。如果玩家技能有不同的方面,也许你可以为那些在一个方面表现明显好于预期的玩家提供额外积分。
  4. 游戏真的输赢,还是分数差异可以发挥?既然你说没有关系,这可能不适用,但至少一个接近的分数可能意味着结果的不确定性更高。
  5. 如果你是从头开始创建一个模型,我会设计改变的意图。至少,我希望可能有许多参数是可调的,甚至可能是自动调整。例如,当您拥有更多玩家和更多游戏时,初始温度和初始评级值将更为人所知(假设您正在跟踪统计数据)。但我肯定会预计,你可以建立的模型越多,玩的游戏越多。
  6. 只是一堆随意的想法,但这听起来像一个有趣的问题。

答案 3 :(得分:1)

几年前,微软的TrueSkill团队的一些人在Game Developer Magazine上发表了一篇文章,解释了他们在那里作出决定背后的一些推理。它肯定提到了Xbox Live的团队游戏,所以它应该至少有些相关。我没有该文章的直接链接,但您可以在此处订购后方问题:http://www.gdmag.com/archive/oct06.htm

我从文章中记得的一个具体问题是整个团队得分,而不是例如给予杀戮最多的玩家更多积分。那是为了鼓励人们帮助球队获胜,而不是仅仅试图最大化他们自己的得分。

我相信还有一些关于调整参数的讨论,试图加速收敛以准确评估玩家技能,这听起来像你感兴趣的。

希望有帮助...

答案 4 :(得分:1)

如果您对使用感兴趣(比开发中更多),您应该尝试我们的排名系统rankade

Elo Glicko (这里是comparison)相反,rankade可以管理任何类型的匹配(一对一,派系与阵营(两队,可能不对称), 多人游戏,多派系,合作游戏,单人游戏等等,因此您可以插入一个匹配(不会在多个匹配中分解一个实际匹配) 。

根据您的需要,评级在每场比赛后进行调整,算法管理玩家技能等级的混合临时排名(通过< em>活动动态特征)。

我们接待了许多基于随机团队的体育团体/俱乐部,这是我们的dojo

答案 5 :(得分:0)

'得分'如何解决?,

如果一支球队总共得到25分(球队中所有球员的得分),你可以将球员得分除以球队总得分* 100,以得出该球员为球队做了多少的百分比(或全部)与两支球队分数。)

您可以使用此数据计算得分, 如果百分比低于团队成员(或两队成员)的90%: 将玩家视为新手并使用不同的权重因子计算得分。

有时一个更容易理解的概念会更好。

答案 6 :(得分:0)

第一个问题有一个非常“游戏”的解决方案。您可以为前几场比赛创建一个新手大厅,玩家无法看到他们的分数,直到他们完成一定数量的游戏,为您提供足够的数据以获得准确的评分。
另一种选择是第一种变体,但更简单 - 给它们一个匹配与AI,用于确定起始分数(以一个例子的实际情况来看)。

答案 7 :(得分:0)

对于在发布多年后偶然发现的任何人:TrueSkill 现在支持由多个玩家组成的团队和不断变化的配置。

答案 8 :(得分:-2)

  

每次有10名玩家想玩,   他们分为两个(有点)   甚至团队互相比赛。

这很有意思,因为它意味着每支球队的平均技术水平相等(因此并不重要),并且每支球队都有相同的获胜机会。如果你认为这个约束是正确的,那么每个玩家的胜利与损失的简单计数应该和任何一个一样好。