UE4でMOD対応ゲームを作る その3
前回までに、公式Wikiのサンプルの動作を確認したので、今回はUE4のバージョン2.21.1にて実際に新しいプロジェクトでMODを作成してみる。
noroue4.hatenablog.com
noroue4.hatenablog.com
下準備
まずは、新規プロジェクトの作成。ひな形はThirdPersonを利用する。名前はなんでもいいが、今回はMyModProjectとした。
エディタが立ち上がったら左上のEditからPluginsを開き、New Pluginをクリックする。UE4エディタはMOD部分のデータをゲーム本体のデータと区別し、外部プラグインとして取り扱う。
プラグインといっても特に機能が追加されるわけではなく、単に「コンテンツを入れておく」容器としての機能があればいいので、「Content Only」を選択してプラグインを作成する。
プラグイン名は何でも好きな名前でいいが、ここでは「myMOD」という名前にし、Create Pluginをクリックして作成完了。プラグイン一覧の一番下に、「Other」カテゴリ内に「myMOD」が表示されている。
このままで特に問題はないが、試しにプラグイン設定を編集する。
「Edit」をクリックし、「Category」欄を「Other」から「MOD」に変更してみると、myMODのカテゴリがMODに変わっていることが確認できる。
プロジェクト作成で指定した場所にMyModProjectフォルダができているはずなので、中を確認しよう。
「Config」「Content」「Intermediate」「Plugins」「Saved」の各フォルダと、「MyModProjecrt.uproject」ファイルがあるはずだ。
プロジェクトの主なデータは「Content」内に存在し、これから作成していくMODのデータは「Plugins」内の「myMOD」フォルダ内に追加されていく。myMODフォルダ内部にmyMOD.upluginがある。これが先ほど「Edit」で編集したファイルの正体だが、直接編集することもできる。
作成直後のmyMOD.uplugin { "FileVersion": 3, "Version": 1, "VersionName": "1.0", "FriendlyName": "myMOD", "Description": "", "Category": "MOD", "CreatedBy": "", "CreatedByURL": "", "DocsURL": "", "MarketplaceURL": "", "SupportURL": "", "CanContainContent": true, "IsBetaVersion": false, "Installed": false }
メモ帳などのテキストソフトで、
"Installed": false を"Installed": true
に修正し、
"EngineVersion" : "4.21.0"
を追加しよう。間にカンマも忘れずに。
編集後 { "FileVersion": 3, "Version": 1, "VersionName": "1.0", "FriendlyName": "myMOD", "Description": "", "Category": "MOD", "CreatedBy": "", "CreatedByURL": "", "DocsURL": "", "MarketplaceURL": "", "SupportURL": "", "CanContainContent": true, "IsBetaVersion": false, "Installed": true, "EngineVersion" : "4.21.0" }
UE4エディタを開きなおし、「Edit→Plugins」を確認すると、myMODのカテゴリが
「Project」配下の「MOD」カテゴリ
から、
「Installed」配下の「MOD」カテゴリ
に変化している。具体的に何が変わるのかはよくわからないが、"Installed"フラグをtrueにしておかないとMODをビルドしても正常に読み込まれないようだ。
MODの中身作成
下準備が完了したので、ここから「myMOD」に中身を実際に追加していこう。
エディタ左下のコンテンツブラウザ内に「myMOD Content」が表示されているはずだが、見つからない場合はコンテンツブラウザ右下の「View Options」をクリックして、「Show Plugin Content」にチェックを入れる。
新規マップをmyMODに追加するには「myMOD Content」をクリックしてから、コンテンツブラウザ左上の「Add New」→「Level」を選択する。NewWorldという名前のマップが生成されるので、ダブルクリックして中身を見よう。まっくらで何もないはずだ。
このままでは何も見えないので、エディタ左上の「Model」タブから選択して、いくつか追加していく。
「Modelタブ→Place→Basic→Plane」をドラッグして、真ん中のまっくらなビューポートにドロップすると、小さな平面が追加される。次に、Planeの上に「Player Start」を置く。「Player Start」は、「Modelタブ→Place→Basic→Player Start」にある。さっき選んだPlaneのいくつか上にあるはず。
Player Startを置いておくと、ゲームプレイ開始時にここからキャラクターがスタートする。ちゃんとさっき置いた平面の上に置かないと、プレイヤーが落下していくので注意。このままだとゲームが始まってもまっくらになるので光源を配置する。
光源は「Modelタブ→Place→Lights」から選ぶ。今回は一番上の「Directional Light」をドラッグし、プレイヤー初期位置の上の方にドロップしよう。これで最低限のものは配置したので、いったんエディタ上部の「Play」からゲームを再生して確認しよう。プレイヤーに光が当たっているはずだ。
もしなにも見えないままだったら、エディタ上部の「Build」を一度試してみるといいかもしれない。
これでMODとして新しいマップを作成することができた。
次は、いったんThirdPersonExampleMapをダブルクリックして元のマップに戻ってから、ビルドを始める。
注意点として、「Save Current」をクリックしてちゃんと保存してからビルドを実行しないと、編集結果が正しく反映されない。
では、公式Wikiのサンプルで試したのと同じように、「Window→Project Launcher」を開いてプロファイルを作成しよう。
設定は前回バージョン4.21で試したのとほぼ同じなので流用してもいいが、MOD名が違うことだけ注意。「Name of the DLC to build」に今回は「myMOD」を記入し、「Launch this profile」をクリックしビルドを実行する。
無事にビルドが完了したら、
MyModProject\Plugins\myMOD\Saved\StagedBuilds\WindowsNoEditor\MyModProject\Plugins\myMOD\Content\Paks\WindowsNoEditor\myMODMyModProject-WindowsNoEditor.pak
がMOD部分をビルドした.pakファイルになる。わかりやすいように適当な名前に変更しておこう。なんでも好きな名前で大丈夫。
ゲーム本体は
MyModProject\Saved\StagedBuilds\WindowsNoEditor\MyModProject.exe
で、MODファイルを入れるフォルダはその下の
MyModProject\Saved\StagedBuilds\WindowsNoEditor\MyModProject\Content\Paks
となっている。
この中にある.pakファイルが自動的に読み込まれるので、先ほど名称変更した.pakファイルをここに配置したら完了。
MyModProject.exeをダブルクリックしてゲームを実行し、プレイ中にコンソールを開いて
「open newworld」
と打ち込んで先ほど作ったマップに移動できたら、MODが正しく読み込まれている。
成功だ。
この後はゲーム本体を再コンパイルしなくても、MOD部分を編集したらproject launcherでMODプロファイルだけをビルドして上記の位置に.pakファイルを配置すると変更が反映される。
とはいえ、コンソールコマンドがないとMODマップに移動できないのではちゃんとしたMODとはまだ言えない。
MODの内容をゲーム上から選択する方法があるはずなので、そこまでできるようになったらまた続きを書きたい。
たぶん、C++が必要になる予感。