ゲームといえばメインループと言っても過言ではありません、嘘です過言です。
今までの僕のメインループの書き方は簡単に書くと
// C++側にメインループがある状態 int mainloop() { while(動作中なう?) { ゲーム内のオブジェクト処理(); 画像の描画処理(); 次フレームまでウェイト(); } return 0; }
こうなっていたわけで、Luaを使うにあたってオブジェクト処理の部分でLuaのメインループ用の関数呼出にしていたのです。
でも別にこういうやり方でもいいんですよね。
-- Lua側にメインループがある状態 function mainloop() while 動作中なう? do オブジェクト更新(); C++側の描画+ウェイト処理を呼出; end end
まぁどっちにメインループがあるのかってことだけなので、大した問題ではないんですが。
みんなのバイブル「スクリプト言語による効率的ゲーム開発」でも両方の書き方が紹介されてて本の中では前者のほうでやっていきましょうって流れになってました。後者のほうはコルーチンとかない言語だと便利よね、とのこと。
僕が使うのはLuaなので普通にコルーチンもありますし前者でいいんですが……
RGSS*1に慣れてて、後者のほうが自然な感じがするんだよね(
どうでもいいことに悩むのが僕です。
*1:RPGツクールXP/VXの中に搭載されてるスクリプト(Ruby)。僕にとってツクールVXはRubyのWindows用ゲーム作成ライブラリ