BulletML

弾幕記述言語「BulletML」関連


BulletMLとは

最近のシューティングゲームのトレンドである「弾幕」を記述するためのマークアップ言語です。サイバー系シューティングの大御所(?)、ABAさんが考案しました。

どんなものか興味がわいた人は、同ページに「BulletML Demo」というJavaアプレットがありますので見てみるといいでしょう。

白い弾幕くん

白い弾幕くんとは、shinichiro.hさんによって作られた弾幕除けゲームです。様々な有名シューティングの弾幕から、有志の方々が作ったオリジナル弾幕まで、様々な弾幕が装備されています。

この弾幕一つひとつが、BulletMLによって記述されています。Lua言語を用いたLuaBulletというのも使用できるようです。

「BulletML Demo」アプレットと「白い弾幕くん」

どっちも弾幕プレビューに使えますが、ちょっと動作に違いがあります。

<speed>による弾の速度の処理で、「BulletML Demo」ではそのままの数値(負の場合は後退する)として処理されますが、「白い弾幕くん」では絶対値(-3と3は同じ速度)になります。

このため、互換性を持たせるために<speed>はマイナスにならないように注意する事が望ましいでしょう。

なぜこんな事が起こるかというと、BulletMLは弾幕の動作の表現方法を記述するのみで、それを動作させる方法は各プログラムにゆだねられているからです。ウェブブラウザも、全く同じ文章でもInternetExplorerとMozillaでは見た目が違ってきます。それと同じようなものです。スピードなども、ただ「1」とだけ言われても、「何を基準にして1なのか」というのはプログラムによって違っていると考えていいでしょう。角度は度数法であると決まっているようですが。

「白い弾幕くん」の不具合?

自分で作った弾幕をuserフォルダに入れる事でその弾幕がゲーム中に選択できるようになりますが、もしこれに<barrage>タグによる弾幕名などが入っていた場合は、日本語などの2バイト文字に注意してください。

user/test.bmlには「文字コードはSJISです。Windowsな人ならたぶん大丈夫。」とありますが、大丈夫でないことがままあります。文字化けを始め、ワシの環境では「セレクト」モードでユーザー弾幕をリストに表示しようとするだけで強制終了という事態が起こっています。

それで、いろいろと実験を行った結果、<barrageInfo>中に日本語があると、運が悪いと落ちるという事が分かりました。どうやら、ある特定の文字コードが出てくると表示できずに落ちるようです。まだ実験は不十分ですが、確率は高いです。

ってーか、検索してもこの事に関するのが一個も出てこないんだけど。もしかしてワシだけ?

バージョン1.5.8にて修正して頂きました。このエラーはもう起きないでしょう。

わざわざ問い合わせてくださったshinichiro.hさんに感謝します。