太鼓の達人のスクロール速度の求め方
シミュレータ作るときに参考になるんでメモ。
太鼓の達人の音符のスクロールはいわゆる BEMANI 系音ゲーとは違い、BPM 変化する位置からスクロール速度が変わるのではなく、個々の音符ごとにスクロール速度が決まっていてそれが流れていく感じです。
BEMANI 系音ゲーは急に BPM が遅くなると難しいですが、真逆で太鼓の達人では急に BPM が上がる方が難しく感じる人が大半だと思います。
また、太鼓の達人では 4 拍子の場合、1 小節の長さ = レーンの長さになるよう決まっているので、レーンの長さ、曲のテンポが分かればどこに音符を置くべきかがわかります。
ただし例外として、先ほどいった場合のように 4 拍子ではない (3 / 4 拍子、6 / 8 拍子) 場合と、ハイスピード (スクロール速度) が 1 以外 (1 が等速とする) の場合、1 小節の長さ = レーンの長さではなくなる場合があります。
この曲 (カレ・カノ・カノン) は 4 / 4 拍子で、このように低速スクロールになる区間があります。このとき、小節と小節の距離は 760 px、太鼓の達人自体のレーンの長さが 948 px なので、760 / 948 = 0.801…
という計算ができます。これで、ここのスクロール速度が 0.8 であることが分かります。スクロール速度が 1 以上の場合でも、スクリーンショットを何枚か撮り足していけば分かります。
この曲 (さよならワーリャ) のこの区間のスクロール速度は 1 です。先ほどの例外を考慮すると、小節と小節の距離は 712 px、712 / 948 = 0.751…
となるので 3 / 4 拍子であることが分かります。
さて、本題。シミュレータを制作するに当たってどこに音符を置けば良いかを計算する必要があります。1 小節の長さは以下の数式で得られるので、まずはこれを計算します。
240 / T
T: BPM。
1 小節の長さ = レーンの長さ と決まっているので、音符が反応する時間から現在の時間を引いたものを、1 小節の長さで割ります。すると、1 小節分に関しては 0 ~ 1 の間の実数になるので、これにレーンの長さを掛けると、その音符がどこに位置するかが分かります。
(Δt / < 1小節の長さ > ) * w * s
Δt:音符が反応する時間 – 現在の時間
w: スクロール範囲
s: スクロール速度