プラガブルシューティングシステム

ネタとして。
後からユーザーが追加拡張可能なシューティング基盤。
ようするにシューティングゲームエディタのベースになる部分の仕組み。


・ゲーム基盤、シーン、ゲーム内オブジェクトのクラスで構成される。
・シーンとオブジェクトはクラスごとにファイルをわけて、それぞれ特定のディレクトリに格納する。
・ゲーム基盤はディレクトリ内のファイルを全部loadし、クラスを定義する。
・設定ファイルにシーンの遷移順、遷移条件を記述しておけば、その設定どおりにシーンは遷移する。初期化→タイトル→メイン→ゲームオーバー、みたいな。
・自機選択のシーンを作ってディレクトリに格納して、設定ファイルのタイトルとメインの間に挟めば、自機選択が追加できる感じ。
・ステージデータはフレーム・敵クラス名・パラメータで構成される感じ。
・だから、敵クラスを作ってディレクトリに格納してステージデータを作れば敵の種類を増やせる。


別に目新しいこともないが、動的にloadするところがポイントか。
こうすることによって、シューティングエディタを作ったときに、他人が作った敵や弾をディレクトリにコピーすれば、ようするに自分でコードを書かなくてもゲームが作れるのではないか、という話。
大切なのはベースになるゲーム基盤の設計で、シーンや敵や弾を柔軟に作ることができる仕様にする必要がある。
いろんな人にコードを書いてもらうなら、バージョンアップで動かなくなっちゃうようなものでは困るから、後の互換性を考慮した作りにしなければならない。


基本的にはクラス名.new(パラメータ)で作って、毎フレームupdateを呼びますよ、って感じに、まあ、なるのだろう。
敵などが参照するためのシステム側のグローバルオブジェクトと、システムが参照するための敵などに作らなければならないメソッドを仕様として策定すれば、あとはそれに従ったものを作るだけで動くようになる。
それからエディタで設定可能なパラメータをどのように表現するか、とか。


モノ自体はありがちだが、エディタもゲームも、ステージデータやオブジェクトやシーン遷移まですべてを動的に解決する、このあたりがRubyならでは、かな。