分享

【干货】揭露MTGA隐藏分系统

 老汉MTG 2021-05-30

作者  Hareeb al-Saq

译者  跑调的舟

作者注:如果你五月底准备在秘稀数字分段打天梯,并且愿意为针对月末最后一周排名——隐藏分的研究提供数据,请在推特上私信我。如果数据量足够,我就可以绘制一条月末的排名衰减曲线。链接:
https://twitter.com/Hareeb_alSaq/status/1397022404363395079

来自毫无争议的秘稀百分位段の王者——


提前为写作的质量打个预防针:本文有的部分是之前写好的,有些是现写的,但是要说的东西实在太多,还有些关键的实验还没有开始做/没有做完,有些地方解释的也可能不是很清楚。技术细节非常硬核,所以也许本文并不适合全部读者(也许根本没有可读性)

太长不看:

1. 构筑天梯在秘稀段以下,以及秘稀段,均采用玩家的隐藏分进行对局匹配

2. 这个隐藏分系统大有问题,而且你们也应该已经察觉了

3. 在一个月的后两周,秘稀段位的隐藏分机制不再拥有任何 Glicko 性质,而是变得和简单的 Elo 一样:
1) 玩家的期望胜率大约在25%~75%的区间内,无视玩家的隐藏分差,也不看模式是 Bo1 还是 Bo3。在月末,当玩家之间的分差超过约11%时就会逼近这个胜率(译注:在 Glicko 中系统会根据玩家之间的分差预测两位玩家的期望胜率,分数低的玩家会获得一个较低的期望胜率,分数高的玩家则会获得一个较高的期望胜率;期望胜率低的玩家获胜时会获得大量的分,失败时仅会损失少量的分,反之,期望胜率高的玩家获胜时会获得少量的分,而失败则会失去大量的分。而这个期望胜率在 MTGA 上如果比25%比75%更极端,则会被强制卡在25%比75%,原作者把这样的对局叫做 “cappedmatch”,后文统称“最大分差局”)
2) 在玩家的隐藏分收敛后,Bo1 模式的K值是20.5,Bo3 模式则是45。(译注:K值决定了在 Glicko 中某玩家能通过单场对局收获/损失的隐藏分的上限,具体公式为p=(r-w)*k,p为该玩家在对局结束时的分数变动,r是比赛结果,胜、平、负分别记为1、0.5、0,w是该玩家的期望胜率)
3) 一局 Bo1 比赛过后的隐藏分变动最少是5分,在 Bo3 则是10分

4. 在月初,整个系统要来得更加复杂

5. 上秘稀之前的胜率只对刚上秘稀的时候有点影响

6. 系统会给每个刚上秘稀的玩家一个非常接近的起始隐藏分,而这个做法在月末会带来很多问题

7. 黄金段的胜场从每赢一局+1格变为每赢一局+2格,这个变动使得6中提到的问题更严重了


众所周知,秘稀段在月末的掉分速度快的离谱。最近,就算在月末结算24小时前的排名是600,也很可能不能保证在结算时能不跌出前1200名,而且也并不只是最后一天掉分飞快。在月末的最后几天掉分速度也会很快,只是没那么吓人。对此,大家通常的解释是,月末最后几天,没上秘稀的都想冲个秘稀,上了秘稀的都想冲个高分。尽管事实的确如此,但是我觉得这疯狂掉分的速度仅仅通过玩家游戏热情来解释是远远不够的



难道秘稀前600的选手都雇了机器人24小时在屏幕前高强度打牌,别的选手冲进前600,上来一个就踹下去一个?如果这些牌手们的实力都是在秘稀前#1200名内,那么他们之前不早就应该把隐藏分打的够高了吗?况且2019年的天梯掉分速度还远远没有现在这般夸张,我觉得这些通常的解释是不能够说明问题的

现有的两个官方信息

1. 百分位秘稀段中的百分位计算公式为:100*你的隐藏分/天梯第#1500名玩家的隐藏分(事实的确如此)

2. MTGA 上的排名使用的是一个魔改的 Glicko 系统,而 Glicko 系统本身则是 Elo 系统的一个改良(然而这个官方说法十分具有误导性,真实的系统和所谓的Glicko相去甚远)


我怀疑WSZ随着每个月时间的推进,会暗改隐藏分的机制,可能是为了增大方差而直接调高K值,也可能是让每局游戏不再零和,而是变成正和:就是说在对局结束后正常的分数变动基础上,额外奖励一方/双方少量的隐藏分,从而鼓动玩家积极性

这两种说法都能够一定程度上解释,为什么在#1200名之外想要冲分的玩家,和在#1200名之内想要守排名的玩家之间冲撞如此激烈?但是事实上,这两种说法各自都有点小问题——隐藏分系统在一个月最后几周之间其实不会有太大变动,至少在秘稀段是如此。之后的文字读起来会比较像我的实验日记。为了搞明白WSZ这么多年来葫芦里到底卖的是什么药,我只好这么干了

下面的文字可能会技术性较强,比较枯燥。如果你不想看细节会非常耗时间,可以直接跳到本文的问题章节



实验
背景

我假设在隐藏分产生了一定程度的变动之后,能够以比较高的精准度量化每局比赛造成的的最小分数得失;如果我能做到这点,要搞明白整个复杂的算法也就有了着手点。我的运气不错,这条路线果然是能走通的。假定在一个月的中旬,且上了秘稀段的玩家数远远超过1500时,恰好处在第#1500名的玩家的隐藏分在几个小时的时间窗口内不会产生剧烈变动的前提下,我们其实就能够以某种方法衡量隐藏分(而不用直接看到你的隐藏分)

我的意思是,假设一个“最小单局损失分”在时间点T能让你从33%输到32%,那么在几个小时之后,这个同样的“最小单局损失分”也刚好能让你从33%输到32%。此外,如果不考虑诸如“随时间匀速扣分”之类的其他机制,当在同一季度内你的隐藏分为0时,排名应当是不随时间变动的。这将会是我下面一直使用的衡量隐藏分的方法

我在故意掉到一个非常低的分数后进行了如下一些实验:

相对输-赢分值


在隐藏分极低的时候,赢一场所获得的分应当接近这个系统所容许的最大单局获得分,同理,输一场所损失的分也应当接近系统所容许的最小单局损失分;所以在隐藏分极低的时候,只要我能知道“每赢一把时,要输几把,才能让我的排名维持在一个极低的百分位上”中的这个输赢比例,我就能推测出这个系统内的最小单局损失分

就结果而言,这个比例十分接近3负:1胜,也就是说期望胜率区间大约是25%~75%,无论对局双方的隐藏分差距有多大。Bo1 和 Bo3 均是如此,尽管 Bo3 中的结果不一定精确,因为肝 Bo3 实在太累了,而 Bo1 只要在手机端上无脑小红就行了;不管怎样结果应该差的不远。经过测试,输39把赢13把刚好能精准控在同一个分数上,也就是1:3的胜负比。不过我之后发现,这个比例并不是正正好好1:3,不然一切都会简单很多

相对Bo1-Bo3 K值

Bo3 模式的 K 值大约是 Bo1 的2.2倍。在隐藏分够低且每一场失败掉的分都等于系统容许的最小单局损失分时,我可以观察并记录在bo1和bo3模式下各需要投几场才能输掉相同的分数,我发现 Bo3 模式的 K 值是 Bo1 中的2倍多一点。在另外一个实验中,我发现不论是以0-2的比分还是1-2的比分输掉一场 Bo3 的比赛,都不会对掉分多少有影响。另外,比你的对手隐藏分更低,或者之前连着输了好多把,并不会对 Bo3 的先后手产生影响。虽然这些结论都是意料之中的,但做些实验验证它们也并不怎么费事

一个百分位点所代表的隐藏分值

这个值并不是恒定的,因为正好处于天梯第#1500名玩家的隐藏分在一个月中只会越来越高,不过还是可以得到一个大概的估计。我采取的第一种方法十分麻烦,因为我尝试只打双方隐藏分差的不是太遥远、期望胜率在25%-75%之间的比赛(即非最大分差局),不过这样误差太大了

如果你赢了一个比你低/高X分的对手,且马上又输了一个比你高/低X分的对手时,这两场对局造成的分数变动会互相抵消,不过因为 MTGA 上的百分位是经过取整的,拥有一个五五开的胜率很可能会带来一个略小于零的期望。然而这类理应互相抵消的胜负之间的噪音项的标准差却随着时间增大,这会导致上述估计方法的误差也会随时间变得越来越大

为了克服这个问题,我选择在面对非最大分差局时直接投降(也就是说只尝试赢比你分高很多的对手,或者输给分比你低很多的对手,尽管应该没什么人比我的隐藏分更低了),只选择最大分差局进行采样。我发现此类对局带来的分数变动中没有噪音项,这样可以保证实验中的不确定性尽可能小

如果使用标准版 Elo 公式中的参数400(虽然我不确定 MTGA 使用的是这个参数,不过Elo是具有尺度无关性的),那么在分差大约在191分的时候,双方的期望胜率将会正好落在25%vs.75%这根线上。在2月16号这个时间点上,我在 Bo1模式下赢赢输输,回到起始分数后计算得出了:一个百分位点大约等于17.3分

译注:Elo 中计算玩家期望胜率的公式为:

其中为玩家A的期望胜率,分别是玩家A和B的隐藏分

我在 Bo3 模式下进行了相同的实验,想看看这个25%-75%的阈值是否同样适用(换言之,就是看看在 Bo3 模式下的 Elo 胜率公式中的参数是否还是400)。在 Bo3 模式下收集数据会更加耗时,而且精度也会更低;不过只用我手头的数据,也已经足够推断出这个参数基本不可能高于550,400是一个看下来比较合理的取值,而且,在 Bo1 和 Bo3 两种模式下设定不同的参数也没有什么意义,所以我假定 Bo3 中的公式参数同样也是400

根据这个计算,在玩家双方的百分位差距超过11%时,这就将会是一个最大分差局,结合之前的掉分实验,我推测 Bo1 中的 K 值最可能在20-24之间,而 Bo3 中的 K 值则在40-48之间。在2月24号进行的实验得出了相近的结论,所以当时我以为问题已经解决了。事后发现,尽管这里我的区间算错了,不过已经和正确答案差的不远了

秘稀段的起始分/基于隐藏分的匹配算法

我的大号在3月1日从钻石段以65%-70%的胜率上了秘稀。我为了三月的实验准备了两个小号,从青铜-白金都是正常打的,但从钻石开始,我对他们采取完全不同的策略:小号#1在钻石段位正常打(钻石段42胜22负,钻石之前65胜9负),小号#2在刚上钻4之后连着投了几百把,之后打出了一波27胜3负的成绩,而且几乎所有对手不是在玩整活套牌,就是略加改良的新手套牌之类的

两个小号以几分钟之差先后上了秘稀,小号#1的初始分是秘稀90%,小号#2则是秘稀86%。此时我的大号是秘稀89%(我平常只刷刷每日,但有一次客户端更新让我的默认模式从普通对局变成了天梯对局,我没注意到,于是掉了点分,垃圾WSZ!)。我没能琢磨出来这个秘稀的初始分是根据什么定的,不过上秘稀之前好好玩还是随便胡玩似乎并不会造成太大影响

这种基于隐藏分的匹配算法会带来天差地别的对局难度:隐藏分不会随着赛季结算而被重置,也就是说如果你在秘稀段垫底,下个月重置后的对局会十分简单,而且“上了任何一个新的分段之后疯狂投降”这个策略可以让你上秘稀的过程变得十分轻松(举个例子:在黄金4投也可以让你在钻石遇到的对手更弱)

隐藏分系统的非Glicko性质

在 Glicko 系统中,随着对局数的增加,玩家的 RD 值会逐渐降低;长时间不打则会导致 RD 上升(译者注:RD=Rating Deviation,隐藏分偏差。Glicko 系统中每个玩家除了隐藏分之外,还有一个变量 RD,它一定意义上衡量了系统对于该玩家的当前分数“有多确信”。一个较高的 RD 分会导致K值增高)

按这个道理,我的大号和两个小号应该 RD 分相去甚远:我的大号生涯对局总数非常多,而在当月几乎以最快速度上了秘稀,并且在秘稀段闲置了3个礼拜(除了那一把上了客户端的当);小号#1也基本上每个月都是以最快速度上的秘稀并且一直在打;小号#2比小号#1的生涯对局总数要多3倍左右(因为一直在投降),而且目前也一直在打

我的计划是:用这三个账号各投降几把,观测、比较一下实际的损失分和期望的损失分之间的区别(假定最大分差局的期望胜率上下限为25%-75%,且11%及以上的百分位段位差将会导致对局成为最大分差局),以及三个账号之间的区别

如果隐藏分系统真的如 WSZ 所说具有 Glicko 的特性,那么一开始输掉一把最大分差局的损失分会比之后输掉一把最大分差局的损失分大,因为随着对局场数变多,RD 分则理应变小,从而导致 K 值也在不断缩小。出乎意料的是,实验当天3月25日,三个账号的掉分曲线竟完全相同,都是一条斜率为 2.38%/k 的直线!秘稀段之前的对局对 RD 和 K 没有影响,上了秘稀之后的对局也对 RD 和 K 没有任何影响。综上,这哪里是个 Glicko 系统啊?

(显性)AFK惩罚机制的缺失

我将两个小号的隐藏分故意掉的很低,而且刻意让这两个号的百分位数正好保持2:1。整个月中这两个小号百分位数的2:1关系始终保持不变。我又将其中一个号输到几乎隐藏分为0(不会高于5分),这个号在零线上保持了两个礼拜,一把没碰,我之后用这个号输了一把,百分位直接降到了0以下,也就是说这两周期间分数并没有产生任何大的变动。长时间不玩似乎在一个赛季中不会对隐藏分造成任何影响,也就是说这个系统没有任何基础的隐藏分衰减机制

事到如今(三月末),我开始确信整个 MTGA 的隐藏分系统其实就是个 Elo(因为没有能够证明任何一个 Glicko 特性的存在),况且输赢率上限正正好好是3:1,这么整的一个数让我很难相信这个比例不是人为定好的。基于这个结论,我想出了一个以更高的准确度测定k值的方法

更加精准地测定K值

在 MTGA 中你永远无法直接看到你的隐藏分,所以直接测定 K 值也许看起来十分困难,但是如果我们假定WSZ使用的是 Elo 的发明者 ArpadElo(译者注:匈牙利著名国际象棋棋手)一开始制定的那一套参数=400的公式,其实这个 K 值还是可以算出来的,尽管的确比较麻烦

假设你能操控天梯第#1500名和#1501名这两外选手,且#1501的分要比#1500的分低不少。第#1501名的选手看不到数字排名,而是一个百分位。称此时第#1501名玩家所看到的当前百分位排名为1501A,此时如果第#1500名的玩家面对一个排名很高的牌手输掉了一场最大分差局,也就是说他输掉了一个最小单局损失分,那么#1501名的玩家会看到一个新的百分位(译者注:因为所有百分位数都是你的分数除以第#1500名的分数乘100),称之为1501B。同时称第#1500名玩家一开始的分数为X,第#1501名玩家一开始的分数为Y,那么我们就能建立如下方程组:

如此我们就能以 MinLoss(最小单局损失分)为单位来表达X和Y。(例:X从5.3个 MinLoss 掉到了4.3个 MinLoss……)

因为我们所能看见的都1501A、1501B已经过了取整,唯一能够提高观察精确度的方法就是让一开始的Y绝对值大,而X绝对值小。让Y的绝对值增大的方法就是疯狂投降,而确保X绝对值够小则需要借助客户端的日志文件。当你处于前1500名时,百分位是不会显示的,但是日志文件会把你当前相对于秘稀段垫底玩家分数的百分位记录下来

也就是说那位垫底玩家的日志中所记录的百分位数是100%,而且当他把自己的号打成负隐藏分的时候,所有其他正分秘稀玩家的日志中也会记录下一个负的百分位数(译者注:如果当前秘稀垫底老哥的隐藏分是-50,你的分是+1000,你的日志中就会记录-2000%)。一直投,直到这一局之后你的百分位从-1.0变成0的时候,你就知道该账号当前的分数在 [-MinLoss, +MinLoss] 这个区间了。此时的1501A和1501B是由一个绝对值很大的负数除以一个绝对值很小的负数得出的,这样就能获得比较不错的精准度

如果你能同时操控第#1499、#1500、#1501这三位玩家,你就可以以 MinLoss 为单位计算这三个账号的分数关系。此时操控第#1499名的账号和#1500名的账号对战,就能够知道对局前后两个账号的隐藏分(以 MinLoss 为单位表示);在此基础上考虑胜负比为3:1,以 k=4*MinLoss 代入 Elo 系统的公式中可以得出:

由此就可以解出 MinLoss,然后就可以解出 K。不过这个过程中如果有人上了秘稀,导致整个分数体系变动,那么恭喜你,只好等到下一个月再重新来过了。按照这个原理,我手上拥有了多个可以用 MinLoss 为单位得知隐藏分的小号,让他们之间互相对战也比较容易保证每一个对局都是最大分差局,由此所计算出的k值理应是非常精确的

不过事情并没有朝着这个“理应”发展,我在所测量的第一局对战中测定的 K 值看似合理,大约在20.25左右;但是之后观测的几局对战却并没有按照我的推算进行,我无法得出一个能够符合所有对局结果的 K 值与 MinLoss 的组合。几个账号的日志文件看起来也没有什么问题,所以唯一可能出差错的地方,就是这个最大期望胜负比为3:1的假设了

在之前的实验中,13场胜利正好和39场失败胜负相抵,看起来是个很漂亮的结果,不过问题是这个比例可能不是正正好好的3:1。当然,唯一能够提升观察精度的方法就是:输更多场比赛,再赢更多场比赛,直到胜负相抵为止。于是在进行了一轮相似的实验后,这次我得出了胜率=24.32%这个数字。我用相同的方法又测了一次,24.37;再试一次,24.4。这可太棒了,没有任何一轮的实验结果能够自圆其说!唯一合理的解释是:随着实验的进行,这个最大期望胜负比也在不断地变动!我tilt嘞!

现在我们知道MTGA并不是一个单纯的 Elo 系统,且最大期望胜负比也是个会有微小变动的值了,于是我在5月份又进行了一轮实验。我很快就注意到,这次从秘稀起始分掉分掉到0上下的速度比一个月的后段掉分时快了许多。不过这里的后段是指第1、2天之后,并不是字面意义上的月底

在用我的参考账号掉分时(也就是那个隐藏分被我调成一个绝对值很大的负数的账号,比如上述例子中的#1501名账号),我测出来的 MinLoss 比根据比赛场数推算的期望值高了1.6倍;我之后又在手里操控着第#1500名账号的时候,拿其他的几个小号互相对战了几局,这次的实验结果是能够互相佐证的。此时的误差在六位小数点以后,所以我对这个测量结果十分有信心

这次计算出来的k值和第一次相差不远,不过我在准备账号的过程中发现了一些有趣的现象。在计算出的最大期望胜负比在24.4%:75.6%时,赢一把输三把实际上是正EV的。但在五月头上,不断赢一把输三把导致了我在掉分,也就是说此时的最大期望胜负比要比25%:75%再高一点点。就在我发文的前两天,赢一把输三把又开始让我上分了。我虽然不知道这个现象具体是由什么导致的,不过我心里已经有了几个猜想

在我进行完上述几个实验之后,我手里还留着一个分数可以用 MinLoss 表示的底分账号,以及几个没有什么用的小号,那么为什么不拿他们继续掉分,来看看一个月中 MinLoss 的值是否会变动呢?如果我从0分开始,输掉了X个 MinLoss,且将上述底分号的隐藏分记为 -Y*Minloss,那么如果 MinLoss 是一个不会改变的常值,两个账号的百分位数之比和X/Y之比应该是相同的,这个我现在正在测。当然,为了能得出精确的结论,我需要投降投到昏天黑地。目前为止的结论是 MinLoss 是不会变动的,不过精确度还不能令我满意

综上,最小单局损失分在一个月内是会不断变化的:月初这个值会高许多,不过它似乎在第#1500名玩家成功冲上秘稀,也就是5月7、8号的时候已经收敛,不再变动了。结合之前的结论:上秘稀之前的胜率不会影响 MinLoss,MinLoss 的变动应该不是由我账号的对局总数变动所导致的

在 Glicko 中,能影响一场对局中 K 值的因素有:玩家的对局总数(玩的越多,K 值越小,尽管这个机制没有在 MTGA 中实装)、AFK 时长(不玩越久,K 值越大,这个也没实装)、以及你对手的对局总数(对手玩的越多,K 值越高)。而这唯一一个实装了的 Glicko 性质,(也就是第三点,对手的对局总数),在 MTGA 上也是反过来设计的,因为很明显5月1日对手的对局总数,平均来说要比5月22日对手的对局总数少不少

所以一定是有别的因素导致了月初时的 MinLoss 值比之后偏高,我的猜测是有一个以当前月剩余时间/当前月已经过时间为X的一个衰减非常快的函数。我同时怀疑WSZ设置了一个在月初非常高,在第一周内迅速衰减的 K 值函数,而没有采用 AFK 惩罚机制

我计划在6月初拿几个账号快速打上秘稀,掉分掉到0左右,然后每天拿一个账号投相同的把数(6月2号用小号A投,6月3号用小号B投……),然后看看在秘稀段迎来第#1500名玩家时这些账号的百分位数之间有多大区别。尽管投降的把数是相同的,按照这个推理,账号A的百分位会比账号B低不少。WSZ这挂羊头卖狗肉的行为,让我只能出此下策(疯狂投降)去验证这个系统中本不该存在的一些机制。现在你们应该知道,我为什么花了这么长时间了吧



问题
秘稀段以下的匹配算法极容易被恶意利用,且不公平!

我应该也不是第一个谈这个事儿的人了。之前就有些 Reddit 老哥发现,月初投几把能让上秘稀容易许多。如果你一门心思想要上秘稀,这的确是个不错的主意。不过一个月的第一天就冲分可能不是最好的,因为这时候的整活玩家们还没能来得及上钻石;但是在后半月,隐藏分低的账号就可以随便砍瓜切菜了

当你看到有人拿着自组的整活套牌,以60%的钻石段胜率上了秘稀时,这可能是一部分的运气,也可能是他们之前用的套牌还要垃圾,从而导致了他们的隐藏分在钻4开始就被拉的非常低,之后瞎组了一套相对“勉强能玩“的套牌,而且捏了一路的鱼。同时,那些水平还不错的正经套牌玩家就会匹配到其他正经的对手,从而导致上分非常艰难

在每一个段位的底部(白金4,钻4等)采用隐藏分匹配算法也许是合理的,毕竟还是有很多玩家愿意玩自组套牌、整活套牌,也没必要让这类玩家一直输的找不着北。但当分数上来的之后,还是理应采用相近段位的随机匹配算法(也许在轮抓中的隐藏分匹配还有一定道理,但对构筑天梯来说都不成立,更不用说休闲模式了)

当然,我所说的“理应”是基于“公平,且无法滥用”的考量出发的,但是WSZ打的则是“让认真玩牌的竞技玩家上分更难”的算盘,从而增加他们在游戏中的时间投入,金钱投入

Bo3模式的K值实在太高了!

如果你对万智或者 Elo 系统有所了解的话,那么你可能已经意识到一些事了。首先,如果你的起始分相同,在 Bo1 中连胜2把获得的分,没有赢一个 Bo3 来的多,尽管赢下两个 Bo1 比赢下一个 Bo3 更加困难。诸如“Bo3 比 Bo1的 结果更令人信服”的理由在此也站不住脚。1.25倍、1.33倍也许还算合理,但是真正科学的设置甚至可能比这还低。其次,如果把说一个(适用于高阶玩家的)Bo1 K 值设定为20.5稍微有些激进(对比国际象棋,传统体育等),那么 Bo3 的 K=45就只能形容为失了智了

在WSZ还在给职业牌手们算 Elo 的那个年代,小级别比赛中的 K 值为16,PTQ 中为32,只有PT/世冠级别的赛事中才会给到48左右的 K 值。现在 MTGA 中 Bo1 的 K 值是20.5,但 Bo3 的 K 值却和过去的 PT 相当,这真的河里吗?

最大期望胜率比=25%:75%,设定得过于窄了!

大多数玩家在秘稀段位的胜率可能并不会超过75%,但是从主观认知以及过去的 Elo 积分数据中来看,最好的牌手在面对弱一些的牌手时的平均汇总胜率是完全可能高于75%的。在白金4投掉很多把之后,我的三个小号分别以51-3,49-1,48-2的战绩从白金4上了秘稀

在上个月的“测算最大期望胜负比是否为1:3”的实验中,我在好好玩尝试获胜的时候,胜率达到了87%以上(样本为超过750场的秘稀对局)!我一边用手机无脑小红,一边还做着其他的事;何况我的水平远远不及 JonFinkel、KaiBudde 或者 PVDDR 这些人。此外,对 Bo1 和 Bo3 采用相同的最大期望胜负比也十分不合理,因为众所周知 Bo1 的先手优势要比 Bo3 大不少

Elo 系统确保了:在赛季任何时候,处于任何分数段位的,任何两位玩家在对阵时的期望收益应该是处于一个平衡的;但是在 MTGA 太监了的隐藏分系统中,如果一个高水平段的玩家能够在对阵一个低水平段的玩家时稳定维持75%以上的胜率,那么高水平的玩家就可以期望能从那位低水平的玩家身上不断吸分

我尝试联系一些记牌器软件的开发团队,想看看秘稀百分位段玩家之间的对局是怎么样的,不过他们都没有相应的数据。尽管我十分确信万智牌的随机性导致我们需要一个不如 Elo 那般极端的分数变更公式,不过把这个最大期望胜率比设在25%-75%显然不是一个正确答案



一个经常被人忽视的变更
随着2020年4月 IKO 上线,黄金段位每赢一局的段位奖励,从原来的涨1小格变为2小格。显然,这个更新使得新玩家/水平较差的玩家能够更轻松地上白金。我甚至怀疑,这让更多不会玩的小伙能在月底冲上秘稀,而且我的这个怀疑极可能确有其事

我目前并不知道每个大段位下的玩家总数,但是基于“秘稀经过赛季重置后回到白金”这个事实,我建立了一个先验分布(并假定玩家的真实水平=起始隐藏分):30000个白金玩家(真实水平为N(1600,85)的正态分布),90000个黄金玩家(真实水平为N(1450,85)的正态分布),150000万白银玩家(真实水平为N(1300,85)的正态分布),并且模拟了整个系统的分数变动,直到重新有三万个玩家上到秘稀时停止模拟

每一轮迭代,玩家们将在同段位内进行 K=22 的 Bo1 比赛,钻石玩家一轮打4场,白金3场,黄金/白银2场。下记的数字显然不是完全精准的,但是一些基本的结论(在基于正确假设的前提下)应该是成立的

和你预期的一样,在模拟的后半月打上秘稀的玩家们的平均水平要比前半月上秘稀的玩家们低了不少。在我的模型中,平均的秘稀玩家水平为1622,前20%上秘稀的玩家平均水平在1700以上(水平在1700以上的玩家几乎没人会卡在黄金),但最后20%上秘稀的玩家的平均水平却只有1560。所有秘稀玩家平均水平的10百分位(30000名秘稀玩家中的前#3000名)在1790左右。懂我意思了吧

之后我又用了两套不同的参数重启了这个模拟:
1. 我把黄金段的获胜奖励降回了之前的一小格。在这个模拟中大约40%的玩家会卡在黄金,秘稀段的玩家平均水平也提高了不少——1695对比之前的1622。在相同轮数后,能上秘稀的玩家总数也少了不止三分之二,从原来的30000降到了8800。月末上秘稀的玩家同样会比月初上秘稀的玩家弱一些,但是他们的平均水平也有1650,对比之前的1560可以说是天差地别
2. 我把白银,黄金段的起始玩家总数调到了之前的1/4(因为上白金对于大多数玩家来说还是十分容易做到的,但是再往上就没那么多人愿意打了)。也就是说,一开始有30000名白金玩家,60000名愿意在白金之后继续往上打的黄金+白银玩家(我认为这个1/4的比例还是保守了,实际可能再少些)。这个模拟的结果处在前两个的中间,平均秘稀水平在1660左右,月末秘稀的平均水平在1607左右。由此可见,只要对处于白金段位玩家的构成添加一个小小的扰动,就能对最终秘稀玩家的构成带来不小的影响



秘稀人口增长 以及被高估的玩家
我要说的第一点,其实可以从上面的段落中推理得出:秘稀段位玩家变多意味着方差变大,方差变大则意味着第#1500名玩家的隐藏分也会更高,尽管这些玩家里面混杂了不少牌打得并不好的小伙

因为WSZ并没有采用类似临时分的机制(也就是说根据一个玩家在秘稀段的前X局比赛,给出他的起始分),而是给每个人一个很接近的起始分,一个月末上秘稀的玩家平均来说要比整个秘稀段位被高估更多(译者注:月末上秘稀的玩家的平均水平要更低,但是他们的起始分和月初上秘稀的玩家是相同的),这个高估的量级大概在100分以上

如果把月初上秘稀和月末上秘稀的玩家当作两组人看待,那么同组内的比赛是公平的,但是跨组间的比赛则会是月初上秘稀这一组的单方面“捕鱼”(因为两组的起始分相同,但第一组水平高出不少),直到两组人的隐藏分达到一个新的平衡。更多相对水平较弱的玩家混入秘稀,也就意味着在秘稀段会有更多“捕鱼局”的发生

简单思考可知,对于水平较高的玩家来说,在一个月的后半程冲分会是正 EV 的,因为每天都有不少新的“鱼”进入“鱼塘”。同时,这也变相惩罚了想要在月末最后几天守分的玩家,因为他们错过了免费捕鱼的机会。现在比 IKO 更新前更容易上秘稀,这很可能是一个秘稀分段掉分变快的合理解释:水清,鱼多,速来。更多水平较弱的玩家加入秘稀也变相放大了 MTGA 中设置的25%-75%胜率上限所带来的问题,因为如果水平最低组玩家的实际胜率小于25%,那么 Elo 公式将无法从高水平组玩家的魔爪下保护他们不被无情吸分

新玩家起始分在国际象棋中是一个早已得到解决的问题,而且这个解法在90年代就有成熟的 Glicko 系统实装了。WSZ曾经在线下万智年代执行过一个愚蠢的“大家都从1600分开始!”的规则,而这和现在 MTGA 上所面对的是同样的问题:越晚上分的玩家平均越弱,而且会弱很多!尽管 MTGA 的天梯系统做得看起来花里胡哨,但是25年前就犯过的错误到今天依然没有得到解决

下图是4月份第#1500名玩家的隐藏分随时间增长曲线。是由我的底分号在一个月内的百分位数变动算出来的


X轴前段是秘稀还没有1500名玩家的时候,X轴后段则反映了月底第#1500名隐藏分的上涨。前#1200名的分数上涨可能更加严重(至少今年1月份是这样的)

X轴中间一段的直线所揭示的信息比乍一看更加有趣:在近似于正态分布的情况下,如果不看变化较剧烈的边缘部分,增高分布内的总样本数对#1500名分数所带来的增量是亚线性的。如果要做到保持直线的斜率,同时得出分数在月末超线性的增量,那要么秘稀总人数在月末增长的幅度超过指数增长,要么捕鱼局在月末大量发生,要么两者皆有。我手头的数据无法支持我对这两种假设分别做验证,不过我猜事实应该是两者皆有。自然,如果黄金段还是回到一胜涨一格的话,这种现象会缓解不少



结论
大幅改动当下的隐藏分匹配算法,能让天梯冲分变得更加公平,同时杜绝对系统的恶意利用。降低 Bo3 中的 K 值会让秘稀高分段的分布更加服从于高水平玩家们的真实技巧。更好的秘稀初始分算法则能减少在月末混上秘稀段的低水平玩家出现。25%-75%的期望胜率……应该不用我多说了吧。至于为什么 MTGA 当下系统设计如是,以及为什么诸多细节被掩盖许久,则全权交给读者们自由发挥


P.S. 对所有排到过我的玩家们道个歉!(不过我猜光速白捡一局至少不是太坏吧)。基于现在的 Bo3 K 值,任何一场比赛的影响都会在50场比赛后被抹平95%,所以在月初投给某人,对月末的最终排名没有什么影响;鉴于 MTGA 的隐藏分匹配算法,我在月末时并不会排到太多一门心思要冲前#1200名的竞技牌手(以我的分数,连着打100把也碰不见一个90%以上的对手也是正常的

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多