sunday-labの日本語訳版です。英語版のXOOPS Cube関連記事を翻訳作業中...

2008年1月29日火曜日

The Embedded Script Language for XNA

ここしばらく XNA 用の Lua ライクな組み込みスクリプト言語の開発に挑戦していました。 XNA はフリータイムのプロジェクトに気軽なゲーム開発環境を提供しますが、いかんせん C# のため C/C++ のような「歴史が培ったライブラリ」の蓄積がほとんどありません。 XNA 自体が強力なクラスライブラリのため、ラッパー系のライブラリは不要ですが、 Lua や Lua の後発言語のような組み込みスクリプト言語はやはりフリータイムプロジェクトには必須です。本当は JavaScript などが組み込み可能なのかもしれれません。しかし、 XNA の .NET "コンパクト"フレームワークのための"組み込み"スクリプト言語となると条件は違ってきます。 XNA の Xbox360 エディションでも実行可能でなければならないことを考えると、自作するしかありませんでした。

XNA 以外の環境を考える必要はないので、 VM 自体は、コンテンツパイプライン上でコンパイルされたバイトコードのみを扱い、ガベージコレクションは .NET コンパクトフレームワークに委託する形を最終仕様としました。以下のような仕様があれば十分だと考えています。
  • C# からスクリプトの関数が呼び出せる
  • スクリプトから C# メソッドを呼び出せる
  • 仮想スレッド
  • FSM のサポート
  • コンテンツパイプライン上でバイトコードにソースをコンパイルできる

ひとまずプロトタイプとして基本部分を終了し、そのプロトタイプを開発者仲間に送りました。当初は、スクリプト言語の VM のガベージコレクション機能を .NET に委ねるつもりはなかったのですが、収集されたガベージが即座に破棄されるわけではない(こちらが破棄しても .NET が破棄するとは限らない)ことなどを考えると、 .NET 上で独立した独立したガベージコレクションのために独立したメモリ管理を行うことに意味はないのではと思えてきました。

0 件のコメント: