まず、今回のゲームで核となる機能は次のとおりです。
- 音楽データとパネル表示パターン生成に使うMMLパーサー
- 音ゲーゆえに音がならなければ話しにならないので、ブラウザー上で音を鳴らす(何らかの)手段
- ゲームとして成り立たせるためのフレームワーク
え〜、随分脱線してしまいましたが、本題に戻しましょう。MML自体が読みづらいのは構わないんですよ。人間が読みづらいものとプログラムにとってパースしにくいものは等価ではないので。(今でこそプログラミングを当たり前のようにしているので、MMLのソースを見ても特になんとも思わなくなりましたけど、耐性のない人が読んだら確実に暗号ですよね、あれって。試しに次のソースを読んでみてください。なんの曲だかわかりますか?
@1 t110 l4 cdef edcr efga gfer crcr crcr l8 ccddeeff l4 edcr l2 {ccd}{dee} {ffr}e dc r4 (t2) @0 l4 "ceg""ceg""ceg""ceg" "cfa""cfa""cfa""cfa" "dgb""dgb""dgb""dgb" "gb<d>""gb<d>""gb<d>""gb<d>" "ceg"r"ceg"r "gb<d>"r"gb<d>"r "ceg""dfa" "egb""fa<c>" "dfa<c>""g<cd>""eg<c>"r l2 "ceg""dfa" "egb""cdfa" "dfgb""ceg" l4 "<ceg<c"
正解は「カエルの歌」です。今回の主題のゲームのサンプル曲から引用したものなんですが、これが歌だとひと目でわかるでしょうか?わからないですよね・・・)
いかんいかん、また脱線してしまった。MMLパーサーを作るにあたってなやんだことは、文法の方言の多さなんですね。昔、(それこそBASICの時代)にMMLは隆盛を極めたようで色々亜種が存在するようです。このゲームを作り始めるまでMMLについて存在自体は知っていたものの、具体的にどのような規格なのかまでは知らなかったのでまず、どのような文法があるか調べその中からどの文法を採用するかに随分時間がかかってしまいました。
なんだか技術的な話ではなくなってきてしまったので次行きましょう。
次は音ゲーの命とも言える音なのですが、このゲームを作成するにあたってFlashは一切使わずに完成させたかったので選択肢は2つに絞られてしまいます。一つ目はMozillaが独自に実装しているAudio Data APIを使う方法、そしてもうひとつがW3Cの勧告にもあるWeb Audio APIを使う方法です。
今回の場合、なるべく早く完成させたかったのとドキュメントの充実性という観点から後者を選択することにしました。(まあ、ドキュメントが充実していると言っても実際はW3Cの勧告ドキュメントだったんですが。それでも、ちょっと検索しただけで実働デモ以上のプログラムが発見できたのは大きなプラスでしたね〜)
なんだか今回は余談だらけで長くなってしまったので、一旦ここで切りたいと思います。次回はWeb Audio APIの解説をします。それでは!(^O^)/
0 件のコメント:
コメントを投稿
なにか意見や感想、質問などがあれば、ご自由にお書きください。