Dynamite R值机制的相关研究(一)
Crazy___Bull
2022年05月29日 16:09

引言:

       社区音游Dynamite上线已有三年有余,ranked谱面数量也逐渐增加到近千张,对于R值——系统关于玩家实力的有一定参考性的量度,研究也逐渐深入。由AXIS5发起的,一众有Ω难曲实力的top参与制作的ranked全曲定数/满R值表,已经能够满足绝大多数玩家关于“嫖R值”的规划需求。然而,玩家社区似乎并没有得出关于一张特定谱面,特定误差分所对应R值的准确计算式,且社区中存在的一系列拟合函数均有可见误差(指拟合结果与实际结果相差1R以上)。

       由于Dynamite R值计算的精确式似乎极其复杂,不像笔者及团队两年前所测出的Phigros的rks公式一样为简单的幂函数关系,所以本项目的目标并不在于得出其精确表达式,而是将社区中存在的拟合公式优化至误差几乎不可见。另外,由于Dynamite中单曲R值可见且随时可查的特点,本文预期所得结果并不像rks一样有显著的引导价值,仅作为对相关数学方法的探究和为其它音游rating机制研究抛砖引玉的作用。

      笔者高考在即,故主要数据采集和研究工作将于暑假进行,本文仅提供思路参考。

cut-off

  

      dynamite的R值为所有谱面最高R值(即不同单曲R值)的前20位(即b20)简单加和而成。每个单曲R值均为整数,不存在隐藏小数位的情况。经过研究发现,单曲R值的确定与分数,物量和误差分完全无关,仅为单曲定数D与ACC的二元函数R=R(D,ACC)。且R随D和ACC的增大而增大。其中ACC=(P+0.5G)/物量,在屏幕上方有显示。

      因此,本文研究的即为如何确定R(D,ACC)的拟合表达式。

已知信息(100%确定):

  1. R随D和ACC均单调递增

  2. 当ACC低于一定值时,R的计算式会变为floor(ACC/2)

  3. 代入函数进行计算的ACC为精确值,而非显示的约化值(证据:定数同为15.5的ΣX:Maquina,物量1470和Circulatory Spacetime,物量1535的1good,显示ACC均为99.96,然而两者的R值为1562和1561)

大概率正确的信息:

  1. R值为两个函数取较大值的结果,更进一步,R(D,ACC)=max{floor(F(D,ACC)),floor(ACC/2)}

  2. F(D,ACC)是关于D和ACC的凸函数(由ACC越高R值涨幅越快,D越高最大R值涨幅越快可以猜测),以上可以解释为何有时2->1误差分比1->收涨的R值多1(如TSLove),原因是F小数点后去尾造成的误差。

下文均将以此为基础论述。

一个广为人知的误解:

       曾广泛猜想R值可以由一个比例函数ratio(ACC)乘收割R值得到,然而这个猜测由于音游丁真的出现被打破了。

ui和climax物量恰好相同,利用了TempestCMR和CKL为测试打出的成绩,特此感谢

      由于在此情况下R=floor(F),可以得到R<=F<R+1, MAXR<=MAXF<F+1

      因而ratio=F/MAXF在R/(MAXR+1)与(R+1)/MAXR之间,而可以看出两者并无重合区间,从而该假设是错误的。进而也能得出,D越高的谱面,其得到的R值占比随失去acc下降的越平缓,可以作为拟合出函数的辅助判据。

cut-off

F(D,ACC)精确值的范围得出:

       由上文的论述可以发现,社区中拟合函数不精确的主要原因,一是使用了错误的假设,二是由于R值自带的向下取整,导致R(D,ACC)失去了凸性(甚至失去了连续性)。虽然拟合能部分程度削减这种误差,但仍会导致对于某些数据(如F=1234.99->R=1234.0),引入较大偏差。而F的凸性有助于我们确定F(D,ACC)较为精确的范围,从而降低这种误差。

       由于上文所述假设的失效,我们必须固定变量D,从而以下讨论的F和R均可视为关于ACC的一元单调增凸函数F(ACC),R(ACC):

       假设我们现在获取了一系列数据(ai,ri),其中ri=R(ai)。令fi=ri+ti,且fi=F(ai)(其中0<=ti<1),i=1,2,...,n

       由凸函数的性质,取任意相邻三ACC:ai,ai+1,ai+2

       有(fi+1-fi)/(ai+1-ai)>(fi+2-fi+1)/(ai+2-ai+1)

       即(ri+1-ri+ti+1-ti)/(ai+1-ai)>(ri+2-ri+1+ti+2-ti+1)/(ai+2-ai+1)

       由于ri,ai均已知,则此为关于ti,ti+1,ti+2的线性不等式

       类似共可得到(n-2)个不等式(容易证明其它均可由这n-2个线性组合得到)

       结合0<=ti<1,即转化为含有(3n-2)个约束,n个变元的线性规划问题

       将目标函数分别设为ti的最大,最小值,进行2n次单纯形算法计算即可得到ti的上界和下界,也即得到了F(ai)的范围。(由于约束均拥有相似的形式,本算法可能有极大改进空间,如果有改进思路的可以在评论区提出)

cut-off

       对于每个D,将得到的数据取中值进行拟合,并将拟合后的参数对D再进行一次拟合,预计即可得到F(D,ACC)较为普适的,精确性较高的拟合表达式。

       下篇预计在暑假项目启动,得到一定有意义的结果后更新。

      (b站没法写latex真糟心www)

      (本文可能在笔者有时间找更多证据配图时更新)