太鼓の達人のスクロール速度の求め方

シミュレータ作るときに参考になるんでメモ。

太鼓の達人の音符のスクロールはいわゆるBEMANI系音ゲーとは違い、BPM変化する位置からスクロール速度が変わるのではなく、個々の音符ごとにスクロール速度が決まっていてそれが流れていく感じです。

BEMANI系音ゲーは急にBPMが遅くなると難しいですが、真逆で太鼓の達人では急にBPMが上がる方が難しく感じる人が大半だと思います。

また、太鼓の達人では4拍子の場合、1小節の長さ=レーンの長さになるよう決まっているので、レーンの長さ、曲のテンポが分かればどこに音符を置くべきかがわかります。

ただし、例外として、先ほどいった場合のように4拍子ではない(3/4拍子、6/8拍子)場合と、ハイスピード(スクロール速度)が1以外(1が等速とする)の場合、1小節の長さ=レーンの長さではなくなる場合があります。


この曲(カレ・カノ・カノン)は4/4拍子で、このように低速スクロールになる区間があります。このとき、小節と小節の距離は760px、太鼓の達人自体のレーンの長さが948pxなので、760/948 = 0.801… という計算ができます。これで、ここのスクロール速度が0.8であることが分かります。スクロール速度が1以上の場合でも、スクリーンショットを何枚か撮り足していけば分かります。

この曲(さよならワーリャ)のこの区間のスクロール速度は1です。先ほどの例外を考慮すると、小節と小節の距離は712px、712/948 = 0.751… となるので3/4拍子であることが分かります。

さて、本題。シミュレータを制作するに当たってどこに音符を置けば良いかを計算する必要があります。1小節の長さは以下の数式で得られるので、まずはこれを計算します。

240 / T

T: BPM。

1小節の長さ=レーンの長さ と決まっているので、音符が反応する時間から現在の時間を引いたものを、1小節の長さで割ります。すると、1小節分に関しては0~1の間の実数になるので、これにレーンの長さを掛けると、その音符がどこに位置するかが分かります。

(Δt / < 1小節の長さ > ) * w * s

Δt:音符が反応する時間 – 現在の時間

w: スクロール範囲

s: スクロール速度