今回CHUNITHMにはまって音ゲーをつくろうと思っているのですが
音楽と譜面を同期するにはどうしたらいいのでしょうか
Dixqさんの「太鼓の鉄人」のコードを覗いてみたのですが
音楽との同期は何をやっているのかよくわかりませんでした
あれは一体何をやっているのでしょうか
音ゲーにおける音楽との同期
- Dixq (管理人)
- 管理人
- 記事: 1661
- 登録日時: 13年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: 音ゲーにおける音楽との同期
音ゲーを作る時は音楽の時間が第一です。
リアル世界の1秒よりも実際に音楽が流れた1秒が優先なのです。
で、今何秒音楽が流れたかを測定しながらUpdateとDrawを合わせます。
基本的にゲームは大きく分けて各モジュールを
Update();
Draw();
の2つにわけて作成します。
このうち、時間がかかるのはほとんどDrawです。
よってDrawを必要な分だけスキップするのです。
60FPSで動いているゲームにおいて1フレームは1/60です。
現在音楽が流れている時間をこのフレーム数に合わせます。
オーバーしていればDrawをその分だけスキップしてやり、
足らなければSleepしてまつことで
ゲーム時間と音楽時間を一致させているのです。
リアル世界の1秒よりも実際に音楽が流れた1秒が優先なのです。
で、今何秒音楽が流れたかを測定しながらUpdateとDrawを合わせます。
基本的にゲームは大きく分けて各モジュールを
Update();
Draw();
の2つにわけて作成します。
このうち、時間がかかるのはほとんどDrawです。
よってDrawを必要な分だけスキップするのです。
60FPSで動いているゲームにおいて1フレームは1/60です。
現在音楽が流れている時間をこのフレーム数に合わせます。
オーバーしていればDrawをその分だけスキップしてやり、
足らなければSleepしてまつことで
ゲーム時間と音楽時間を一致させているのです。