
大家好,这里是 Minepig,MaiMuriDX 的开发者。
本专栏是对 Maimai 自制谱中所谓“无理配置”的详尽介绍,也是对近几年来有关 Maimai 自制的大量分散的专栏与视频内容的一个集中总结,同时也包含了对于过时或错误内容的修正。
本专栏会涉及到一些较为深入的知识,从基础知识到每种 Note 的详细判定规则再到各类无理配置的举例都会涵盖,十分建议想要自己写自制谱的玩家们阅读。
本专栏内容以日版 Maimai DX Buddies 以及以此为蓝本的中国大陆版 舞萌 DX 2024 版本为基础。
在专栏的最开头,我需要声明:无理的存在与否永远不应该成为衡量谱面好坏的决定性因素,有无理的谱可以很贴歌、可以很好玩、可以是神谱,没有无理的谱也可以是粪谱。我希望本专栏能让谱师们更清晰地认识无理配置,避免在不自觉的情况下写出无理配置。
理解判定规则是理解无理的基础,本部分涵盖了 Maimai 的全部判定细节,从每种 Note 的性质到每种 Note 的详细判定均会涉及。
本部分参考文献:
我们知道,Note 是贴合音乐节拍点而放置的,每一个 Note 都有一个应当被正确击打的时刻,这个时刻被称为 Note 的正解时刻。无论玩家是否击打了 Note,Maimai 都会在一个 Note 的正解时刻播放一个打击的音效,这个音效被称为正解音。
在上一部分提到,Maimai 对判定区和外键的监控是以帧为单位的,且固定每秒 60 帧,也即每隔 16.6667 ms 检查一次判定区和外键的状态。然而乐曲的 BPM 往往不会是 3600 的因数,因而 Note 的正解时刻几乎不可能正好对准 Maimai 的监控频率,因此 Maimai 会计算 Note 被实际击打的时刻(对齐到帧)与正解时刻(没有对齐到帧)的时间差,然后与一个预设好的区间作对比,如果时间差落在了某一个判定结果的容许区间内,就把这个判定结果给到当前的 Note,这个区间就是所谓的判定区间。
通常,判定区间的长度都是 16.6667 ms 的整倍数,这恰好是一帧的时长,因此我们通常也会用帧作为单位来描述判定区间的长度。但是需要注意,这不代表 Maimai 计算判定时是以帧作为单位的,正解时刻并不对齐到帧,因而判定区间边界也不会对齐到帧。一切的计算实际上都是基于毫秒的,当某个判定区在某一帧发生了按下事件时,Maimai 会获取当前的具体时刻,以乐曲开始播放为零点,以毫秒为单位,然后用这个时刻与 Note 的正解时刻相减得到毫秒为单位的时间差。这意味着,即使 Maimai 游戏发生了掉帧,即无法满足每秒 60 帧的帧率,判定计算也不会受影响,不会导致正解时刻的错位或是判定区间的长度变化,只不过对判定区和外键的监控频率会因为掉帧而下降。
为了数字简单起见,接下来的判定区间都会以帧作为时间单位,它们具体以毫秒为单位的时间可以简单通过乘以 16.6667 得到。
对于 Tap 而言,一共有 5 种基础的判定,即 Critical Perfect、Perfect、Great、Good、Miss。其中,Perfect 细分为 2 种子判定,Great 细分为 3 种子判定。对于这些判定,除了 Critical Perfect、Miss 以外的所有判定都有 Fast 和 Late 两种情况。
因此,完整的判定共有 14 种。它们对应的判定区间相对于正解时刻对称,如下表所示,注意表中所有“A ~ B”的区间都包含更远离 0 的那一侧端点(正中的 -1 ~ +1 两端都包含):

如果在一张图中绘制出所有的判定区,可以得到下图:

如果 Tap 是被保护的 Ex-Tap,那么上述判定区间中所有不是 Miss 的部分都将提升为 Critical Perfect,也就是说整个 -9 ~ +9 的范围都将是 Critical Perfect。
Maimai 有 A、B 两种判定调整,通常俗称为 A 判、B 判。在 Maimai 的官方文本解释中,A 判调整 Note 到达判定线的时间,适合靠听节奏来游玩的玩家;B 判直接调整判定的时机,适合靠目押来游玩的玩家。因此 A 判也被称作“音押判定”,B 判也被称作“目押判定”。
A 判实际上调节的是谱面相对于乐曲的延后时间,单位是帧,A 判 +0.5 表示所有与 Note 相关的时刻都会相对于原本晚 0.5 帧。具体举例,这代表 Tap 到达判定线的时刻、Touch 快门闭合的时刻等都会比乐曲节拍点晚 0.5 帧。或者应该说,保持其他时机不变的情况下,乐曲的播放比原先提前了 0.5 帧,此时 Tap 到达判定线的时刻依然是正解时刻,但不再与乐曲节拍点符合。由于正解音永远在 Tap 到达判定线或 Touch 闭合的时刻播放,所以正解音也会和乐曲节奏错位。
B 判调节的则是判定区间相对于谱面的延后时间,单位也是帧,B 判 +0.5 表示所有 Note 的正解时刻和判定区间全部相对于原本向 Late 方向移动 0.5 帧。此时 Tap 到达判定线的时刻与乐曲节拍点符合,正解音也正好对上乐曲节奏,但是这三者都不再对准判定区间中央的正解时间了,因此 B 判常用于补偿输入延迟。
关于 A 判与 B 判的具体效果可以参考下图,其中向右为 Late 的方向:

可以推断出,假如把 A 判和 B 判调节为相反数,可以让正解时刻和乐曲节拍点符合,但是 Tap 到达判定线的时刻会提前或者延后(一些移动端音游称之为图像偏移量)。不过,由于正解音永远是跟着谱面走的,这样调仍然会让正解音和乐曲错位。
可能是冷知识:DX 框体实际上内部自带了 +3.0 的 B 判,这可能是为了补偿硬件和软件的输入延迟。如果有条件的话可以通过内录全 Miss 的谱面确认来证实这一点 —— Tap 实际会在到达判定线之后第 12 帧才 Miss,而不是第 9 帧。
这或许是 DX 框体刚刚发行时,许多习惯了旧框的玩家在 DX 框体上总是会打出 Fast 的原因,甚至把 A 判或者 B 判调成 -2.0 也无法完全弥补过来。
Hold 的判定由两部分组成:头部判定和按压判定。Hold 的头部判定完全等同于一个 Tap,具有 18 帧的宽度,以及完全相同的判定区间。当 Hold 的头部被击打后(或是没有及时击打导致 Miss 以后),这个判定就会被记录下来,直到 Hold 结束时参与最终判定的结算。与 Tap 类似,如果 Hold 是被保护的 Ex-Hold,那么头部判定也如同 Ex-Tap 一样,只有 Critical Perfect 和 Miss 两种判定。
在 Hold 的持续过程中,会不断统计 Hold 被按压的时长。按压和头部判定无关,即便头部判定为 Miss,玩家仍然可以按住 Hold。不过,需要注意的是:Hold 开头的 6 帧与结尾的 12 帧不会检查 Hold 是否被按压,也不会统计按压时长。
准确说来,Hold 统计的是玩家松开的时长,而且在玩家松开时 Hold 并不会立刻开始记录松开时长,而是会等待 3 帧,如果玩家连续 3 帧都没有按压 Hold,Hold 就会进入松开的状态,开始统计松开时长,而且先前等待的 3 帧也会一并计入松开时长。不过,如果松开的时长不足 3 帧,Hold 就会保持被按下的状态不变。
当 Hold 结束后,会根据头部判定和按压时长百分比,综合计算出最终的判定结果。按压时长百分比就是统计的按压时长与进行检查的总时长(也即 Hold 总持续时长扣除首尾忽略的 18 帧)的比值。如果 Hold 的总持续时长不足 18 帧,那么由于完全没有统计按压时长,Hold 的最终判定将与头部判定相同(俗称短 Hold、假 Hold);其他情况下,Hold 的最终判定由下表决定:

从表中可以看出 Hold 有向上修正头判的特性,在不是短 Hold 的情况下,最终判定结果中的 Perfect 一定是 Perfect 1st,Great 也一定是 Great 1st,这在 Break-Hold 里会有实际的效果体现。
需要特别注意的是,Ex 保护只会保护头部判定,即使是 Ex-Hold,在击打头部并获得 Critical Perfect 以后如果完全不按压,最终判定依然会降低到 Late Good,不会因为保护而维持 Critical Perfect。
Touch 的判定
Touch 的判定区间比较特殊,它没有 Fast 判定,只有 Critical Perfect 以及其他 Late 判定。Touch 的判定区间如下表:

换言之,即便在 Touch 出现前就不断尝试触碰这个 Touch,也不会获得不好的判定。因此,Touch 可以通过“擦玻璃”的方式来“糊”。
Touch 的判定还有一套容错机制,被称为 TouchGroup 机制。在同一时刻出现(即被标注为黄色的“Each Touch”),且彼此相邻的 Touch,会相互链接,形成一个 TouchGroup。
判断两个 Touch 是否相邻基本等同于判断它们所属的判定区在图像上是否有邻边,具体的相邻关系如下图所示,若两个判定区有线段直接连接,表示两个判定区相邻:

注意相同键位的 A 区和 B 区是相邻的,尽管图像上看两者似乎空开了一点。
当 TouchGroup 中超过半数(≥ 51%)的 Touch 获得判定后,剩余的 Touch 也会立即获得与最后一个判定的 Touch 相同的判定。举几个例子:
B1/E2 形成了一个大小为 2 的 TouchGroup。当 B1 获得判定后,已判定的占比为 50% < 51%,因此 E2 仍然等待被判定。换言之,大小为 2 的 TouchGroup 不会享受该机制带来的好处。
B1/E2/B2 形成了一个大小为 3 的 TouchGroup。当 B1 和 E2 都获得 Critical Perfect 判定后,已判定的占比为 66.67% ≥ 51%,因此 B2 也立即获得 Critical Perfect 判定。
C/B7/B6/E7/B2/B3/E3 形成了一个大小为 7 的 TouchGroup。当 B7/B6/E7 获得 Critical Perfect 判定后,已判定占比 < 51%。随后,C 获得了 Late Good 判定,此时已判定占比 ≥ 51%,因此 B2/B3/E3 也立即获得 Late Good 判定。
TouchHold 的判定就如同 Touch 和 Hold 的综合体,它像 Hold 一样具有头部判定和按压判定。TouchHold 的头部判定和 Touch 完全一致,没有 Fast,Critical Perfect 的区间也有 18 帧宽度。唯一可能称得上区别的,是 TouchHold 不会参与形成 TouchGroup,例如下图就是两组 TouchGroup 与单独一个 TouchHold 的配置:

TouchHold 的按压判定则与 Hold 一致,不过由于头部判定宽松,开头忽略的时长由 6 帧延长到了 15 帧,结尾依然是忽略 12 帧,因此如果 TouchHold 的总持续时长不足 27 帧,就会因为完全不检查按压,而导致最终判定与头部判定相同(称为短 TouchHold 或假 TouchHold)。持续时长超过 27 帧的情况下,最终判定根据头部判定和按压时长百分比计算,与 Hold 完全相同。
一条 Slide 分为 Slide Star 和 Slide Track,Slide Star 本身等价于一个 Tap,适用于上文 Tap 判定的一切内容,而后续的 Slide Track 判定才是 Maimai 中最复杂的内容,接下来分段详述。
一条 Slide Track 会经过若干个内屏上的判定区,这些判定区将 Slide Track 分割成了一段一段的“判定段”,每个判定段都对应于内屏上 1~2 个判定区。想要完成一条 Slide,原则上应该依次触碰每一个判定段的至少一个判定区。
在内屏全部 33 个判定区中,只有 A、B、C 区共 17 个判定区参与 Slide 的判定,而 D 区和 E 区是完全不参与 Slide 判定的,因此 Slide 分割判定段时也会对 D 区和 E 区视而不见(例外是 Wifi,下面会提到)。
将判定段按顺序排列,即得到 Slide 的判定队列。以 8pp5 为例,如下图所示,可以写出其判定队列为:A8, B8, C, B3, A2, A1, B8, B7/C, B5/B6, A5,总共 10 个判定段。尽管 8pp5 的 Slide Track 接触到了 E3、D2、E1、E6,但由于 D 区和 E 区不参与 Slide 的判定,故它们并没有出现在判定队列中。

判定队列中 B7/C 与 B5/B6 意味着该判定段包含两个判定区,任选其中一个判定区触碰即可完成该判定段,这被称为 OR 判定段。出现 OR 判定段的情况一般是由于 Slide Track 经过了某两个判定区的分界线,最常见的情况是三格长的短直线,例如下图中 1-3 的判定队列是:A1, A2/B2, A3。同样的,D2、E2、D3、E3 并不会出现在队列中。

Wifi 可以看作三条同头的直线 Slide 的复合,但判定更为宽松化。因此 Wifi 具有三个独立的判定队列,它们之间没有关联,可以同时处理或者先后分开处理。但无论怎么处理,只有这三个判定队列各自都被完成以后,整条 Wifi 才算作完成。
以 1w5 为例,如下图所示,其可以视为 1-4、1-5、1-6 的组合,但 Wifi 的判定宽松化允许 1-4 与 1-6 的部分最后一个判定段使用 D 区解决,而 1-5 的部分则将最后两个判定段拼合为了一段。因此 1w5 的三个判定队列分别是:A1, B2, B3, A4/D5;A1, B1, C, B5/A5;A1, B8, B7, A6/D6。Wifi 是唯一一种 D 区参与到 Slide 判定中的情况。

对于 Festival 代加入的连锁 Slide,其只拥有单一的判定队列,且判定队列为各部分拼合的结果,例如 1-6 的判定队列是 A1, B8, B7, A6,6-4 的判定队列是 A6, A5/B5, A4,那么两者组成连锁 Slide 1-6-4,判定队列就是:A1, B8, B7, A6, A5/B5, A4。
在 Slide 的整个判定队列中,除了最后一段只需要按下不需要松开,其他每一段都需要经历从按下到松开的“下降沿”过程才会被解决。当一个判定段被解决以后,它会从判定队列中被移除。判定队列清空的时刻代表 Slide 完成的时刻,此时 Slide 会进行判定计算,将 Slide 完成时刻与引导星星的中心进入最后一个判定区的时刻作比较,并给出判定结果。
具体而言,当一条 Slide Track 已经可以接受判定了以后(也即 Slide Track 完成了渐入完全显示的时刻,Slide Star 应当被击打的时刻前 100 ms,或者说 6 帧),Maimai 就会在每一帧中都检查并更新判定队列的状态。
Maimai 会先检查 Slide 判定队列中剩余部分的首个判定段。如果这个判定段中的某一个判定区处于 ON 状态,那么 Slide 的这一判定段就会进入一种“解决了一半”的状态。
如果这个判定段在之前的检查中已经由于上述原因处于“解决了一半”的状态,则检查已经处于 ON 状态的那个判定区是否被松开。如果被松开,或者说这个判定区变成了 OFF 状态,那么首个判定段就被解决了,Maimai 会把它从判定队列里移除。
换言之,首个判定段中的判定区必须要先按下再松开,这个判定段才会被解决。除非判定队列中只剩下了最后一个判定段,此时的首个判定段就是初始队列中的最后一段,这一段不要求松开,只要对应的判定区处于 ON 状态,这一个判定段就会立刻被完成,从判定队列中移除。此时判定队列恰好清空,Maimai 会计算 Slide 的判定结果。
此外,应该是出于一些容错的考虑,Maimai 还会检查 Slide 判定队列剩余部分的第二个判定段,如果此时第二个判定段对应的判定区处于 ON 状态,那么无论首个判定段现在处于什么状态,都会立刻被解决并移出队列,这被称作“跳区”规则。
以上的检查会在一帧中反复执行多次,直到判定队列不再发生变化为止。
还是以 8pp5 为例,判定队列为:A8, B8, C, B3, A2, A1, B8, B7/C, B5/B6, A5。

由于存在跳区规则,我们实际上只需要依次“点按”(按下再松开)这五个判定区就可以完成这整条 Slide:B8,B3,A1,C,A5,其中每按一个判定区都会跳过某一个判定段,因此不需要触碰所有十个判定段。
再想象一个情景,假如你在 8pp5 的 Slide Track 还在渐入的时候(还未接受判定),按住了所有十个判定段(什么?你问怎么按?或许你可以肘击滴蜡熊),那么当 Slide Track 渐入完成开始接受判定的那一帧,会发生什么事情?
很显然,整条 Slide 会立刻被全部完成,具体细节如下:由于第二个判定段 B8 已经处于 ON 状态,A8 被跳过,C 成为了第二个判定段;然后由于 C 处于 ON 状态,尽管 B8 还未松开但依然会被跳过,B3 又成为了第二个判定段;之后以此类推直到判定队列只剩下了 B5/B6 和 A5 两段,此时 A5 处于 ON 状态,跳过了 B5/B6,只剩 A5,最后由于 A5 不需要松手,而它又正好处于 ON 状态,A5 被立刻解决,判定队列清空,于是你喜提一条绿色的 Slide。
想象第三个情景,假如你迅速的把 8pp5 划至只剩 B7/C, B5/B6, A5 三个判定段,此时你的左手按住 A5,右手按住 C,且保证不触碰到 B5 和 B6,会怎么样?
第一次检查,由于 C 处于 ON 状态,首个判定段 B7/C 进入“解决了一半”的状态。然后第二次检查,发现不产生任何变化(因为 A5 是此时的第三个判定段,不会被检查),于是检查结束。
假如接下来你把右手松开了,那么在松手的这一帧中,第一次检查发现 C 变为了 OFF,B7/C 被解决移出队列。然后第二次检查,首个判定段已经变成了 B5/B6,A5 成为第二个判定段且恰好处于 ON 状态,于是跳过 B5/B6,并且由于 A5 不需要松手,A5 被直接解决。于是判定队列清空,Slide 计算并显示判定结果。
以上的过程,仿佛是因为我们松开了 C,游戏才开始判定,所以常常被玩家称作“松手判定”。但实际上,我们按下 C 时,B7/C 并未被完全解决,自然也就不会去检查 A5。而松开 C 后,A5 变成了第二个判定段,就会被检查了,因此触发了跳区。这样的过程发生在同一帧内,因此看起来似乎是游戏有着“松手判定”的规则。但是实际上只是因为判定区状态的转变引起了多米诺效应,达成了这样的结果,并没有所谓的“松手判定”的特殊规则。
再举第四个情景,假设 8pp5 之前连接了一条 4-8 的直线 Slide,其结束时刻正好与 8pp5 的启动时刻一致,组成了俗称“一笔画”的配置。当你外键击打 8 号键的 Slide Star 并划完了 4-8 以后,发现 8pp5 已经消除到 B3 区了,可是理论上来说跳区只会跳一个区,为什么现在的结果像是跳过了 A8 和 B8 两个区直接判定了 C 区?
原因其实很简单:手是有面积的,划 4-8 的过程中,在某一帧 C 和 B8 同时都处于 ON 状态,于是就会连续触发两次跳区使首个判定段变为 C,然后在手离开 C 区以后,解决掉 C,导致 8pp5 已经消除到了 B3。
在几种特殊情况中,对第二个判定段的检查会被禁用:
判定队列总长度 ≤ 3 的标准 Slide 或连锁 Slide,其倒数第二个判定段不可以跳过,如 8<7 不可跳 A8、1>3 不可跳 A2、6-4 不可跳 A5/B5;7>8>1 同 7>1,不可跳 A8;
单独一条标准的转折 Slide(即大 V 形 Slide)中长度为 3 的部分,第二个判定段不可跳过,例如 1V35 的第二段 A2/B2、第四段 A4/B4 均不可跳过,5V73 只有第二段 A6/B6 不可跳过。
这些 Slide 的形状以及不可跳过的判定段如下图所示(使用不同颜色区分):


特别的,对于连锁 Slide 1-3-5,尽管其形状和 1V35 相同,判定队列也完全相同,但由于它不是转折 Slide,故不适用于上述第二条规则,然后在判定第一条规则时,由于判定队列总长度为 5 > 3,于是不存在不可跳过的判定段。而 1V35 会由于上述第二条规则拥有两个不可跳过的判定段。
此外,第二条规则要求转折 Slide 必须是单独的一条。如果转折 Slide 参与形成连锁 Slide,也会失去上述第二条的特权,例如 1-3V57 和 1-3-5-7 一样,每一个判定段都可以跳过,不会因为 3V57 的存在导致 A4/B4 和 A6/B6 不允许跳区。
在上述两种跳区被禁用的情况下,如果 Slide 当前的判定队列剩余部分中首个判定段不可以跳过,那么 Maimai 不会在首个判定段还未开始解决时,检查第二个判定区,但是如果首个判定段已经“解决了一半”,那么如果第二个判定段对应的判定区处于 ON 状态,依然可以触发跳区,无需等待首个判定段完全解决。
以 1-3 为例,判定队列是 A1, A2/B2, A3,其中 A2/B2 不可跳过,那么“点按”(按下再松开)A1 之后,直接按 A3 就不会有任何变化,因为 A2/B2 还没有开始解决,跳区被禁用。但是如果在按住 A3 的情况下去触碰 A2,Slide 就会立刻被完成。这是由于 A2 变为 ON 的那一帧,A2/B2 进入“解决了一半”的状态,允许跳区,而 A3 已经处于 ON 状态,于是就触发跳区跳过了 A2/B2。
如果一条连锁 Slide 由转折 Slide 起始,则会出现一些很迷惑的现象,这疑似是 Festival 加入连锁 Slide 时忘记修改相关逻辑产生的 Bug。
具体而言,此时 Maimai 会根据 Slide 起始点和终止点来判断 Slide 的形状,1V37-5 由转折 Slide 起始,其起始点是 1 号键,终止点是 5 号键,因而会被当作 1V35 来应用禁止跳区规则,1V35 的第二个区和第四个区不可以跳过,因而 1V37-5 的第二个区和第四个区也不可以跳过,也即 1-3 部分的 A2/B2 和 3-7 部分的 B3。而 1V35-7 则会被当作 1V37,从而只有第二个区 A2/B2 不可以跳过。至于 1V37-1,会被当作 1V31,但由于不存在 1V31 这种 Slide,于是会 fallback 到上述第一条规则,而显然 1V37-1 的判定队列长度 > 3,因而每一个判定段都可以跳过。另外,上文提到的 1-3V57 由 1-3 起始,并不是转折 Slide,因此不在讨论范围内。
题外话:由于上述迷惑现象看起来很像是 Bug,所以 MaiMuriDX 在检测时选择一刀切把所有长度 > 3 的连锁 Slide 定为全部允许跳区,相当于是把跳区规则稍微宽松化了一点(应该不会有人都写连锁 Slide 了还在大 V 吧)。
前文已经提到,判定队列清空的时刻代表 Slide 完成的时刻,此时 Slide 会进行判定计算,这个判定计算的过程就是 Slide 尾判。(注意 墨滢-moying 的专栏对这部分的介绍有许多错误,请以此处的讲解为准)
Slide 尾判的正解时刻是引导星星的中心进入 Slide 最后一个判定区的时刻。
实际上,由于这个正解时刻是根据 Slide 各个判定段的长度与 Slide 总持续时间综合计算出来的,而 Slide 各个判定段的长度数据并不准确,或者应该说误差有点过于大了。因此正解时刻并不精确等于引导星星的中心进入最后一个判定区的时刻,而是有一定的出入,通常正解时刻位于引导星星的中心运动到在末尾 A 区的边界附近 10 px 范围内的某个点的时刻,由于 Slide 判定宽松,这个误差属于可以接受的范围。
外圈圆弧形的 Slide 正解时刻的误差较大,其正解时刻实际上位于引导星星运动到末尾 A 区前的 D 区中心附近。这可能是为了模仿旧框的 Slide 尾判手感而故意为之。
Slide 尾判的判定区间如下表所示,其中 T 表示引导星星在最后一个判定区停留的时长,或者说 T 表示 Slide 尾判的正解时刻到 Slide 结束时刻的时间差:

这张表乍一看十分的令人迷惑,不仅不对称,而且还有两个 Critical Perfect 区间,接下来会对每一个细节进行解释。
首先是位于整个判定区间正中央的 Critical Perfect 区间,其区间范围是受引导星星在最后一个判定区停留的时长而变化的,引导星星在最后一个区停留越久,中央 Critical Perfect 的区间就越大,这被称为区间扩展机制。
具体而言,中央 Critical Perfect 的判定区间会向两侧各扩展 (T/4) 的时长,其中 T 是引导星星在最后一个判定区停留的时长。扩大后的区间会逐渐覆盖掉两侧的其它区间(也包含 -17 ~ -14 的 Critical Perfect 区间),但是不会覆盖 ±36 帧以外的 Too Fast 和 Too Late 区间。
此外,Slide 判定 Miss 的时机是以 Slide 完全结束的时刻为基准的,而不是以上述正解时刻,这就导致 Miss 的判定区间后移了等同于 T 的时间,从原先 +33 处变成了 +33+T。Miss 判定区间的后移也就导致了属于 Late Good 的区间变宽。
举例来说,假如某 Slide 的引导星星将会在最后一个判定区停留 50 帧,那么中央区间将向两侧各扩展 12.5 帧,覆盖掉其他区间。那么,这条 Slide 的判定区间将会变为这样:

最极端的情况,如果某 Slide 的引导星星在最后一个判定区停留的时长超过 88 帧(1.467 s)时,Slide 将只剩下 Fast Good (Too Fast)、Critical Perfect、Late Good (Too Late) 和 Miss (Too Late) 这四种判定。典型例子是白南十字的超慢速 Slide “(128.6)3v1[1:11]/7v5[1:11]”,Slide 总长为 20.53 s,在最后一个区停留 3.344 s,即 200.6 帧,于是这两条 Slide 的判定区间就变成了这样:

再考虑另一个极端,如果某 Slide 的引导星星在最后一个判定区停留的时长甚至不足 12 帧,那么中央 Critical Perfect 区间扩展以后依然无法完全覆盖 -17 ~ -14 区间的 Critical Perfect,那么这一段额外的 Critical Perfect 就会发挥作用,它会与中央区间合并,相当于往 Fast 方向扩展再次扩展了中央 Critical Perfect 的区间。以紫提尾杀前的 “(215)4z8[8:1]/5s1[8:1]” 为例,Slide 总长只有 0.1395 s 即 8.372 帧,在最后一个区只停留 0.88 帧,于是两条 Slide 的判定区间就变成了这样:

可以注意到,在 Slide 速度很快的情况下,Critical Perfect 的区间不再对称(因为 -17 ~ -14 区间的存在),而且 Late Good 的区间也会被少量压缩。
下图中展示了当 Slide 的引导星星在最后一个区停留 8 帧和 28 帧的情况下,Slide 的判定区间:

值得一提的是,如果 Slide 获得了 Miss 的判定但此时判定队列中只剩最后一个判定段,那么 Miss 会被提升为 Late Good,这就是俗称的“留尾判绿”。留尾必须是留最后一个判定段才能判为 Good,如果留了至少两个判定段,判定结果依然是 Miss。
对于 Wifi 而言,“留尾判绿”要求三个判定队列必须都最多只留一个判定段,任何一个判定队列留了两段及以上,Miss 就不会提升为 Late Good。
但是这里有一个 bug,先前提过 Wifi 中间支的最后两个判定段拼合为了一段,但是在检查留尾时,这两段被认为是分离的。因此,以 1w5 为例,如果只留 A4/D5 或者只留 A6/D6 或者两个都留,都可以触发“留尾判绿”,但是如果留下了 A5/B5 的话,会被认为留了两段,故判定结果依然是 Miss。
事件队列理论是 インクInku墨 于 2021 年发布的一个关于 Slide 判定的视频(见本文最开头的参考文献)中提出的理论(原文是“判定队列理论”,为避免与上文所述判定队列混淆,故意更改了名字)。该理论是基于上机实验结果逆向推定的理论,核心思想与上文有所不同,但最终的结果是一致的。在此将该理论一并介绍,希望可以帮助读者理解。
以 1-5 为例,其判定队列是 A1, B1, C, B5, A5,如图所示。下面讲解事件队列理论是如何处理这根 Slide 的判定的:

事件队列理论会将判定队列中的每个判定段进一步拆分为事件,得到如下事件队列:A1[ON], A1[UP], B1[ON], B1[UP], C[ON], C[UP], B5[ON], B5[UP], A5[ON]。
队列中的 ON 代表“判定区处于按下状态”,与 OFF 相对,而 UP 则代表“判定区经历从 ON 变为 OFF 的松开事件”,与 DOWN 相对。从这个事件队列中就可以观察到,最后一个判定段 A5 无需松开。
原视频中使用了 OFF 来代替 UP,但为了防止混淆,此处沿用先前的术语定义:ON/OFF 代表按下/松开状态,而 DOWN/UP 代表按下/松开事件。
事件队列理论对于跳区规则的诠释是:任一时刻 Slide 只会尝试检查队列中前三个事件是否满足,如果有一个事件满足,会将该事件以及其前面的所有事件一起移出队列。
仍然以 1-5 为例,如果同时按住 B1 和 B5 并且不触碰 C 区,Slide 检查前三个事件时发现第三个事件 B1[ON] 已经满足,于是会将 A1[ON], A1[UP], B1[ON] 全部移出队列,此时队列变成了:B1[UP], C[ON], C[UP], B5[ON], B5[UP], A5[ON]。
由于 B1 只是被按住没有松开,B1[UP] 并没有满足,因此前三个事件中也就不包含 B5[ON],于是此时按住 B5 区是不会有任何反应的。如果松开 B1,那么这一帧内 Slide 检查发现 B1[UP] 满足,将其移出队列后,B5[ON] 进入前三个事件,而此时 B5 区正好被按住,于是事件队列可以再次消除到只剩最后两个事件 B5[UP], A5[ON]。
对于禁止跳区的情况,以 1-3 为例,事件队列理论给出的解释是 1-3 的事件队列是:A1[ON], A1[UP], A2/B2[ON], A2/B2[ON], A2/B2[UP], A3[ON]。
可见 A2/B2[ON] 事件重复了两次,这样在点按了 A1 区以后,事件队列成为:A2/B2[ON], A2/B2[ON], A2/B2[UP], A3[ON]。
由于重复的 A2/B2[ON] 事件的存在,A3[ON] 并没有进入前三个事件,因此直接按 A3 并不能跳过 A2/B2 判定段。然而按下 B2 时会一次性将两个 A2/B2[ON] 一起消耗掉,此时 A3[ON] 进入前三个事件,按 A3 就可以跳过 A2/B2 了。
在游玩了一张谱面后,Maimai 会记录下每一个 Note 得到的判定结果,据此计算出谱面的成绩。谱面成绩一般由两部分组成:达成率和 DX 分。下面简要介绍这两者分别的计算规则。游玩结果的评级仅由达成率决定,在此不多赘述。
达成率的计算取决于每个 Note 的具体类型以及判定结果,下表给出了每种 Note 在不同判定结果下的分数:

首先需要计算达成率的基础分,基础分由所有的 Note 加权求和得到。计算时,如果一个 Note 拥有 Break 修饰,那么无论它是 Break-Tap、Break-Hold 还是 Break-Slide,统一按照上表中 Break 列的分数来计分。如果不是 Break,那么根据 Note 的具体类型,查阅对应列的分数进行计分。注意 Slide Star 被视为 Tap,按照 Tap 列的分数进行计分。
在所有 Note 的分数全部统计完成后,将分数求和得到基础分,然后 Maimai 会去计算基础分的理论满分 —— 也即所有 Note 全部按照 Critical Perfect 完成的总分。将两者相除得到的百分比即为达成率的基础分的部分,基础分的范围是 0% ~ 100%。
达成率还有额外分的部分,这是由所有 Break 类型 Note 产生,对谱面中所有拥有 Break 修饰的 Note,按照 Break Bonus 列计分,求和得到额外分。然后计算额外分总分(这其实就是 Break Note 的总数),将两者相除,再除以 100,得到一个介于 0% ~ 1% 之间的数据,这就是达成率中额外分部分。
最终的达成率百分比是基础分和额外分的和,因此达成率的理论满分是 100% + 1% = 101%。达到该理论值的要求是所有 Break 修饰的 Note 都获得 Critical Perfect,而所有非 Break 的 Note 都至少获得 Perfect 2nd 及以上的判定。如果达成了这个条件,称为 All Perfect Plus(AP+)。
DX 分是独立于达成率的另一套成绩系统,它不关心 Note 的类型,只关心最终的判定,将所有 Note 按照 DX 列的分数计分,求和后即得到 DX 分。DX 分并不以百分比形式展示,因此 DX 分的理论满分是谱面物量的 3 倍(物量,即谱面中 Note 的总数,注意 Slide Star 和 Slide Track 是记作两个不同的 Note 的)。很显然 DX 分达到满分的要求是所有 Note 都获得 Critical Perfect,比达成率满分更困难。
在旧框中达成率没有额外分的部分,取而代之的是 Break 列的前三行要依次更改为 5.2,5.1,5。在计算基础分总分时,Break 会按照 5 分计算(相当于所有 Note 都按照 Perfect 2nd 计分),因此最后计算出来的达成率百分比依然可以超出 100%,但满分的具体数值需要由谱面物量和 Break 数量综合计算得到,不同谱面的达成率满分也不同。在谱面中所有 Note 都为 Break 时,达成率满分最高,为 104%。
实际上在 Maimai 计算分数时,上表中基础分的部分每一分实际上是 500 分,额外分的部分每一分实际上是 100 分,但由于最后的达成率是比值,我在这里做了归一化。如果用 500 分作为单位,那么上面所说旧框的 Break 前三行分数依次应该为 2600,2550,2500。因此玩家会把 Break 的 Perfect 1st 判定称为 50 落,Perfect 2nd 判定称为 100 落,因为它们相比于 Critical Perfect 分别少了 50 分和 100 分。