Skip to content

计分 V3

本文档定义《Milthm》使用的 ScoreV3 计分规则。

ScoreV3 使用 判定定义 中定义的普通判定序列 Ξ={ξ1,ξ2,,ξN}\Xi = \{\xi_1, \xi_2, \cdots, \xi_N\}。闪电判定与普通判定序列隔离,但闪电 Miss 的溢出伤害仍可能影响计分乘区使用的连击分状态。

输入符号

以下符号定义于 判定定义,并作为本文档的输入。

符号含义
J\mathcal{J}普通判定组。
Ξ\Xi普通判定序列。
Φ\Phi闪电判定序列。
ξi\xi_iii 个普通判定。
NN普通判定物量。
OfO_f闪电 Miss 产生的闪电溢出。

计分符号

本文档定义以下计分专用符号。

符号名称含义
SjudgeS_{\mathrm{judge}}阶梯式判定分函数将普通判定等级映射为基础判定分。
ASnAS_n平均判定分截至第 nn 个普通判定的平均判定分。
BB连击基础分映射将判定等级与普通判定物量映射为连击分边界和回复量。
Θ\Theta连击分序列普通判定后记录的连击分状态序列。
bmaxb_{\max}连击分上限连击分可以达到的上界。
κ˚n\mathring{\kappa}_n基础补正乘区截至第 nn 个普通判定的未调整连击补正乘区。
κn\kappa_n连击补正乘区截至第 nn 个普通判定的调整后连击补正乘区。
CSnCS_n连击附加分截至第 nn 个普通判定的连击附加分。
APnAP_nAP 附加分截至第 nn 个普通判定的 AP 附加分。
SnS_n分数截至第 nn 个普通判定的分数。
TSTS总分最终 ScoreV3 分数。

判定分

阶梯式判定分函数 Sjudge:JRS_{\mathrm{judge}}: \mathcal{J} \to \mathbb{R} 将每个普通判定等级映射为判定分。

判定等级判定分
ss1,000,0001{,}000{,}000
pp990,000990{,}000
gg600,000600{,}000
nn300,000300{,}000
bb150,000150{,}000
mm00

截至第 nn 个普通判定的平均判定分为:

ASn=i=1nSjudge(ξi)nAS_n = \frac{\sum_{i=1}^{n} S_{\mathrm{judge}}(\xi_i)}{n}

连击补正乘区

连击基础分映射 B:J×N+R3B: \mathcal{J} \times \mathbb{N}^{+} \to \mathbb{R}^{3} 将判定等级 ξ\xi 与普通判定物量 NN 映射为:

  • bξ,Nb_{\xi,N}:连击基础分上界
  • dξ,Nd_{\xi,N}:连击基础分下界
  • aξ,Na_{\xi,N}:判定增量

ScoreV3 使用以下映射。

判定 ξ\xi上界 bξ,Nb_{\xi,N}下界 dξ,Nd_{\xi,N}增量 aξ,Na_{\xi,N}
ssmin(max(0.24N,1),192)\min(\max(\lfloor 0.24N \rfloor, 1), 192)0022
ppmin(max(0.24N,1),192)\min(\max(\lfloor 0.24N \rfloor, 1), 192)0011
ggmin(max(0.16N,1),128)\min(\max(\lfloor 0.16N \rfloor, 1), 128)0000
nnmin(max(0.12N,1),96)\min(\max(\lfloor 0.12N \rfloor, 1), 96)0000
bbmin(max(0.10N,1),80)\min(\max(\lfloor 0.10N \rfloor, 1), 80)0000
mmmin(max(0.08N,1),64)\min(\max(\lfloor 0.08N \rfloor, 1), 64)0000

ScoreV3 维护一个运行中的连击分状态 cc。连击分序列 Θ\Theta 只记录初始状态和普通判定后的 cc 值:

Θ={θ0,θ1,,θN}\Theta = \{\theta_0, \theta_1, \cdots, \theta_N\}

谱面开始时:

c=θ0=bs,Nc = \theta_0 = b_{s,N}

对于第 ii 个普通判定,设 cic_i^- 为应用此前发生的闪电溢出事件后的 cc 值:

ci=c,cmin(max(c+aξi,N,dξi,N),bξi,N),θi=c.\begin{aligned} c_i^- &= c, \\ c &\leftarrow \min\left(\max\left(c + a_{\xi_i,N}, d_{\xi_i,N}\right), b_{\xi_i,N}\right), \\ \theta_i &= c. \end{aligned}

对于一次产生 Of>0O_f > 0 的闪电 Miss,其溢出伤害作用于同一个运行中的连击分状态:

cmax(cOf,0)c \leftarrow \max(c - O_f, 0)

该闪电溢出更新不会向 Θ\Theta 添加元素,也不会推进普通判定下标 ii。它同时会在当前普通判定下标处更新连击分补差状态,因此即使溢出发生在最后一个普通判定之后,也可能降低最终分数。

连击分上限为:

bmax=bs,Nb_{\max} = b_{s,N}

截至第 nn 个普通判定的基础补正乘区为:

κ˚n=i=1nθinbmax\mathring{\kappa}_n = \frac{\sum_{i=1}^{n} \theta_i}{n \cdot b_{\max}}

乘区调整

连击分最大回复速度为:

amax=as,Na_{\max} = a_{s,N}

连击分预测序列用于描述处理普通判定时可达到的最大连击分:

θi=min(ci+amax,bmax)\theta_i^* = \min(c_i^- + a_{\max}, b_{\max})

连击分回复序列为:

P={ρ0,ρ1,,ρN}P = \{\rho_0, \rho_1, \cdots, \rho_N\}

其中 ρi\rho_i 表示第 ii 个普通判定之后,使连击分恢复至最大值所需的最少普通判定数量,不包含第 ii 个普通判定本身:

ρi=max(bmaxθiamax1,0)\rho_i = \max\left( \left\lceil \frac{b_{\max} - \theta_i}{a_{\max}} - 1 \right\rceil, 0 \right)

连击分补偿序列为:

Θ^={θ^0,θ^1,θ^2,,θ^N}\hat{\Theta} = \{\hat{\theta}_0, \hat{\theta}_1, \hat{\theta}_2, \cdots, \hat{\theta}_N\}

其中 θ^0=0\hat{\theta}_0 = 0。对于 i1i \ge 1

θ^i={θ^i1,i+ρiN or θi=θi,(2(bmaxθi)amax(N+1i+ρi))(i+ρiN)2,otherwise.\hat{\theta}_i = \begin{cases} \hat{\theta}_{i-1}, & i + \rho_i \le N \ \text{or}\ \theta_i = \theta_i^*, \\ \dfrac{ \left(2(b_{\max} - \theta_i) - a_{\max}(N + 1 - i + \rho_i)\right)(i + \rho_i - N) }{2}, & \text{otherwise.} \end{cases}

当闪电溢出事件发生在两个普通判定之间时,使用溢出后的当前 cc 值,在当前普通判定下标处应用同一补差规则。这样可以保持谱面末尾的闪电溢出损失与普通连击分损失一致。

截至第 nn 个普通判定的调整后连击补正乘区为:

κn=0.4+0.6max((i=1nθi)θ^n,0)nbmax\kappa_n = 0.4 + 0.6 \cdot \frac{ \max\left(\left(\sum_{i=1}^{n} \theta_i\right) - \hat{\theta}_n, 0\right) }{ n \cdot b_{\max} }

连击附加分

连击判定映射 C:JBC: \mathcal{J} \to \mathbb{B} 将普通判定等级映射为布尔值:

C(ξ)={1,ξ{s,p,g,n},0,otherwise.C(\xi) = \begin{cases} 1, & \xi \in \{s, p, g, n\}, \\ 0, & \text{otherwise.} \end{cases}

当前连击序列为:

Γ={γ0,γ1,,γN}\Gamma = \{\gamma_0, \gamma_1, \cdots, \gamma_N\}

其中:

γ0=0,γi={γi1+1,C(ξi)=1,0,C(ξi)=0.\begin{aligned} \gamma_0 &= 0, \\ \gamma_i &= \begin{cases} \gamma_{i-1} + 1, & C(\xi_i) = 1, \\ 0, & C(\xi_i) = 0. \end{cases} \end{aligned}

当前最高连击序列为:

Γ={γ0,γ1,,γN}\Gamma^* = \{\gamma_0^*, \gamma_1^*, \cdots, \gamma_N^*\}

其中:

γ0=0,γi=max(γi,γi1).\begin{aligned} \gamma_0^* &= 0, \\ \gamma_i^* &= \max(\gamma_i, \gamma_{i-1}^*). \end{aligned}

截至第 nn 个普通判定的连击附加分为:

CSn=5000γnNCS_n = 5000 \cdot \frac{\gamma_n^*}{N}

AP 附加分

截至第 nn 个普通判定的 AP 附加分为:

APn={5000nN,i{1,2,,n}, ξi{s,p},0,otherwise.AP_n = \begin{cases} 5000 \cdot \dfrac{n}{N}, & \forall i \in \{1, 2, \cdots, n\},\ \xi_i \in \{s, p\}, \\ 0, & \text{otherwise.} \end{cases}

闪电判定、闪电血量与闪电溢出不改变 AP 附加分的判定条件,因为它们不是普通判定。

结果条件

闪电判定不会改变普通判定计数器,也不会改变普通连击计数。因此,闪电 Miss 只有在产生闪电溢出时,才会通过连击分状态降低 ScoreV3 总分;它不影响 All Perfect 或 All Combo 的达成条件。

总分

截至第 nn 个普通判定的分数为:

Sn=κnASn+CSn+APnS_n = \kappa_n \cdot AS_n + CS_n + AP_n

ScoreV3 总分为:

TS=SNTS = S_N

理论最高分为 1,010,0001{,}010{,}000,当且仅当所有普通判定均为 Exact,且未因闪电音符扣分时达成:

ξΞ, ξ=sκN=1\forall \xi \in \Xi,\ \xi = s \qquad\text{且}\qquad \kappa_N = 1

因此,闪电判定不必全部为闪电 Exact;只要闪电 Miss 没有造成分数损失,仍可达成理论最高分。