こんにちは,Морожеです🛰️*1 この記事を開くような人はだいたい知っていると思いますが,僕は K-Shoot Mania でたまに譜面を書いています。僕がどんな譜面を書くかよく知らない人はとりあえずそこそこ最近の譜面として Schneeball [Böller] とか XeraphieL [LT 19] をご覧ください。
さて,皆さんは K-Shoot Mania 曲線つまみ自動生成ツールを活用していますか?僕は(自分が使うために作ったので当然ではありますが)使いまくっています。
ところで曲線ツールにはこういう便利文字列が書いてありますね*2。この文字列は KSM におけるつまみの位置を示す内部文字(テキストエディタから見れる)を左から順番に列挙したものです。0
とo
は端っこ,P
は中央,C
とb
は非はみだしモード時の0
とo
の位置に対応するはみだしモード時の位置です。
テキスト形式でも載せておきます。
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmno ("最も詳細") 0 2 5 7 A C F H K M P S U X Z b e h j m o ("詳細") 0 5 A F K P U Z e j o ("標準")
さて,皆さんはこの図を見て一箇所明らかにおかしいところがあることに気づきましたか?僕はなんと昨日まで気づいてませんでした(???) 答えは……
↓ シンキングタイム用の空白 ↓
↓ シンキングタイム用の空白 ↓
はい,C
とb
の位置関係がヤバいことですね。表を再掲します。
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmno 0 2 5 7 A C F H K M P S U X Z b e h j m o 0 5 A F K P U Z e j o
なんと左右非対称ですね。別に(非はみだしモード時の)描画位置が実際に対称になっているというわけでもないです。以下の画像は"詳細"モードで置いたときのものです(緑の数字はレーンの線からのピクセル数です)。
左右非対称ということは同時にこの位置にレーザーを出したときに少し傾くということです。赤つまみが左に寄ってるので左に傾きます。以下の画像では分かりやすいように軸に平行な黄緑色の直線を書き入れています。
レーザーをこの位置のまま終わらせると,傾き zero
に緩やかに戻す処理が入るせいで若干レーンが揺れるという一見不可解な現象が発生します。C
と真に対称な位置であるc
に赤つまみを置いた場合は大丈夫です。まぁ一番の問題は"詳細"モードではc
の位置に置けないというところなんですが……
はみ出しつまみとの関係
この記事の最初の方で「C
とb
は非はみだしモード時の0
とo
の位置に対応するはみだしモード時の位置」と述べました。これのせいでc
の位置が変なことになっています。画像の緑の数字はレーンの線からのピクセル数です。
さらに言うと,はみだしモードにおけるC
とb
は見た目としては対称な位置にありますが,値としては非対称なので,はみだしつまみで(非はみだしモードで言う)0
とo
の位置にレーザーを置くとなんと傾きます。え???
さすがにキモい挙動すぎるので,非はみ出し状態のときと同じようにC
とc
の位置に置くことで対処しようとしますが,先述したはみ出しモード時のc
の位置のズレがあるためこんどはレーザーが左右非対称になってしまいます。これはもう完全に仕様のせいでどうしようもないので,傾きを手動で zero に設定しましょう。手動傾き最高‼️*3
まぁというわけで,「はみ出しつまみで C
や b
の位置のつまみに対してエディターの反転機能を使うとなぜかズレる」という話はけっこう有名だと思うのですが,そもそも非はみ出し状態の"詳細"モードで置かれる場所がズレていることが原因というか元凶であるため,このズレの話ははみ出しモードに限った話ではないということですね。実際,青をC
,赤をb
の場所に置いたのちに赤つまみに左右反転をかけると,画像のようにズレていることが確認できます。反転機能は正しく機能しているため,b
の位置はD
に移ります。(これは曲線ツールの反転機能でも同じ挙動をします)
無理押しが発生しうる例
個人的には自分の譜面はわりと常につまみの位置が適当だったりするので描画位置がズレてること自体はそこまで気にしていないのですが,この現象が一番めんどくさいのは非対称性のせいで譜面制作中に無理押しが発生しうるという点ですね。例えば手癖*4で以下のような配置を置いていたとしましょう。
さて,突然ですが前後の辻褄が合わなくなったので入りの赤直角を左右反転して青直角に変えることになり,ついでに次の青直角と繋げることにしました。するとこうなってしまいます。
この青直線は先程の説明の通り始点と終点が異なるため,判定が生じています。プレイヤーにとっては許可なくつまみが外れることになり,何も嬉しくない不幸な仕様ですね。この画像自体は記事のために用意した架空の例ですが,実際に僕が過去に起こしたことのある事案にかなり近いものです。その時は「えっ最も詳細一回も使ってないのになんで……?」って思いましたね。今考えてみれば,最も詳細を使わないせいで生じてしまった問題だったわけですね。う~~ん……
お前今まで譜面書いてきてこのことに気づいてなかったの?
はい(たまに自分の譜面がこう↓なってても気づかないくらいにはつまみ位置を毎回ダイスで決めてるため)
結論
K-Shoot Mania v2 はよ出せ ❗*5