執筆者 : K.T
はじめに
UE4 には、ブループリントというビジュアルスクリプティングシステムがあります。
非常に強力な機能ですが、あらゆる局面でブループリントが最適解かと言えば、そうでもありません。
テキストベースのスクリプトという選択肢を加えることで、設計の柔軟性向上が期待できます。
この記事の内容
「パズル」テンプレートに、Lua というテキストベースのスクリプトを組み込みます。
ロジックを Lua で実装し、パッケージ化した後でもロジックを変更できるようにします。
長いので、4回に分けてお送りしています。
第1回はプロジェクトを作成して LuaMachine プラグインを組み込みました。
第2回はデフォルトの Lua スクリプトファイルと、C++ ソースファイルを実装しました。
第3回(今回)は UE4 エディタ上で必要な変更を行い、ロジックを Lua で実装したバージョンを完成させます。
第4回はパッケージ化を行い、実行ファイルを動作させたままで、2種類のゲームを追加します。
使用するもの
・Unreal Engine 4.26.2
・Visual Studio 2017
・LuaMachine 20201211
ウィジェットの作成
LuaSample.uproject をダブルクリックして、UE4 エディタを起動してください。
コンテンツ以下に UI フォルダを作成し、その中にウィジェットブループリントを追加します。
名前は MyWidget に変更してください。
MyWidget をダブルクリックして、エディタを開きます。
ボタンを配置して、パラメータを以下のように設定してください。
ボタンの中にテキストを配置して、パラメータを以下のように設定してください。
ボタンを選択した状態で、On Clicked イベントをクリックします。
イベントグラフに切り替わるので、ブループリントを以下のように設定してください。
これによって、ボタンをクリックすると、ゲームが再起動されるようになります。
設定が済んだらコンパイル&保存して、エディタを閉じてください。
配置済みアクタの変更
アウトライナで Lighting>Light Source を選択し、パラメータを以下のように変更してください。
アウトライナで Lighting>PostProcessVolume を選択し、パラメータを以下のように変更してください。
アウトライナで Lighting>SkyLight を選択し、パラメータを以下のように変更してください。
アウトライナで Camera を選択し、パラメータを以下のように変更してください。
アウトライナで CubeMesh を選択し、パラメータを以下のように変更してください。
アウトライナで PuzzleBlockGrid を選択し、削除してください。
これはゲームモードクラスの初期化関数で、ALuaSampleBlockGrid を生成しているためです。
レベルブループリントの設定
レベルブループリントを開いてください。
ブループリントを以下のように設定してください。
これはプレイ開始時に行われる一連の初期化処理です。
黄色の下線部を設定するのを忘れないでください。
Execute Console Command の Command には r.SetRes 1024x768w を設定します。
ウィジェットを作成 の Class には MyWidget を設定します。
赤色の枠線部は、アウトライナから TemplateLabel をドラッグ&ドロップすると配置できます。
設定が済んだらコンパイル&保存して、エディタを閉じてください。
動作確認
ここで動作確認しておきましょう。プレイを開始してください。
青色のブロックが9個と文字列が2つ表示されますが、第1回とはレイアウトが異なります。
右下に Restart ボタンが追加され、背景の色も変わりました。
青色のブロックをクリックすると黄色に変わり、スコアが+1されるのは第1回と同様です。
しかしロジックの実装は、C++ から Lua へ置き換わっています。
(右上の Lua version はそういう意味です)
青色のブロックをいくつかクリックしたら、右下の Restart ボタンを押してみてください。
ゲームが再起動され、ブロックの色やスコアが初期状態に戻れば成功です。
【コラム】 LuaMachine の使い方
この記事では紙面の都合上、実装の流れを追うのが精一杯で、LuaMachine の使い方を説明する余裕がありませんでした。
ソースコードを読めば大体わかるとは言え、もう少し体系的な説明が欲しいという意見もあると思います。
そこでお勧めなのが、LuaMachine に付属するチュートリアルです。
LuaSample プロジェクトフォルダから Plugins/LuaMachine/Tutorials 以下へ移動し、SimpleDialogueSystem.md を開いてください。
SimpleDialogueSystem_Data 以下には、対応する画像も格納されています。
このチュートリアルでは、Lua ステートや Lua コンポーネントの実装が、ブループリントで行われています。
また、複数のアクタに Lua コンポーネントを持たせて、ローカルな関数・変数を格納する方法も示されます。
LuaMachine の全体像をつかむのに役立つと思いますので、ぜひご一読ください。
まとめ
今回は UE4 エディタ上で必要な変更を行い、ロジックを Lua で実装したバージョンを完成させました。
外観は変化が少ないように感じられるかもしれませんが、処理の流れはかなり変わっています。
Main_0.lua を読みながら、C++ と Lua との連携についてイメージしてみてください。
次回はパッケージ化を行い、実行ファイルを動作させたままで、2種類のゲームを追加します。
参考リンク
Unreal Engine 4関連記事(ORENDA技術ブログ)
著作権表示
Lua
Copyright (c) 1994-2021 Lua.org, PUC-Rio.
Released under the MIT license
LuaMachine
Copyright (c) 2018 Roberto De Ioris