ゲームとかするよ

ゲーム制作・ゲームを遊んだ事に関する記事を書きます。

音ゲーにおける楽曲の進行に伴う譜面の描画位置

1. はじめに

この記事では,音ゲーにおける、楽曲に進行に伴う譜面の描画位置を導出する.

2. 譜面が時間に伴って動かない時の音符の位置

まず,音ゲーの譜面が楽曲の進行に伴って動かない状態について考える. はじめに,BPM(Beats per minute)とは1分間あたりの4分音符の数の事である. したがって,1拍,すなわち4分音符の時間の長さは

\frac{60\cdot1000}{BPM}[ms]

と表される.

また,この時に画面に表示される,4分音符の時間の長さに対応する画面上の描画距離をBとする. 次に,楽曲の再生位置がX[ms]である時の長さに対応する画面上の描画距離をAとする. この時,

A:B=X:\frac{60\cdot1000}{BPM}

A\cdot\frac{60\cdot1000}{BPM}=B\cdot X

A=\frac{BPM\cdot B\cdot X}{60\cdot1000}

が成り立つ.

3. 譜面が時間に伴って動く時の音符の位置

次に,譜面が楽曲の進行に伴って動く場合について考える. 楽曲の現在再生時刻をX_0[ms]とおき,X=X_0[ms]の時に画面上の描画位置がA=0となるとすると,

A=\frac{BPM\cdot B\cdot (X-X_0)}{60\cdot1000}

これで,楽曲の時間が進むにつれて,設定した再生位置の音符が移動する事になる. これを,Cだけ全体を平行移動する事を考えると,

音符の描画位置 A=\frac{BPM\cdot B\cdot (X-X_0)}{60\cdot1000}+C

と表す事が出来る. これで,譜面の音符の描画位置を計算する事が出来る.

4. 1小節を8分割した際の音符の再生時刻

また,譜面において,N小節目のM個目(M=0,1,2,3,4,5,6,7)の再生時刻X_{N,M}は, 8分音符の長さに,譜面の位置を掛け合わせたものになるから,

\frac{60\cdot1000}{2\cdot BPM}\cdot(8N+M)

と表される.

参考文献: 1.音楽ゲーム開発に挑戦してみた - Tech Inside Drecom