シンプルな音ゲーを作る機会があったのでメモ


先日お仕事でちょっとした音ゲーを作らせていただく機会があったので仕組みについてメモ。

下のリンクが今回制作させていただいたゲームになります。(主に AS3 でのプログラミングを担当しました)
ONI RHYTHM(オニリズム)| ワンダーエージェント:FOURTH SEASON

音ゲーといえば曲のビートとゲームの挙動をシンクロさせないと何も始まらないのですが、今回は SiON を使用してビートとゲームの挙動をシンクロさせています。

曲のビートとシンクロさせる基本的な仕組みはこちら。

SiON MP3 and Beat Example – wonderfl build flash online

 
ビートの同期については、曲のBMPを決めて(サンプルでは BPMAnalyze.estimateBPM() で .mp3 の BPM を取得しています)SiONTrackEvent.BEAT で BPM に合わせてイベントを取得。
このイベント間隔でゲームのタイミングデータ(楽譜)を読んで、曲に合わせたゲームを進行させています。

タイミングデータは 0 と 1 を配列に入れただけのシンプルなもので、さきほどの SiONTrackEvent.BEAT で決められた間隔で読んだタイミングデータの配列の読み取り対象インデックスが 1 のときに音譜(このゲームだと顔のアイコン)を生成しています。
今回は5つのキーを組み合わせて遊ぶゲームだったので、1曲につき5本のトラックを持つタイミングデータを作りました。

タイミングの正誤判定については、今回は 1/8 小節内でタイミングが合えば Good、発音のリアルタイムから規定時間内(たとえば 500 msec など)にタイミングが合えば Excellent と判定するようにしています。

と、こんな感じで、Flash だと SiON のような便利なライブラリもあるため、あまり手間をかけずに音ゲーが作れました。
もしこれと同じような物を js でやれと言われたら…
はい、速攻断りますw