IGDA SIG-GT12「ゲームにおけるスクリプト言語の現状」のレポート
http://www.igda.jp/modules/eguide/event.php?eid=58へ行ってきた。
CRI Scriptの実装の話が面白かったです。
メモをとりました。内容は保証しませんので…
CriScript @ errorの人
- 趣味と実益をかねて開発
- コンシューマーゲームのゲームエンジンの組み込みをやっている
- 大規模ゲーム開発では、スクリプト言語はスタンダード 特にヨーロッパ、アメリカ
- 予言 五年後、ゲームコードの殆どはスクリプト言語で記述される。
- CriScript オープンソースのECMA262実装 Win32/Xbox360/OSX/iPhone
- SPUにも移植したいが…
- 標準仕様の採用
- 利点 ある程度こなれた言語仕様 既存のテストコードが使える オープンである
- 欠点 仕様規模が大きい(ゲームには不要そうな機能も) ヲレ拡張が難しい 組み込みに向いていない仕様もある
- Webのアクセス数
- 200-300/day アメリカ、日本、 意外とロシアが多い。
- 実装編
- flexは使わないで自前コード
- バイトコードの選択がパフォーマンスに影響する。慎重に。
- Q バイトコードの乗り換えはどれくらいかかるのか。
- A やりたくない。 コードジェネレータとVMを書き換えないといけない。
- スタックマシン
- 実装が容易
- ディスパッチループ
- 単純なスイッチ文
- ダイレクトスレッド、コンテクストスレッド やってみたがあまり効果が無かった。
- Q スタックマシンが最適でない どれくらい違うと考えているのか by 笹田先生
- A スタックだと、4回かかるバイトだと1回でできる。3,40%早くなるのは
- Q コードをみたけど、最適化の余地がるby 笹田先生
- A ためしてみます。
- BooSt::Regenを使ったらVMの30%のコード
- 今後はいらないライブラリをリンクしないようにしたい。
- ネイティブコード生成
- CriScriptでは
- 静的なevalのみ許可
- パフォーマンス
- ネィティブコード比 1/7-1/20ぐらいのパフォーマンス
- Luaのパフォーマンスをリファレンスにしている。
- 最適化の軸
- 最適化の例
- error参照
- 非常にショックを受けて最適化を行った。
- どっかに書いてある。お
- フットプリント
- IXMF
Luaの発表とパネルのメモもあるけど、中途半端すぐる。