ゲーム開発とスクリプト言語

http://d.hatena.ne.jp/keim_at_Si/20050518/に便乗。

まずはkeim_at_Si氏の述べている、どこまでをスクリプトで記述するのかという問題。

  • スクリプト処理させると便利そうなもの
    • ゲーム中の細かなパラメータ
    • 敵のデータ・挙動
    • メニュー画面やステージ毎の処理

とりあえず、今後確実に種類が増えていくだろう物や、
細かな調整が必要なものをスクリプトに投げるとよさそう。
Luaはテーブルによる柔軟なデータ記述が行えるので、
まさにこういった用途にピッタリの言語だと思う。


あとコンポーネント設計とスクリプトは非常に相性がよさそうなので、
スクリプトで動的に型を生成することで継承ベースの設計でありがちな、
「敵一種類ごとに1クラス」「ダウンキャストしまくりんぐ」
な状況を避けることが出来そう。

次に、スクリプト導入の必要性について

思いついたスクリプト言語のメリットとデメリット

  • メリット
    1. パラメータなどの細かな調整に伴う再コンパイルの手間を無くす。(開発効率の向上)
    2. 開発者以外の人もデータに手を入れることが出来る。
    3. ユーザーによる拡張が期待できる。
  • デメリット
    1. 実行効率はネイティブコードの1/10以下と大幅に低下する
    2. スクリプト実行のコンパイラまたはインタプリタを書く必要がある。
    3. スクリプトの設計が不味いとスパゲッティコードを量産する羽目になり、かえって開発効率が低下する。
    4. 新たにスクリプト言語を習得する必要がある。


メリットの1に関しては、速い開発マシン&小規模なプロジェクトではほとんど影響は無さそう。
メリット2にしても、個人開発だとプログラマ=ゲームデザイナな状況がほとんどなわけで、
自分以外の人間が弄ることは少ないだろうと思う。
keim_at_Si氏のおっしゃる通り、個人での小規模なシューティングなどの開発では
わざわざいらぬ苦労をしてスクリプト導入する必要は無いのかなあという感想。
RPGやADVだと逆にスクリプト導入は必須になりそうだけど。


メリット3に関しては面白い可能性があると思う。
Luaスクリプトをサポートするkeyword:RigidChipsは、
ユーザー同士の情報交換でどんどん凄いモデルが製作されている。
もちろんゲーム本体のスクリプトサポートが強力なことが前提だけれど。


漏れの場合は、勉強だと思って小規模ゲーでもスクリプト使いまくりでいきまつが。
Luaのcoroutineは状態偏移しまくりなオブジェクトの記述に便利だし。