東方弾幕風の不満点、およびその解決策 - 野良C++erの雑記帳
で発表したプロジェクトを、そろそろ本格的に動かしたいです。
というわけで、とりあえず、開発場所だけでも確保してみました。
http://github.com/gintenlabo/BarrageLL
名前は BulletML をリスペクトして、 BarrageLL にしようと思います。
弾幕記述用の軽量言語、というワケです。
というわけで BarrageLL の具体的な製作に移りたいと思います。
同志は引き続き募集中。あと、もっと良い名前案とかも募集中。
以降、すべきことリスト(随時更新):
- スクリプトのフォーマットを決める。弾幕風でいう
#東方弾幕風
や#Title[○符「スペルカード名」]
を、どうやって実現するか。 Lua のコードにするか、それとも専用書式を作るか。 - とりあえずサンプルとして、適当な弾幕風スクリプトを書き換えてみる。その際、互換性重視の書き方と、「BarrageLLらしい」書き方の双方を試す。その為に適切な弾幕風スクリプトを見つけるか、あるいは自分で用意する。
- 命名規則を考える(今のところ、グローバルなテーブル
BarrageLL
に格納、コア関数はsample_function
的な命名規則、弾幕風互換関数はSampleFunction
的にする予定)。 - コア部分はどこまで抽象化するか。あまりにも抽象化すると逆に可搬性が下がるので慎重に議論したい。
- 弾幕風の弾スクリプトや敵スクリプトに対応する機能をどうするか(今のところテーブルで実現予定)。
- 弾幕風互換の為に、弾幕風の動作を解析する(例えば
SetMovePosition03
の「重み」とは具体的にどんな値なのか、等)。 - Luaの標準ライブラリはどこまで提供するかを決める(主に io と os 関連)。
- 連続スクリプト再生に対する挙動はどうするか(今のところグローバル変数を全て引き継ぐ方針)。
- 東方弾幕風の作者さんに素材の使用許可をもらいに行く(許可して貰えない場合は素材を自分で作る)。
- 一緒に議論してくれる協力者を探し出す(一番大事)。