組み込みスクリプトの組み込み(1)

 さて、ようやく色々目処がついてきたので、これまでの経験を元に、ゲームフレームワークを作っていきたいと思っています。

 当面は、フレームワークの話は無しで(爆)、Luaを外部スクリプトとして組み込む作業を進めて行きます。なにをLuaに担当させ、なにをさせないのかが重要なポイントです。

 とりあえず、昔書いたコードを引っ張り出して動作を確認しつつ、最新の5.1にLuaをアップデートして……とやっていたら、5.1が全然動かない。試行錯誤の結果やっと動いたので、ネイティブ言語側からの5.0->5.1の(コード修正が必要な)変化についてメモって起きます。

lua_openはluaL_newstate(新しいLuaステートを開始する)のシンタックスシュガーになりました。

lua.h
#define lua_open()	luaL_newstate()

luaL_newstateは、lua_newstate(メモリ確保関数をユーザーが指定出来る)の、標準版(cのreallocを仕様)です。

lua_dofileは無くなりました(なんで!! しかもドキュメントに記載無いし!)。lua_loadファイルだけでは構文木解析のみで、チャンクが実行されないので、以下のように、明示的に実行する必要があります。

if(luaL_loadfile(lua, "test.lua") != 0 || lua_pcall(lua, 0, 0, 0) != 0){
	//エラー処理
}

これがわからなくて昨日数時間をつぶしました。へたれでごめん……orz まあ、わからんんでも無い仕様変更ではあります。