読者です 読者をやめる 読者になる 読者になる

プログラミングの魔物

エラー、バグ、仕様変更と戦うブログ

スクリプト言語の選択

スクリプト言語による効率的ゲーム開発 3章

ゲームに組み込むことができる汎用スクリプト言語はいくつか存在する。
それらの言語の選択基準についての解説の章。
流し読みする。

ライセンス

規約によってはソースの開示が必須だったりする。

比較的商用利用しやすい

  • 修正BSDライセンス。ソースやドキュメントに著作権表示が必要。BSDライセンスから広告表示を除いたもの
  • MITライセンス(X11ライセンス)。ほぼ修正BSDと同じ
  • zlib/libpngライセンス。ソースコードを配布する際には元の著作権表示が必要。バイナリは不要

商用利用が難しい

  • GNUライセンス。コピーレフトという概念に基づき、組み込んだらすべてのソースの開示が必要

利用方法によっては商用利用可能

  • LGPLライセンス。コピーレフトだが最終的にライブラリとして分離しているなら他の部分の公開は求めない

動作環境

動かないライブラリは使えない。
LuaANSI標準のCで動くので対応環境は幅広い。
他にはC++で動作するSquirrel、メジャーな環境に対応しているPythonRubyなど

メモリ管理機構

メモリリークしたりクラッシュしたりするのは困る。
ガベージコレクションを備えているものは解放の手順を簡略化できる。

速度

  • 基本的な実行速度については比較サイトなどを参照
  • メモリ管理速度。Luaは5.1からインクリメンタルGCになったので、より安定して使用出来る
  • 高速バージョン。JITのように最適化されたコンパイラLuaにもLuaJITがある。PythonにはPsycoというバージョンがある

バインド機能

リロード機能

  • 実行中にスクリプトを動的にリロード可能
  • 実行時に関数やクラスの再定義が可能

メモリ消費

  • 処理系自体のサイズ
  • 実行時のメモリ消費量

安定性

  • 十分にテスト、デバッグされているか?
  • 採用例は十分にあるか?

ソースが公開されている

  • 言語自体のソースを修正可能か?

記述性

  • 文法が分かりやすい
  • 多様なデータを定義できる
  • 十分な言語機能を備えている

外部のツールとライブラリ

候補となるスクリプト言語

まとめ

採用例が多く、様々なプラットフォームに対応できて、ドキュメントも充実しているLuaを選択すると安心。
Squirrelが問題にしていたGCもLua5.1では別の方式を採用し、よりゲームに組み込みやすくなった。

この記事で読み進めている本

スクリプト言語による効率的ゲーム開発 新訂版 (LuaとC/C++連携プログラミング)

スクリプト言語による効率的ゲーム開発 新訂版 (LuaとC/C++連携プログラミング)