16

我正在研究一种算法,可以在基于团队的游戏中对单个玩家进行评分。问题是没有固定的球队存在——每次有 10 名球员想要比赛时,他们被分成两支(有点)偶数球队并互相比赛。出于这个原因,给球队打分是没有意义的,相反,我们需要依靠个人球员的评分。

我希望考虑到一些问题:

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

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

我看过TrueSkill,GlickoELO(这是我们目前正在使用的)。我喜欢 TrueSkill/Glicko 的想法,您可以使用偏差来确定评分的精确程度,但没有一种算法考虑到随机团队的观点,而且似乎主要基于 1v1 或 FFA 游戏。

有人建议您对玩家进行评分,就好像获胜球队的每个球员都击败了失败球队的所有球员(25次“对决”),但我不确定这是否是正确的方法,因为它可能会大大提高评级当一个非常糟糕的球员在获胜的球队中并获得了胜利,而在失败的球队中一名非常优秀的球员。

欢迎任何和所有建议!

编辑:我正在为老牌玩家寻找一种算法+某种对新手进行排名的方法,而不是两者的结合。对困惑感到抱歉。

没有人工智能,玩家只能互相玩。比赛由赢/输决定(没有平局)。

4

8 回答 8

5

临时排名系统总是不完美的,但更好的系统(例如 Elo)旨在比现有玩家的评级更快地调整临时评级。这承认,试图在与其他玩家的几场比赛中建立能力评级本质上是容易出错的。

我认为您应该使用对方球队所有球员的平均评分作为建立新手球员临时评分的输入,但仅将其视为一场比赛,而不是 N 场比赛对 N 名球员。每场比赛实际上只是一个数据样本,Elo 系统会处理这些比赛的累积,以随着时间的推移提高单个玩家的排名估计,然后再切换到正常的排名系统。

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

于 2010-06-20T11:43:42.707 回答
2

首先:你很难找到一个完美的系统。每个系统都会在某个地方存在缺陷。

并回答您的问题:也许这里的想法会有所帮助:OkBridge 上的雷曼评级

该评级系统在称为 OKBridge 的互联网桥接站点上使用(自 1993 年以来!)。桥牌是一种伙伴关系游戏,通常由 2 人团队对抗另一队 2 人。评级系统旨在对个人玩家进行评级,并迎合许多人与不同伙伴一起玩的事实。

于 2010-06-20T14:03:24.780 回答
2

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

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

只是一堆随机的想法,但这听起来像是一个有趣的问题。

于 2010-06-20T23:50:05.533 回答
1

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

我从文章中记得的一个具体点是对整个团队进行评分,而不是例如给获得最多击杀数的玩家更多分数。那是为了鼓励人们帮助球队获胜,而不是仅仅试图最大化自己的分数。

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

希望有帮助...

于 2010-06-20T14:18:52.240 回答
0

“得分”是如何解决的?

如果一支球队总共得分 25 分(球队中所有球员的得分),您可以将球员得分除以球队总分 * 100 以获得该球员为球队所做的百分比(或两者的所有分数)队)。

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

有时更简单的概念效果更好。

于 2010-06-20T11:52:17.850 回答
0

第一个问题有一个非常“有趣”的解决方案。您可以为前几场比赛创建一个新手大厅,让玩家在完成一定数量的比赛后才能看到他们的分数,从而为您提供足够的数据以进行准确的评分。
另一种选择是第一个但更简单的变体 - 给他们一个单一的比赛与 AI 将用于确定开始得分(以 quake live 为例)。

于 2010-06-20T12:09:36.803 回答
0

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

于 2021-04-23T10:43:26.980 回答
-2

每次有 10 名玩家想上场,他们就分成两支(有点)偶数的球队,互相比赛。

这很有趣,因为这意味着每支球队的平均技能水平是相等的(因此并不重要),而且每支球队都有相同的获胜机会。如果您假设这个约束成立,那么简单计算每个玩家的胜负应该是一个很好的衡量标准。

于 2010-06-30T10:32:14.647 回答