《Rotaeno/旋转音律》Rating算法详解

08/1275 浏览攻略

前言

移动端音游《Rotaeno》(旋转音律)中设计的Rating是衡量玩家游玩水平的标准之一,类似于《Arcaea》中的Potential(潜力值)及《Phigros》中的RKS等。在主菜单及选曲界面的左上角可以看到自己当前的Rating值。Rating值与“游玩表现”最好的30份谱面(不可重复)及最近游玩的30份谱面(可重复)相关,其计算结果精确到小数点后三位。接下来,本文将详细介绍截止国际服V1.0.6(1030)版本的Rating算法。
horizontal linehorizontal line

一、Rating算法框架

在游玩一首曲目后,Rotaeno将会综合谱面难度和游玩分数计算得到“单谱Rating”,该值对玩家不可见。谱面越难、分数越高,则单谱Rating也越高。单谱Rating的详细计算公式将在第二章中介绍。
        为避免混淆,这里将左上角对玩家可见的Rating值称为 “综合Rating”。综合Rating由历史最佳表现与近期表现两部分加权构成:
历史最佳表现取决于历史单谱Rating最高的30份不同谱面(可以是同曲目的不同难度)。将所有谱面的历史最高单谱Rating倒序排列,定义排序前30的历史最高单谱Rating分别为B1,B2,...,B30。
近期表现取决于最近游玩的30次成绩中单谱Rating最高的10个成绩(可以是同一份谱面)。将最近30次游玩计算得到的单谱Rating倒序排列,定义排序前10的单谱Rating分别为R1,R2,...,R10。根据上述定义,综合Rating的计算公式如下:
在游玩一首曲目后,Rotaeno将会综合谱面难度游玩分数计算得到“单谱Rating”,该值对玩家不可见。谱面越难、分数越高,则单谱Rating也越高。单谱Rating的详细计算公式将在第二章中介绍。        为避免混淆,这里将左上角对玩家可见的Rating值称为 “综合Rating。综合Rating历史最佳表现近期表现两部分加权构成:
历史最佳表现取决于历史单谱Rating最高的30份不同谱面(可以是同曲目的不同难度)。将所有谱面的历史最高单谱Rating倒序排列,定义排序前30的历史最高单谱Rating分别为B1,B2,...,B30。
近期表现取决于最近游玩的30次成绩中单谱Rating最高的10个成绩(可以是同一份谱面)。将最近30次游玩计算得到的单谱Rating倒序排列,定义排序前10的单谱Rating分别为R1,R2,...,R10。根据上述定义,综合Rating的计算公式如下:
TapTap
horizontal linehorizontal line

二、单谱Rating计算

每个谱面均定义有一个对玩家不可见的难度系数,本文将其称为谱面定数。V1.0.6版本的全谱面定数表如下图所示:
TapTap
游玩一个谱面后,Rotaeno会根据谱面定数与游玩得分计算出该次游玩的单谱Rating(结果保留四位小数):
TapTap
特别地,如果游玩的结果为Fail,则单谱Rating至多为6.0(取上述公式计算结果与6.0中较小的值)。
        公式可能比较抽象,接下来举几个例子帮助大家理解:
Inverted World(难度IV)游玩得分为1010000(AP+,理论值)时,单谱Rating=13.1+3.4+0.2=16.7000
PUPA(难度III)游玩得分为1005660时,单谱Rating=10.8+2.4+1660/4000=13.6150
Inverted World(难度IV)章节挑战游玩至600000时Fail,单谱Rating=min(6.0,13.1-4)=min(6.0, 9.1)=6.0000
Aurora(难度IV)游玩得分为700000,Clear rate未达标导致Fail,单谱Rating=min(6.0, 8.6-3)=min(6.0, 5.6)=5.6000
        部分关键游玩得分节点的单谱Rating如下:
TapTap
单谱Rating随游玩分数的变化绘制成折线图:
TapTap
由此可见,单谱Rating具有如下特点:
1004000-1008000分段的斜率最大。这意味着:对于大部分难度IV歌曲而言,失误数(good+miss)从约4个减少到1个能带来巨大的Rating提升。在这个分段,每减少一个miss(非黄键),单谱Rating大约提升0.4-0.5。每减少一个good,单谱Rating大约提升0.3-0.35。
1008000-1010000分段的斜率为万分之一。对于大部分难度IV歌曲而言,1good FC到AP仍然能带来0.12-0.15的单谱Rating提升。相比之下,在AP的基础上,每增加一个Perfect+,提升的分数约为16-20(取难度11到12曲目的平均值),带来的单谱Rating提升为0.0016-0.0020。
即使对于顶尖制霸玩家而言,单谱Rating也能够有效体现准度差异,拉开差距。
对于普通玩家而言,如果想要提升Rating,应尽可能追求力所能及的FC/AP,而不是越级打难谱。Inverted World打到EX也只有15.1,极彩色和无彩色AP了就有接近15.2,前者显然更困难。
horizontal linehorizontal line

三、Rating更迭机制

每次进行游玩后,Rotaeno将会根据第一章中的综合Rating计算公式,重新计算历史最佳表现和近期表现,完成综合Rating的更迭。不难发现:
历史最佳表现(B拔)可以看作一个长度为30,按单谱Rating倒序排序的序列(或看成最小堆)。当某次游玩的单谱Rating超过了序列尾的单谱Rating(序列中的最小值)时,序列尾的记录被删除,并将该次游玩的单谱Rating插入序列。由此可知,历史最佳表现只会随着水平提升而增加,不会倒退。
近期表现(R拔)可以看作一个长度为30的队列。在某次游玩后,该次成绩将加入队列尾,而队列头(即游玩时间最早的成绩)从队列中被移出。因此,如果连续多次游玩表现不佳,可能会导致近期表现下降,进一步导致综合Rating下滑。
        这将引申出一个新问题:如果高水平的玩家连续游玩低难度谱面,即使每次都达成AP+,也可能导致综合Rating下降。
        因此,Rotaeno很可能增加了类似Arcaea中的EX保护机制(据说曾得到Chris的确认),如果某次游玩得分超过1000000(EX评价):
若本次游玩的单谱Rating比近期表现队列中的最小值大,那么会移除队列中单谱Rating的最小值,而不是移除游玩时间最早的成绩。
若本次游玩的单谱Rating比近期表现队列中的最小值还小,则该次成绩将直接被忽略,不加入队列,也不移除队列中任何成绩。
horizontal linehorizontal line

四、研究过程与验证方式

关于Rotaeno的Rating算法最早由@东城eastown展开研究:【Rotaeno/rating研究】已知recent池数量为10首,确定了综合Rating取决于历史最佳表现和近期表现,并证明近期表现取决于最近游玩的30次成绩中单谱Rating最高的10个成绩。遗憾的是作者没有进一步给出详细的计算公式。
        根据该研究中的成绩图,Lv2 AP+能使得新用户综合Rating提升0.434(0->0.434),随后再次AP+则只能使综合Rating提升0.140。由此可以推出:0.434(综合Rating提升)=0.294(历史最佳表现的提升)+0.140(近期表现的提升)。随后我开了新账户连续多次达成Lv4 AP+,发现近期表现的提升为0.190。
        假定Lv4与Lv2谱面的定数均为整数,不难推断出一份谱面的近期表现占综合Rating的权重为(0.19-0.14)/(4-2)=0.025,同时可以说明近期表现占综合Rating的权重为0.025*10=0.25。进一步测得Lv2 AP+单谱Rating为0.14/0.025=5.6,Lv4 AP+单谱Rating为0.19/0.025=7.6。合理推测AP+的单谱Rating=谱面定数+3.6。
        另一方面,考虑历史最佳表现的提升,不难推断出B1占综合Rating的权重为0.294/5.6=0.0525。由于历史最佳表现占综合Rating的权重为1-0.25=0.75,因此B1占历史最佳表现的权重为0.0525/0.75=0.07。这说明B1至B30对历史最佳表现的贡献一定是不等权的。
        接下来实际上需要注册新的账号,通过同样的方法测试各个分段对应的单谱Rating,并连续游玩30首不同谱面来确定B1至B30的权重。最后再通过单谱Rating公式,反推测定所有谱面的定数,这将是一个非常大的工程量。
        好在研究期间,Discord用户@lamgea已经通过dump内存、分析程序结构,推理出了综合Rating及单谱Rating计算表达式。这里非常感谢@lamgea,本文第一章及第二章中的表达式均为@lamgea的结论。第三章中的定数表为@lamgea解包的json,我稍加整理后绘制的表格。综合Rating公式中确定了B1至B10权重为0.7/10,B11至B30权重为0.3/20,与前文的推算完全吻合。单谱Rating公式中AP+的单谱Rating=谱面定数+3.6也与前文的推算完全吻合。至此,Rotaeno的Rating算法已经得到充分的研究与相互验证。
horizontal linehorizontal line

结语

  Rotaeno的Rating算法与2.x版本的Arcaea极为相似。单谱Rating为分段的一次函数,综合Rating由历史最佳表现和近期表现构成。历史最佳表现取历史单谱Rating最高的30份谱面(不可重复),近期表现取最近30次游玩中单谱Rating最高的10次,且谱面可重复。区别仅仅在于分段函数的设计不同,及B1至B30赋予了不同权重。
        Rotaeno的得分系统及单谱Rating分段函数决定了FC(4失误以下)和AP将成为大部分玩家提升综合Rating最快速、最重要的方式,也将成为大量玩家的推歌目标。
2
2
4