Skip to content

专题:ScoreV2

提示

  • 唐突出现的专题是专业书籍的传统艺能,不爽不要玩。

  • 本篇[1]的内容都基于osu!stable下的ScoreV2 mod,不能保证和osu!lazer中完全一致。应该不会有人现在就开始用osu!lazer打图了吧[2]

先修课程

阅读本文前,请先阅读之前文章中ScoreV1下的对应部分,了解这些东西在ScoreV1下的机制。

对于mania来说,ScoreV2并不仅仅是分数计算方式的改变,而是对游戏机制的很多部分都有所改变。所以这里单独开一个专题来介绍。

准确率和判定

准确率

ScoreV2下准确率计算如下所示:

判定准确率
max305305=100%\frac{305}{305}=100\%
300300305=98.36%\frac{300}{305}=98.36\%
200200305=65.57%\frac{200}{305}=65.57\%
100100305=32.79%\frac{100}{305}=32.79\%
5050305=16.39%\frac{50}{305}=16.39\%
miss0

除了彩300以外的判定的准确率均有略微下调,其中黄300的准确率不再是100%了。

判定区间

ScoreV2下的判定区间如下:

判定OD=0(毫秒)OD=5(毫秒)OD=10(毫秒)
max22.419.413.9
300644934
200978267
10012711297
50151136121
miss188173158

当OD在(0,5)(0,5)(5,10)(5,10)之间时,则以两边的值为端点线性分布(如下图所示)。

除了彩300以外的判定区间实际上和ScoreV1下一样,只是换了一种更加高大上(好像也没有那么高大上)的方式来表达。但彩300的判定则有所不同。ScoreV1下,彩300的判定为恒定值16毫秒。二者的比较见下图:

v1vv2

二者相交大约在OD=8.1处。虽然看起来大多数时候ScoreV2的判定比ScoreV1宽,实际上由于mania谱面的OD基本上在7~8以上,ScoreV2下彩300的判定比ScoreV1要严。

Mod对判定区间的影响和ScoreV1下相同。

判定方式

ScoreV2下,滑条和ScoreV1一样,可以被按很多次,每次按键结束时判定一次,但结算则为滑条头和滑条尾两次,并单独计分,实际上类似两个普通note。

若按下的时间在滑条头的可判定区间内,则进行滑条头结算,判定区间和普通note一样。若滑条头之后的100判定区间结束时,滑条仍然没有按下,则滑条头的可判定状态结束,滑条头被判定为miss。

滑条中间的判定和ScoreV1相同,若某次按键抬起的时间在滑条尾之前的50判定区间开始前,则滑条判定为中间断开过,但仍可以继续按键。

在滑条尾部,可判定区间延伸到滑条尾之后1.5倍的100判定区间,若按键抬起的时间介于此和滑条尾之前的50判定区间之间,则滑条结束可判定状态,并使用抬起的时间进行滑条尾判定。滑条尾判定时使用1.5倍的判定区间。但是,只要滑条中间断开过,或滑条头没有被判定,则滑条尾最高只能得到50判定。

提示

这里的“滑条头没有被判定”不是说滑条头miss了——miss也算判定过了。我怀疑这一条是为了处理特殊情况(如负长度滑条)才加上的。

若直到滑条尾之后1.5倍的100判定区间结束时,滑条仍未结束可判定状态(按得太过或漏键),则滑条尾判定为miss。

此外在ScoreV1下,按键必定作用于当前轨道能够按下的 note 中最靠前的一个。对于普通note这种机制不会导致太多问题,但对于滑条,尤其是ScoreV2下滑条尾的判定区间实际上更宽,可能导致如下图所示的现象,类似于std下的notelock:

notelock

ScoreV2 的判定作出了以下调整:

  • 若当前轨道的某个 note 的开始时间早于当前时间,且该 note 未完成判定,则指定如下时间为分界线,早于当前时间的按键作用于此 note;否则作用于当前轨道的下一个 note:
下一个 note 和当前 note 的开始时间之差分界线
小于 50 判定区间下一个 note 的开始时间 - 1 ms
介于 50 判定区间的 1 ~ 2 倍当前 note 的开始时间 + 50 判定区间
大于 50 判定区间的 2 倍下一个 note 的开始时间 - 50 判定区间
  • 若有多于 1 个 note 均满足开始时间早于当前时间,且未完成判定,则以其中的最后一个 note 为准。

因此,在ScoreV2下,按键可以正常判定到后面的note。

notelock2

std玩家都在吐槽ScoreV2下滑条的判定变严了,但mania的滑条本来就有尾判,很难说ScoreV1和ScoreV2比哪个更严,但二者显然有非常大的不同。

血量

总体上和ScoreV1下相同。但要注意的是,虽然ScoreV2下滑条中间不增加连击数,但回血的机制依然和ScoreV1下类似。而且由于滑条头有单独的判定,最终滑条回复的血量反而比ScoreV1高。同理,ScoreV2下滑条漏键的掉血也比ScoreV1高。

连击数

ScoreV2下滑条头尾各算作一次连击,而滑条中间不增加连击数,但中间断开依然会断连。

此外,ScoreV2下没有出现滑条头开始时按键依然处在按下状态,则不会断连的现象。

分数

ScoreV2下分数算法最大的变化在于,不再是计算每个note获得的分数并相加,而是任意时刻的总分都由当前的一些参数直接计算出来。

ScoreV2下分数由两部分组成:

总分=连击分数+准度分数\text{总分}=\text{连击分数}+\text{准度分数}

连击分数

连击分数的计算方式为:

连击分数=200,000×连击参数最大连击参数\text{连击分数}=200,000\times\frac{\text{连击参数}}{\text{最大连击参数}}

连击参数为累计当前时刻为止所有note的连击参数之和,单个note的连击参数计算方式为:

单个note的连击参数=判定数值×{0.5连击数1log4(连击数)连击数[2,400]log4400连击数>400\text{单个note的连击参数} = \text{判定数值}\times\begin{cases} 0.5 &\text{若}\quad\text{连击数}\leqslant 1 \\ \log_4\left (\text{连击数}\right ) &\text{若}\quad\text{连击数}\in\left [2,400\right ] \\ \log_{4}400 &\text{若}\quad\text{连击数}> 400 \end{cases}

判定数值即为判定结果对应的数值(如50、100),其中彩300和黄300的判定数值均为300,miss的为0。

最大连击参数为谱面全连且均为300判定时的连击参数,即300×(0.5+log42+log43+)300\times\left(0.5+\log_42+\log_43+\cdots\right)。需要注意滑条有两次判定。

准度分数

准度分数由准确率直接决定:

准度分数=800,000×准确率(2+2×准确率)×目前判定数总判定数\text{准度分数}=800,000\times \text{准确率}^{\left (2+2\times \text{准确率}\right )}\times\frac{\text{目前判定数}}{\text{总判定数}}

目前判定数为已经经过的总共判定数目。不叫做”note个数“是因为滑条记作两个判定。

y=x(2+2x)y=x^{(2+2x)}[0,1][0,1]的图像如下图所示,越靠近1上升越快。

accval

mod对分数的影响基本相同,但除了ScoreV2下开NF不会使分数乘0.5[3]

听说你想在比赛的时候做inteliser?

所有判定均为彩和黄300时,ScoreV2的分数(单位:万分)和彩黄比的关系见下图灰色曲线。上方蓝色曲线为ScoreV1下的分数,作为对比。

v2intel

可见同样彩黄比下ScoreV2下分数比ScoreV1下低。

达到一些常见的目标分数所需的彩黄比见下表:

目标分数ScoreV2ScoreV1
990,0004.2132.125
995,0009.4595.25
999,00051.4330.25
999,500103.961.5

  1. 如果这两个字让你想到了什么别的东西,请原地自裁(无慈悲)。 ↩︎

  2. 我对osu!lazer的看法依然和以前一样:peppy如果不在两个带v2的东西上做出妥协——OszV2和ScoreV2,那osu!lazer恐怕永远无法替代现在的osu!stable。 ↩︎

  3. 这是为了比赛如果不限制mod,则开NF也是可以接受的。 ↩︎