再建を繰り返す街作りゲーム開発(ゲームの初期化を Lua スクリプトで行う)
だいたいのゲームの仕様を考えたので、ゲームの新規開始の処理を実装していきます。
具体的には、新規ゲーム開始時の「この範囲は解放済みのエリアにして、中心には拠点を建てる」といった処理を Lua スクリプトで実現するあたりを実現します。
やったこと
Lua スクリプトで行うためのクラスを作成する
ゲームの初期化や管理は Lua スクリプトで行うことにします。
まずは「こういう記述で初期化したい」という Lua スクリプト作ります。
次に、この Lua スクリプトを実行するあたりを MoonSharp アセットを駆使して実装します。
そして実装しようとして、MoonSharp や Lua スクリプトで発生するエラー原因がわからなくて時間がかかりました。こういうので時間かかりますが、まぁ、こんなもんです。
そして時間が経過してから原因追及を再開して、問題がわかりました。
MoonSharp を利用する際に呼び出すべきメソッド UserData.RegisterAssembly(); の実行が行われていませんでした。うぐわぁ。
別プロジェクトのコードを参照しつつ作業していたのですが、参照しきれていなかったようです。むつかしい。
拠点の建築までを Lua スクリプトで行う
先ほど Lua スクリプトに記述したメソッドを実装して動作を確認します。
具体的には、MoonSharp の MoonSharpUserData を付けたクラスを実装すればオッケーです。
↓ 実装したクラスの抜粋
そして、ここまでが動作したゲーム画面がこれ↓です。
なんというか MoonSharp の機能を使って
- Lua スクリプトを C# から実行する。
- Lua スクリプトから地形や建築の C# のメソッドを呼び出す。
ということを行っています。
見えにくいですが、中央に拠点が配置されているのがわかります。大変よいです。
まとめと今後の予定
ゲームの初期化やイベントなんかを Lua スクリプトで行うことにして、その枠組みを用意して動作するのを確認しました。大変よいです。
次回は Lua スクリプトまわりの続きか、ワーカーが移動したり働くあたりに着手したいと思います。がんばります。