Barrage LL(仮)に対する意見兼個人的メモ

そもそもエントリ
http://d.hatena.ne.jp/gintenlabo/20100310/1268250380
一言でまとめると、東方弾幕風は言語が微妙。よって弾幕風の使用感を残したまま、Luaを使った新しい処理系を作りたい、となる。

http://d.hatena.ne.jp/gintenlabo/20100331/1270061923
もう少し具体的な内容はこちら。

  • スクリプトのフォーマットを決める。弾幕風でいう #東方弾幕風 や #Title[○符「スペルカード名」] を、どうやって実現するか。 Lua のコードにするか、それとも専用書式を作るか。

スクリプトフォーマットはコア部分にするとのことだけど、そこに弾幕風との互換性由来な専用書式を混ぜ込むのはよろしくないと思う。#スペカ と書けばテンプレートな演出をしてくれる楽さは取り入れるべきだけど、書式は捨ててもいいだろう。少なくともコア部分からは除くべき。スクリプト先頭行に --BarrageLLScript とか書くくらいはあった方がいいと思うけど。

  • コア部分はどこまで抽象化するか。あまりにも抽象化すると逆に可搬性が下がるので慎重に議論したい。

これは何が言いたいのかちょっと分からない。抽象化し過ぎて可搬性が下がるというのはどういう状況だろう?


というか、まず確認しておきたいこととして、「このプロジェクトは何を目指すのか」ということ。つまり、処理系あるいはゲームエンジンを作るのが目的なのか、言語を作るのが目的なのかということ。ゲームエンジンの方だとは思うんだけど、言語レベルでのあれこれが書かれている割に処理系全体の見通しがわかりにくい。
僕の方の意見はというと、MOD上等にするのであれば、その気になって弄るなら”Luaだけ使って”ほとんどのことが出来る方がいい。つまり気合があれば花映塚だろうが文花帖だろうが出来るのが理想*1。そのためには、多分

  1. C++のお世話になるであろう低水準部分
    • グラフィックスやファイルIOのAPIを叩いたり、LuaのC APIをbindしたりするためのところ。出来るだけ書きたくない
  2. BarrageLL側でライブラリ的に提供するLuaコード群
    • ここのライブラリを使えば、Lua弾幕風並に楽に書ける
  3. ユーザスクリプト

の三階建が必要なはず。二階部分で速度に問題があるなら、C++レイヤー増やせばいいと思う。
(弾幕風は使い込んだ訳ではないので、もしかしたら間違っているかもしれないけど)弾幕風だとタイトルメニューの見た目なんかも弄れないし、シーン遷移も出来ない。完成品のゲームを作るためのエンジン、という位置づけにする場合はUI変更とシーン遷移は出来ないまずいと思う。
自分は何でも超トップダウン思考をするんで、こういうことを書いてみた。

*1:理想は理想であって、まあこれは結構厳しい地点だとは思うけど