今、HTML5(Canvas)+JavaScriptでRPGを作っています。
既にマップのスクロール表示やダイアログ/メッセージウインドウの描画などゲームの描画システム周りは実験も終わり大きな問題はなさそうなのですが、音楽(BGM)が意外にやっかいかもしれません。

HTML5で音声出力を行うaudioタグで音声ファイル再生の実験をしてみると

JavaScriptでAudioオブジェクトを作れない環境がある
AAC/MP3/ogg/wavなど再生可能な音声形式が環境依存で「最低限再生できる共通の音声形式」がない
ループ再生を指定するloop属性に未対応の環境がありループ再生にはイベント処理が必要
再生できるのは「音声」ファイルなので、音楽を鳴らすには「音源から録音」する必要がある

といった点で不安を感じざるを得ませんでした。

特にAudioオブジェクトが作れないのと「録音した音声」を用意しないといけない、というのは辛いですね。JavaScriptで動的に音声再生用のオブジェクトを作ったりMIDI(SMF)の演奏データでBGMを鳴らすことができないわけですから。

ゲームのBGMという目的からすると、状況に応じて作成した音声再生用オブジェクトにSMFファイルを読み込んでイベントなどをきっかけに再生したいわけです。HTML側に作ったaudioタグにアクセスしたり音源を探して録音し(複数のフォーマットで)音声ファイルを作成する、といった余計な手間をかけず。

もちろん、今後ブラウザのバージョンアップでAudioオブジェクトの標準化も進むのでしょうが、当面は「少し古いブラウザへの配慮」も必要ですからねぇ。録音した音声ファイルしか扱えない点についても「audio」タグなら仕方ないか、という気はしますが、やはり「MIDIの演奏情報をブラウザ側で音声化し出力する」機能があれば、BGMなど気軽な音楽再生がずっと楽になるのに……とは思います。

まぁ、ソフト音源でなかなかよい感じのフリーソフトもいくつか見つけたので、とりあえず「先」に進みますか……次は、RPG制作(プログラム開発)でも最大の山場、スクリプト(イベント)処理系の実装が控えていますし。


創作プログラミングの街 > ノート