なんとなく日誌

覚え書きとか。twitter:https://twitter.com/noronoroxxxxxx

UE4でMOD対応ゲームを作る その3

前回までに、公式Wikiのサンプルの動作を確認したので、今回はUE4のバージョン2.21.1にて実際に新しいプロジェクトでMODを作成してみる。
noroue4.hatenablog.com
noroue4.hatenablog.com

下準備

まずは、新規プロジェクトの作成。ひな形はThirdPersonを利用する。

f:id:noroUE4:20190102150145p:plain
新規プロジェクト作成
名前はなんでもいいが、今回はMyModProjectとした。


エディタが立ち上がったら左上のEditからPluginsを開き、New Pluginをクリックする。

f:id:noroUE4:20190102150335p:plain
Pluginsを開く
f:id:noroUE4:20190102150610p:plain
新規プラグイン作成
UE4エディタはMOD部分のデータをゲーム本体のデータと区別し、外部プラグインとして取り扱う。
プラグインといっても特に機能が追加されるわけではなく、単に「コンテンツを入れておく」容器としての機能があればいいので、「Content Only」を選択してプラグインを作成する。
プラグイン名は何でも好きな名前でいいが、ここでは「myMOD」という名前にし、Create Pluginをクリックして作成完了。
f:id:noroUE4:20190102155032p:plain
プラグイン作成
プラグイン一覧の一番下に、「Other」カテゴリ内に「myMOD」が表示されている。
このままで特に問題はないが、試しにプラグイン設定を編集する。
「Edit」をクリックし、「Category」欄を「Other」から「MOD」に変更してみると、myMODのカテゴリがMODに変わっていることが確認できる。
f:id:noroUE4:20190102154542p:plain
プラグイン設定の編集
f:id:noroUE4:20190102155202p:plain
f:id:noroUE4:20190102155224p:plain
カテゴリの変更

プロジェクト作成で指定した場所にMyModProjectフォルダができているはずなので、中を確認しよう。
「Config」「Content」「Intermediate」「Plugins」「Saved」の各フォルダと、「MyModProjecrt.uproject」ファイルがあるはずだ。
プロジェクトの主なデータは「Content」内に存在し、これから作成していくMODのデータは「Plugins」内の「myMOD」フォルダ内に追加されていく。

f:id:noroUE4:20190102160030p:plain
新規作成後のプロジェクト
f:id:noroUE4:20190102160047p:plain
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」カテゴリ
に変化している。

f:id:noroUE4:20190102162414p:plain
myMODがInstalled配下に変化している
具体的に何が変わるのかはよくわからないが、"Installed"フラグをtrueにしておかないとMODをビルドしても正常に読み込まれないようだ。

MODの中身作成
下準備が完了したので、ここから「myMOD」に中身を実際に追加していこう。
エディタ左下のコンテンツブラウザ内に「myMOD Content」が表示されているはずだが、見つからない場合はコンテンツブラウザ右下の「View Options」をクリックして、「Show Plugin Content」にチェックを入れる。

f:id:noroUE4:20190102162321p:plain
myMOD Content

新規マップをmyMODに追加するには「myMOD Content」をクリックしてから、コンテンツブラウザ左上の「Add New」→「Level」を選択する。

f:id:noroUE4:20190102215555p:plain
新規レベル作成
NewWorldという名前のマップが生成されるので、ダブルクリックして中身を見よう。まっくらで何もないはずだ。
このままでは何も見えないので、エディタ左上の「Model」タブから選択して、いくつか追加していく。
「Modelタブ→Place→Basic→Plane」をドラッグして、真ん中のまっくらなビューポートにドロップすると、小さな平面が追加される。
f:id:noroUE4:20190102190135p:plain
平面を置く
次に、Planeの上に「Player Start」を置く。「Player Start」は、「Modelタブ→Place→Basic→Player Start」にある。さっき選んだPlaneのいくつか上にあるはず。
Player Startを置いておくと、ゲームプレイ開始時にここからキャラクターがスタートする。ちゃんとさっき置いた平面の上に置かないと、プレイヤーが落下していくので注意。
f:id:noroUE4:20190102190530p:plain
プレイヤーの初期配置
このままだとゲームが始まってもまっくらになるので光源を配置する。
光源は「Modelタブ→Place→Lights」から選ぶ。今回は一番上の「Directional Light」をドラッグし、プレイヤー初期位置の上の方にドロップしよう。
f:id:noroUE4:20190102194429p:plain
光源の設置
これで最低限のものは配置したので、いったんエディタ上部の「Play」からゲームを再生して確認しよう。プレイヤーに光が当たっているはずだ。
もしなにも見えないままだったら、エディタ上部の「Build」を一度試してみるといいかもしれない。
f:id:noroUE4:20190102200345p:plain
これで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++が必要になる予感。