Algorithm 网络游戏的公平配对
Algorithm 网络游戏的公平配对,algorithm,statistics,Algorithm,Statistics,大多数在线游戏都是任意组队的。通常情况下,这取决于用户,他们会选择一个有空闲插槽的快速服务器。这种行为产生了不公平的团队,人们愤怒地退出。通过跟踪一个团队(或任何可以收集的静态数据),您如何选择尽可能公平的团队 一种方法是简单地创建一个在任何给定时间寻找比赛的球员列表,按球员排名排序。一旦你接触到足够多的人开始一场新的比赛(或者可能比要求的少两人),将他们分组如下:
移除最好和最差的球员,并将他们加入1队
删除现在最好和现在最差的球员(实际上是第二最好和第二最差的球员),并把他们放在第二队
如果
大多数在线游戏都是任意组队的。通常情况下,这取决于用户,他们会选择一个有空闲插槽的快速服务器。这种行为产生了不公平的团队,人们愤怒地退出。通过跟踪一个团队(或任何可以收集的静态数据),您如何选择尽可能公平的团队 一种方法是简单地创建一个在任何给定时间寻找比赛的球员列表,按球员排名排序。一旦你接触到足够多的人开始一场新的比赛(或者可能比要求的少两人),将他们分组如下:
移除最好和最差的球员,并将他们加入1队
删除现在最好和现在最差的球员(实际上是第二最好和第二最差的球员),并把他们放在第二队
如果只剩下两名球员,根据谁的综合得分最低,将每个球员分到不同的球队。否则,重复:
删除现在最好的和现在最坏的,并把他们放在第1队
移除现在最好的和现在最坏的,并将它们放在第2组
等等,等等,等等,直到你的队伍被填满
如果你决定以低于要求的价格开始一场新的比赛,那么现在是时候让球员等待新人加入了。一旦一个新人加入,你就会希望把他们放在综合得分最低的开放团队中
或者,如果你想避免在同一个团队中组合好球员和坏球员的游戏,你可以将每个人分成不同的级别(根据他们的排名分组),并且只匹配同一级别内的人。这需要为每个额外的层创建一个新的打开/排序列表
示例
游戏是4v4
A-1000 PNT
B-800 PNT
C-600 PNT
D-400 PNT
E-200 PNT
F-100 PNT
一旦你得到这六个,就把他们分成这样的小组:
第一队:A、F、D(综合得分1500分)
第二队:B、E、C(总分1600分)
现在,我们等待另外两名玩家加入
首先,玩家E附带500个PNT。他进入1队,因为他们的综合得分较低
然后,玩家F有800个PNT。他去了第二队,因为他们是剩下的唯一开放队
团队总数:
第一队:A、F、D、E(2000年综合得分)
第二队:B、E、C、F(总分2400分)
请注意,在最后两支球队到来之前,球队实际上是相当公平的。老实说,最好的办法是只有当你有足够的球员开始比赛时才开始比赛。但是等待时间对玩家来说可能太长了
在形成比赛之前,根据你需要的量进行调整。越低=等待时间越短,越可能不公平。越高=等待时间越长,可能越不公平
如果你有一个赛前屏幕,lower还可以让人们在等待时有更多的时间与他们未来的队友聊天。现在比较有名的系统之一是微软的
人们也尝试将团队配对应用于团队配对,尽管它更适合于1-v-1配对。很难用一个指标来评估任何一名球员的技能,而且这种方法很容易被滥用。但是,如果您只关心实现一些简单且能很好工作的方法,请尝试以下方法:
记录胜负
使用赢与输的百分比作为统计数据来匹配玩家(在某种意义上是“匹配”一词,即具有相似百分比的团队玩家)
这与一个玩家的输赢率为5-0,另一个玩家的输赢率为50-20的情况有明显的不同,第一个玩家的输赢率是无限的,而另一个玩家的输赢率更合理。匹配系统承认这一点是有意义的,并且由于所需的一致性,对后一个玩家拥有更多的实际技能更加自信;然而,让这两名球员相互对抗可能是一件好事,因为5-0的球员可能试图通过对抗较弱的球员来运作这个系统,所以让他与一名一贯优秀的球员对抗对每个人都有好处
请注意,我是根据只玩战略游戏(如魔兽争霸3)的经验说的,这是典型的配对行为。在我看来,胜负的百分比是一个很好的衡量标准,可以用来与球员较量 在我之前的回答之后,我意识到,如果你想变得非常有趣,你可以使用一个非常简单但功能强大的想法:马尔可夫链
使用马尔可夫链的直观想法如下:
创建一个图G=(V,E)
让V中的每个顶点表示一个实体
让E中的每条边表示实体之间的转移概率。这意味着每个顶点的向外度之和必须为1
在开始时(时间t=0),为每个实体分配一个单位值1
在每个时间步,根据3中定义的转移概率,从实体i,j转移
设t->infinity,则t=infinity时每个实体的值为平衡(即转换为实体的几率与转换为实体的总几率相同)
例如,这个想法已经成功地用于实现谷歌的页面排名算法。要描述如何使用它,请考虑以下内容:
V=玩家E=基于相对赢/输比率从玩家过渡到玩家的概率
每个玩家都是一个顶点
从玩家A到B(B不等于A)的边具有概率X/N,其中N是A玩的游戏总数,X是输给B的游戏总数。将从A到A的边以概率M/N添加,其中M是A赢的游戏总数
开始时为每个玩家分配1级技能
使用查找由3中定义的概率构造的链路矩阵的主要特征向量
主导特征向量是每个玩家在t=无穷大时的技能量,即
sk的数量
{
"fields": {
"elo_rating": 3121.44,
"points": 404,
"randomizer": 35,
"last_login": "2014-10-09T22:57:57Z",
"weapons": [
"CANNON",
"GUN"
]
}
(and (or weapons:'GUN' weapons:'CANNON' weapons:'DRONE')(and last_login:['2013-05-25T00:00:00Z','2014-10-25T00:00:00Z'])(and points:[100, 200])(and elo_rating:[1000, 2000]))}