好き勝手に・げーあにん?

ファミコンと同い年の社会人ヌルオタの日記

『スクリプト言語による効率的ゲーム開発 C/C++へのLua組込み実践』読んだ

ちょうど汎用スクリプト言語の組み込みを考えていた私にとっては、良いヒントをたくさん得られた一冊でした。

ゲーム開発において、何をどのようにスクリプトにすれば効率的なのかを、しっかりと理解している方が書いてるんだろうなという事を、随所で感じました。

以下、覚書き。


そういや、Xtal の人、最近ブログ更新されないけど、忙しいんだろうか。よし!

Lua って引数の数、違ってても何も言わないのか。対策必要?

クラス風味の文法がカッコイイwww*1 self 省略できるのかと思ったら、関数定義で省略できるだけで、関数の中身を書くときには省略できないのね(´・ω・`)

リロードに関してかなりのページ数を割いているのが印象的。実際に使っていく上で苦労があったりなかったりしたんだろうなー。と思いつつ、プログラマ以外に使わせようか検討中という立場で、この本を読んでいた私は、流し読みしただけでスルーしたのであった(えー)。シナリオやイベントハンドラ的に使うなら、セーブデータからの復帰+確認したいイベントの直前の大雑把な再現だけできれば、変数保持とかややこしくなそうなことは考えずに、全部作りなおすのがいいかなーと。妙なバグが生まれずに済むし、セーブからの復帰確認は大切だし。AI ならその AI の動作だけを確認するような仕組みを作ったうえでの生成しなおしかなー。

コルーチン。使ったことなかったけど、これは良いものですね。例として書かれているコルーチンを使わない場合の例が、あるあるすぎる。アニメーションと絡むような画面推移のある箇所とか、コルーチンを使いたいところのために Lua を組み込んでみてもいいかとも思った。

GC。Lua5.1 からインクリメンタルGC になったらしい。ゲームで使うなら GPU Sync と垂直同期待ちでの手動呼び出しだろうなー。パフォーマンスに関しては、実際の規模擬似再現でもしないとなんとも。

Lua での基本数値型を double 以外にしたいとき。

#define LUA_NUMBER float

言われてみれば、double か float かが選べるのってかなり重要だ。他の言語を選択肢に入れるときは注意しないと。って、普通に組み込み前提の言語ならこのぐらい考えられてたりするんだろうか。基本数値型が変えられるのはいいけど、整数型と小数型は分かれていて欲しい気はした。float にしてしまうとビットフラグのような事をする場合は注意。32bit カラー値も別の型で渡すか、RGBAの4つにわけるとかしないとなー。

文字コードLua は Shift-JIS だと問題あるらしい*2。使うなら UTF-8EUC が良さそう。


汎用言語の組み込みに対するやる気が俄然上がってきた! が、前のプロジェクトで疲れたので*3しばらくプログラミングしたくない!!(えー)

*1:http://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html#2.5.9

*2:本の筆者がSJIS対応版を作っているらしい

*3:まだ完全には終わってないけど、ほぼ終わってだいぶ暇