判定の仕様について
ノーツの種類と指の状態による判定
ノーツの種類 | ダウン | ホールド | アップ |
---|---|---|---|
タップノーツ | ○ | ✕ | ✕ |
ロング始点 | ○ | ✕ | ✕ |
ロング中継 | ✕ | ○ | ✕ |
ロング終点 | ✕ | ✕ | ○ |
ファジーノーツ | ✕ | ○ | △ |
ファジーロング始点 | ✕ | ○ | ✕ |
ファジーロング中継 | ✕ | ○ | ✕ |
ファジーロング終点 | ✕ | ○ | ○ |
判定済みの指を離したときにファジーノーツをアップ判定しません。
ロングを掴んでいる指を除いてロング終点はアップ判定しないようになっています。
デフォルトの判定幅
判定幅(前後片方の時間) | |
---|---|
Brilliant | 50ms |
Great | 100ms |
Fast/Slow | 120ms |
Bad | 150ms |
ロング時間補正 | 33ms |
ファジー判定開始時間 | -16ms |
判定幅(横の距離) | |
---|---|
通常 | 0.55 (0.5でレーン1つ分) |
ロング横幅補正 | +0.5 |
判定の形
縦が時間、横が判定ライン上のX距離として、
GREATの閾値からBADの閾値に掛けて三角形にしています。
ロング時間補正は「BRILLIANT」「GREAT」の閾値にプラスされ、
GREATの閾値からBADの閾値までの判定範囲を三角形にする箇所も影響を受けます。
判定の優先度
判定範囲内から近いノーツを選んで判定します。
少しタイミングのずれた隣接ノーツをタップした場合、
X座標よりも時間を優先するため、下の図で①を取ります。
フレーム誤差補正について
判定する時の「ジャストからのズレ」をジャストからのズレ = [タッチした時の曲の再生位置] - ジャストとなる曲の再生位置
このように求めるとします。
ポーリングレート毎の入力を受け付けた「タッチした時のゲーム内時間」を使って、
ダウンとアップ判定に対してフレーム誤差補正を次のように対応しています。[タッチした時の曲の再生位置] = 現在の曲の再生位置 - (現在のゲーム内時間 - タッチした時のゲーム内時間) * フレーム誤差補正(0~1)
ちなみにAndroid、iOSでは「ポーリングレート」という名称より「タッチサンプリングレート」と呼ぶようです。
ロングを掴んでいる指について
ダンカグライクではノーツとは別にロングそのものに判定があります。
ロングはどの指で押されたか一度だけ判定し、その時の指情報を持っています。
ロング終端のアップ判定を行う際に掴んでいる指を上げた時のみ判定が有効になります。
(バージョン#37でロング開始ノーツ判定時にロングに指を割り振る処理を追加しました。)
ロングを途中で離した時の仕様
■ 緑のファジーロングを途中で離したとき
・中継ノーツ間のラインだけ消えます。(ノーツは残ります)
■ 青のロングを途中で離したとき
ロングは3通りあります。
・最後のポジション間のライン → 最後のラインと終点ノートが消えます(Missになります)
・最後から1つ手前のポジション間のライン → 最後までのライン2つと最後の中継と終点ノーツが消えます(※2つMissになります)
・その他のポジション間のライン → 2つ先までのラインが消えて、ライン間にある中継ノーツが消えます。(Missになります)
■ 共通事項
・ロングを掴んでいる指がリセットされます。
リザルトの判定表示
サムネイルの枠内をタップすると判定調整の値を表示させることができます。
イラスト出典:ryosios様 (https://www.pixiv.net/users/1508165)