見出し画像

BeatSaberのマッピングでノーツの上下が合わない時に読むべき数学的考察

※本記事はある程度マッピングに慣れている人向けです

 BeatSaber のカスタムマップを作る際には、いくつかのルールやマナーがあります。

  1. ダブルディレクションを置かない

  2. 青始動、切り下げ始動で始まるようにする

  3. スイングスピードの急激な変化をさせない

 「1.」はルールに近く、「2.」と「3.」はマナーに近いと思います。最終的にはマッパーの判断に委ねられますが、特にこだわりがなければ守った方がよいとは思います。ただ、ノーツの数の関係上、どうしてもこれを守れない時は存在します。ある程度はノーツを置いていきながら試行錯誤をするのも楽しいですが、慣れてくると無駄な試行錯誤は避けたいです。

 そこで今回は「次のパートまでに上記の 1,2,3 を守りながら配置できるか?」を高速に判定するアルゴリズムを提示したいと思います。

4の倍数なら何も悩むことはない

 まず大前提を言うと、置くべきノーツの数が 4 の倍数、より正確にいうと 4 あまり 0 ならば何も考えることはありません。ノーツの色と方向は自然に以下のような形に定まります。(ここでいう方向とは、絶対的な方向ではなく、いわゆるフォアハンド、バックハンドのことになります。以下同様)

親の顔より見たストリーム

 言い方を変えれば、4 あまりが 0 ではない時は単純な解決は不可能です。そいう時は対策が必要になります。

対策 1 ダブルノーツを入れる

 4 あまり 3 の時を考えてみます。

 このままでは周期が途中で終わり、次のパートを青切り下げ始動でやると、赤がダブルディレクションになります。

これで解決

 そこで、途中のノーツをダブルノーツにすることでこれを解決できます。本来は「ここで音を強調するべきか?」など、他にも考えるべきことはありますが、本記事ではそういったレベルまでは考慮しないものとします。

 つまり、ダブルノーツを 1 個入れることは、周期を 1 進めることだと解釈できます。

対策 2 青(赤)を連続して入れる

 4 あまり 2 であるようなリズムを考えます。

 このままでは周期が途中で終わり、青も赤もダブルディレクションになります。

 そこで、以下のようなパターンを考えます。

 このようなパターンは、多くの譜面で見られるものです。

 では、片方の色を連続して入れることは周期を 2 個進めることなのでしょうか? 多くの場合そうですが、実は厳密には違います。これについては後で説明します。

周期の模式図

 さて、今までの議論を図で整理するために、上のような模式図を用意します。

 青の切り下げ始動で始まって、次もそこで始まるというのは、上の図のホームポジションから始まって、いくつかのノーツを経由した後、またホームポジションに戻ってくる経路を描くということです。

 上で述べた対策 1 は、模式図では以下のようになります。

 上で述べた対策 2 は、模式図では以下のようになります。

 ちなみに、この図でいうと下の行は、いわゆる赤始動の流れになっていることがわかります。つまり、片方の色を連続して置くことは、青始動の流れと赤始動をスイッチすることだと解釈できます。

 ダブルノーツとスイッチを組み合わせれば、原理的にはただ一つだけノーツがある場合を覗いて、ホームポジションに戻ってくる経路を実現できます。しかし、これには罠があります。

ダブルノーツやスイッチを置ける条件

 実は、ダブルノーツやスイッチを置ける条件があります。それはノーツ同士の時間的な間隔が開いている時です。これはなぜかと言うと、専門用語でいうと有効スイングスピードが倍になるためですが、マッピング経験のある人だったら、画面を見た方が速いでしょう。

V1でよく見られたギャロップ配置。左手にとても負担がかかる。

 このように、間隔が詰まった状態でダブルノーツやスイッチを置くと、局所的にスイングスピードが倍になります

 また、スイッチを置いた場合、左手始動になってしまった流れを右手始動に戻すために、もう一度スイッチを置く必要があります。

 以上のことをまとめると、スイングスピードを保ったまま周期を調整するには、最低 2 箇所は時間的な間隔があいた場所が必要であることがわかります。

 模式図に説明を加えると、以下のようになります。

スイッチで周期を調整できる条件

 また、スイッチを置くことで周期をズラせるにはもうひとつ大事な条件があります。それはスイッチにより分離されたパートのノーツ数が奇数であることです。これは数学的に証明できます。

 スイッチで挟まれたパートのノーツ数の分だけ、周期は逆行する。 A 個のノーツがすべて上の行ならば、周期は A だけ進む。その内、B 個のノーツが逆行する場合、順行するノーツは B 減り、逆行するノーツは B 増えるため、進む周期は A - 2B となる。
 つまり、B が偶数の時、周期は 4 の倍数減り、B が奇数の時、周期は 4 の倍数 +2 だけ減る。4 で割ったあまりを考えると、偶数の時は何の影響も受けず、奇数の時は 2 進む(-2 と +2 は、4 で割ったあまりは同じ)。

 まあ、これもマッピングの画面を見れば一目瞭然かと思います。

なんとかなる時
なんとかならない時

結論:判定法

 以上の考察から、結論となる判定法を述べます。

ある区間に含まれるノーツの数を n とする。
n を 4 で割ったあまりが、
・0 の場合 … なにも調整は必要ない
・1 の場合、かつ
  ・ n = 1 の場合 … どうやっても調整は不可能
  ・ n ≠ 1 の場合 … 周期を 3 進める調整が必要
・2 の場合 … 周期を 2 進める調整が必要
・3 の場合 … 周期を 1 進める調整が必要


この記事が気に入ったらサポートをしてみませんか?