
本文将涵盖maimai的全部游戏判定细节,从每个note的性质到每种note的详细判定均会涉及,以供所有玩家查阅参考。
本文涉及到一些较为深入的知识,十分建议已经游玩maimai一段时间的玩家阅读。
本文将分为3个部分,分别介绍相关基础知识、详细判定细节以及详细计分规则。
本文所述的所有内容,均基于maimai DX及以后的版本。不同版本之间的细微差异(如在更新至2022后,对判定偏移A和B做了微调)将忽略。
第一部分在这里

在第二部分中,可能会出现一些新的名词。在此进行补充。
正解时间/中央时间: 指一个Note应当被正确击打的时间。有时,这个词可能指的是正解帧/中央帧
正解帧/中央帧: maimai以帧为单位进行判定,因此,正解时间并非最终用于判定的依据,而是根据正解时间计算得出的正解帧。
大p/cp/C-Perfect: 即Critical Perfect
小p/普通perfect: 即除C-Perfect以外的Perfect判定
为方便理解,我们对帧的部分定义做出了修改。正解帧位于两帧的中间,如下图所示。

正解帧示意图
题外话: 实际上,在Unity中,不存在“两帧之间”的概念,一帧也不是一个长条的范围,而是一个“瞬间”。因此,在判定时,总会取某一个帧作为中央帧,然后通过左开右闭区间,或者左闭右开区间来实现这样的功能。 但是如此陈述的话,可能会令人费解,也不方便理解,因此做出了这样的修改。不过最终,两种描述方式的结果实际上是一样的,因此大可不必担心。
上面提到,maimai以帧为单位进行判定,发生在上一帧之后、本帧之前的一切事情,都会在本帧处理。
maimai进行判定的帧率是60fps,也即每过16.6667毫秒判定一次。之后所出现的一切以帧为单位的数字,都可以以此换算为具体的时间长度。
如:3帧相当于50毫秒、9帧相当于150毫秒。
对于Tap而言,一共有4种基础的判定,即Perfect、Great、Good、Miss。其中,Perfect和Great各自拥有3种子判定:

子判定
对于这些判定,除了Critical Perfect、Miss以外的所有判定都有Fast和Late两种情况。
因此,完整的判定共有14种。它们对应的判定区间相对于中央帧对称,如下表:

判定区间
请注意,不存在“中央帧+0”的帧,因为中央帧是两个帧的中间,而非某一个帧。为方便理解,下面给出判定区间的示意图:

判定区间示意图
不过,并非所有Tap都关心所有的判定划分,下面会分类阐述。
普通Tap只关心最基础的4种判定划分,即Prefect、Great、Good和Miss。
注意:普通Tap包括普通的Slide-Tap
Break关心所有的判定划分,每一种划分都会有不同的计分。
注意:Break包括Slide-Break
Ex-Tap和上面所有的Tap都不同,它的判定区间十分简单:

Ex-Tap判定区间
换一种说法,Ex-Tap只有C-Perfect和Miss两种情况,且判定区间和普通的Tap的一切判定区间加起来一样长。所以我们会说:Ex-Tap可以把所有非C-Perfect的判定转变为C-Perfect。
判定的显示和实际的判定无关,它只是控制画面如何向玩家展示判定而已。
判定的显示和设置中的“判定表示”选项有关。它共有3个大分类,用数字区分。每个大分类下还有4个小分类(国际服与日服为5个分类),用字母区分。

小分类

大分类
另外,1大分类下的所有选项,在结算界面均不会显示除了Break以外的Critical Perfect情况。
说明: 举几个例子: 2-D情况下,所有的Great和Good都不会显示具体的判定内容,而是只会显示蓝色的Fast或红色的Late。而所有的Perfect判定则不会显示任何内容。 3-D情况下,只有C-Perfect不会显示任何内容,而除此之外的所有判定都只会显示蓝色的Fast或红色的Late。 2-C的情况下,如果打出了Great,那么就会显示为蓝色的Great(Fast情况)或者红色的Great(Late情况)。也就是相当于用颜色来表示Fast/Late了。 1-D和2-D其实在游戏内显示是一模一样的,区别就在于结算界面会不会显示其他Note的Critical Perfect数量。 1-E和2-E其实差不多,它们的区别就在于,对于普通的tap,1-E只会显示橙色的。Perfect,而2-E会在你打出大p的时候显示金色的Critical Perfect,同时二者都不会显示普通Perfect的Fast和Late。 另外,3因为已经会显示普通Perfect的Fast/Late了,所以没有3-E的选项。
Hold的判定由两个部分组成,分别是Hold头部判定以及Hold按压判定。
Hold的头部如同一个Tap,其判定和Tap完全一致,均为18帧宽度,具体判定区间也和Tap一致。当Hold的头部被击打后,这个判定就会被记录下来(包括Miss),直到Hold结束时,参与最终判定的结算。
如果Hold是被保护的Ex-Hold,那么,Hold的头部判定也如同Ex-Tap一样,只有Critical Perfect和Miss两种判定。
Hold在按压时发出的特效颜色是由头部判定决定的。分别有黄色(Perfect)、粉色(Great)、绿色(Good)、灰色(Miss)。
当Hold持续过程中,会不断统计Hold被按压的时长。按压和头部判定无关,即便头部判定为Miss,玩家仍然可以按住Hold。
不过,需要注意的是:Hold开头的6帧与结尾的12帧不会检查Hold是否被按压。
当Hold结束后,会根据头部判定和按压时长百分比,综合计算出最终的判定结果。
按压时长百分比计算公式如下:

符号含义
Hold的判定结果首先会被设置为头部判定,然后,根据按压时长百分比进行过修正:

判定修正
许多文章中都会提到:短于300ms(即18帧)的Hold都无需长按,只需要轻触开头即可。这实际上就是上文提到的Hold开头和结尾不会被检查所导致的。
此外,由于Hold结尾的12帧不会被检查,因此,略微提前松开Hold,不仅Hold仍然会保持着被按住时的特效,而且也不会导致判定被修正下降。
一条Slide会经过若干个判定区,比如从1到5的直线Slide1-5,会依次经过A1,B1,C,B5,A5五个判定区,如图所示。

Slide 1-5
原则上,需要依次触碰这5个判定区,并在引导星星进入最后一个判定区的时刻完成它。
反过来说,判定区将Slide分为了若干段,之后我们会用段或判定段来描述这样的一段Slide。
扇形星星有3个独立计算的部分。如对于从1开始到5结束的扇形星星1w5,三个独立部分分别等价于1-4、1-5、1-6。如下图所示。

Slide 1w5
三个独立部分的完成情况不会影响到整个Slide的进度。只有当三个部分全部被完成时,Slide才会被视为完成。
如,对于上面提到的1w5,我们可以先从1直线划到6,然后再从1直线划到4,此时,Slide不会被完成。最后,再从1直线划到5,此时,Slide才会被完成。
maimai会先检查Slide未完成部分的首个判定段对应的判定区。
如果这个判定区被按下,那么这个判定区处于On状态。此时,Slide的这一判定段其实处于一种“解决了一半”的状态。
而如果这个判定区已经处于On状态,则检查它是否被松开。如果被松开,那么这个判定段就被解决了。
换言之,首个判定区必须要先按下,再松开,这个判定段才会被解决。
此外,maimai还会检查Slide的第二个判定段,如果第二个判定段对应的判定区处于On状态,那么首个判定段也会被解决。这个机制常常被称作跳区。
以上的检查在一帧内会执行多次,直到不产生变化为止。
举例来说,从1直线到5的Slide1-5,按住A1和C不放。
第一帧时,A1被标记为On。然后第2次检查时,发现不产生任何变化(因为C是此时的第三个判定段,不会被检查),结束。
第二帧的第1次检查,玩家松开A1。此时,A1被解决,首个判定段变为B1,第二个判定段变为C。
第二帧的第2次检查,发现第二个判定段(即C)处于On的状态,因此首个判定段B1被跳过,而C判定段则进入了“解决了一半”的状态。
以上的过程,仿佛是因为我们松开了A1,游戏才开始判定,所以常常被玩家称作“松手判定”。
但实际上,我们按下A1时,A1并未被完全解决,自然也就不会去检查C。而松开A1后,C变成了第二个判定段,就会被检查了,因此触发了跳区。这样的过程发生在同一帧内,因此看起来似乎是游戏有着“松手判定”的规则。但是实际上只是因为判定区状态的转变引起了多米诺效应,达成了这样的结果,并没有所谓的“松手判定”的特殊规则。
对于一些Slide,它的某一判定段可以通过两种不同的判定区来激活:
长度为3的直线星星(如1-3),第二个判定区可以是A2或B2。
转折星星(如1V36,如图)的第二个判定区可以是A2或B2。

Slide 1V36
最短的转折星星(如1V35,如图)的第四个判定区可以是A4或B4。

Slide 1V35
(以上两种转折星星的情况,其实都是长度为3的直线星星的变体)
扇形星星(如1w5),对于1-4部分,最后一个判定区可以是A4或D5;对于1-6部分,最后一个判定区可以是A6或D6。
在几种特殊情况中,对第二个判定段的检查会被禁用:
长度为3的直线星星(如1-3),首个判定区为A2/B2时,不检查第二个判定区。即,A2或B2必须被亲自完成,不能被跳过。
长度为3的弧线星星(如1^3,如图),首个判定区为A2时,不检查第二个判定区。即,A2必须被亲自完成,不能被跳过。

Slide 1^3
转折星星中长度为3的部分,类似于长度为3的直线星星一样。如1V36首个判定区为A2/B2时,1V35首个判定区为A2/B2或A4/B4时。
(换言之,所有长度为3的星星,都不能过中间的判定段。转折星星中长度为3的部分也不能跳过中间的判定段)
Slide判定的正解帧为引导星星进入Slide最后一个判定区的时间。
Slide的基础判定区间如下表:

Slide基础判定区间
以上的基础判定区间中的Critical Perfect区间的范围,会随着引导星星在最后一个判定区停留的时长而产生变化。这就是扩展区间机制。
引导星星在最后一个判定区停留的时长,是指引导星星从进入最后一个判定区,到抵达Slide的终点之间的时长。
Critical Perfect判定区间会向外扩大(引导星星在最后一个判定区停留的时长/4)的时长。扩大后的区间会覆盖原先Great与Good的区间,但是最多不会超过Good的区间(即正负36帧)。
举例来说,某Slide的引导星星将会在最后一个判定区停留52帧,区间将扩展13帧。那么,Slide的判定区间将会变为这样:

扩展后的判定区间(一个例子)
最极端的情况下,当Slide的引导星星在最后一个判定区停留的时长超过144帧(2.4秒)时,Slide将只剩下Fast Good(Too Fast)、Critical Perfect和Too Late三种判定。
Touch是一种比较特殊的Note,它没有Fast判定,只有Critical Perfect以及其他Late判定。Touch的判定区间如下表:

Touch判定区间
换言之,即便在Touch出现前就不断尝试触碰这个Touch,也不会获得不好的判定。因此,Touch可以通过“擦玻璃”的方式来“糊”。
在同一时刻出现(即被标注为黄色的“多押Touch”),且彼此相邻的Touch,会相互链接,形成一个Touch-Group。
关于相邻的判断:

相邻的判断表
当Touch-Group中超过半数(>50%)的Touch获得判定后,剩余的Touch也会获得相同的判定。这个判定以最后一个判定的Touch为准。
几个例子:
B1/E2形成了一个大小为2的Group。当B1获得判定后,已判定的占比为1/2=50%,没有大于50%,因此E2仍然等待被判定。换言之,大小为2的Group不会享受Touch-Group机制带来的好处。
B1/E2/B2形成了一个大小为3的Group。当B1和E2都获得Critical Perfect判定后,已判定的占比为2/3=66.7%,超过了50%,因此B2也立即获得Critical Perfect判定。
C/B7/B6/E7/B2/B3/E3形成了一个大小为7的Group。当B7/B6/E7获得Critical Perfect判定后,已判定占比未超过50%。随后,C获得了Late Good判定,此时已判定占比超过50%,因此B2/B3/E3也立即获得Late Good判定。
Touch-Hold判定和Hold十分相似,也分为头部判定和按压判定两部分。
和Touch的判定完全一致
和Hold的机制类似,但是开头忽略的时长变为了15帧(而Hold开头忽略的时长是6帧)。
和Hold的机制完全一致
和Hold完全一致,但是变为了短于27帧(15+12 即450毫秒)的Hold不考虑按压时长。