Lua をゼロから開始する: カスタム ブート スクリプトを使用する

Stingray プロジェクトごとに 1 つの「ブート スクリプト」があります。このブート スクリプトは、ゲーム エンジンがメモリにロードして、起動時に即座に実行する Lua ファイルです。ブート スクリプトの役割は、起動、更新、およびシャットダウン プロセスの事前に決定されたポイントでゲーム エンジンが呼び出す一連の関数の定義を提供することです。独自のブート スクリプト内(またはブート スクリプトによってロードされる他のスクリプト ファイル内)でこれらの関数を実装することにより、ゲーム エンジンがパッケージやレベルをロードおよびロード解除する方法をコントロールしたり、ゲームのワールドをレンダリングしたり、ゲームプレイの条件やユーザ インタフェースの変化に対応したりできます。

ブート スクリプトを指定する

ゲームの settings.ini ファイルの boot_script プロパティ値でブート スクリプト ファイルを指定します。たとえば、次のようになります。

boot_script = "scripts/game/boot/boot"

他の Stingray リソースと同様に、パス内のフォルダ区切り記号には / を使用し、Lua スクリプト ファイルの拡張子は省略することが想定されています。

settings.ini ファイルの詳細については、「Stingray エンジンの settings.ini ファイルのリファレンス」を参照してください。

ゲーム エンジンによって呼び出される関数

Stingray ゲーム エンジンは、ゲーム内でカスタマイズ可能な次のグローバル Lua 関数を呼び出します。

init()

この関数は、ブート スクリプトをロードして実行した直後に 1 回のみ呼び出されます。

通常は、すぐに必要になるリソース パッケージのロード プロセスを開始し、シンプルなスプラッシュ 画面やロード中の画面を表示することがあります。

update(deltaTime)

この関数は、メイン ゲーム ループのフレームごとに 1 回呼び出されます。1 つの引数(ゲームの時間ステップ)が渡されます。

各フレームで実行する必要がある増分更新を実行して、update() に対する前回の呼び出し以降に発生した可能性のあるイベントに応答するには、この関数を使用することが最適です。

この関数は通常、計算中のある時点で現在のゲーム ワールドの World.update() 関数を呼び出して、指定した時間ステップだけワールドを前に進めます。次に、現在このゲーム ワールドで実行されているすべてのアニメーションおよび物理特性シミュレーションを更新します。

render()

この関数は、update() 関数が完了した後に、メイン ゲーム ループのフレームごとに 1 回呼び出されます。

現在のフレーム内で、ゲーム エンジンにどのレンダリング タスクを実行すれば良いのかを指示することが想定されています。一般に、この関数は Application.render_world() 関数を呼び出して、プレイヤーの現在のゲーム ワールドをレンダリングします。また、カメラ、ビューポート、シェーディング環境など、レンダリングに関連するオブジェクトを設定することもできます。

shutdown()

この関数は、ゲーム エンジンがシャット ダウンしたときに、1 回呼び出されます。

これにより、ビューポート、シェーディング環境、ワールドなどの使用中のすべてのオブジェクトが破壊またはリリースされて、メモリ内に残っているすべてのリソース パッケージがロード解除およびリリースされます。

関連項目