なんとなく日誌

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

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

MOD対応ゲームを作りたい。

MODを作るのではなく、MOD対応のゲームを作りたい。

UE4を選んだのは、公式でMOD対応を謳っているから。

f:id:noroUE4:20181230191521p:plain

UE4の公式FAQ

UnityでもMOD対応の大作ゲーム が出ているが、個人でやるのは簡単ではないように見える。

 

では、いざMOD対応ゲームを作ろうと思って検索しても、あまり情報がない。

なぜか?

 個人や小規模に作るゲームでMODに対応したって、わざわざMODを作ってくれる人が現れる可能性はとても低い。当然だ。

じゃあ、MOD対応は無駄かというと、それは違う。

たったひとりで作り上げられるものには、限りがある。

ひとつのアイディアを核として、だれかの力を借りながらモジュールを組み上げるようにゲームを作っていくというのも、これからの時代のゲームの方向性のひとつじゃないだろうか。ModificationならぬModularizationということで。

 

と、妙な前置きになってしまったけどUE4でのMOD対応ゲームの作り方をまとめていく。UE4を初めたばかりだから、役に立ちそうな記事を書けるのはまだ先のことだと思っていたけれど、いいネタが見つかってうれしい。とはいえ、たぶん間違ったこともたくさん書くであろうことをどうかご容赦願いたい。

 

まずは、公式WikiにMOD対応方法のページがある。

Modding: Adding mod-support to your Unreal Engine 4 project - Epic Wiki

 このページの内容を実際に試していくが、情報が古いのでバージョン4.21では修正が必要だ。最初は旧バージョンのまま実行していくので、現バージョンでの情報は次回以降の記事を見てほしい。

 

 

noroue4.hatenablog.com

 

 

noroue4.hatenablog.com

 

 

 

 このサンプルのUE4バージョンは4.9となっており、4.21で読み込むこともできるがそのままでは機能しない。

 今回はバージョン4.9のまま、このサンプルが動作することを確認する。

旧バージョンのUE4をインストールするには、Epic Games Launcher上部の「ライブラリ」タブを開き、Engineバージョン右にある+マークをクリック後、出現したものをクリックしてバージョンを指定する。

f:id:noroUE4:20181231012113p:plain

バージョン4.9のインストール

 次に、サンプルプロジェクトをダウンロードする。

GitHub - tomlooman/ModSampleGame: Unreal Engine 4 Modding Sample Game

このGithubページ右側の「clone or Download」をクリックし、「Download ZIP」を選ぶ。

f:id:noroUE4:20181231015537p:plain

サンプルプロジェクトをダウンロード

これを解凍したら、中に二つのォルダがある。「PackagedSampleGame」はビルド済みのサンプルなので、無視してかまわない。これから試すのは「ModSampleGame」の方。「ModSampleGame-master\ModSampleGame/Content」内にゲーム本体のデータがあり、「ModSampleGame-master\ModSampleGame/Plugins」内に作成したいMODのデータが入っている。

 

次に「ModSampleGame」の中にある「ModSampleGame.uproject」をダブルクリックすると、UE4バージョン4.9.2が立ち上がるはず。

(初期設定のままではMOD部分のファイルがコンテンツブラウザから見えない。コンテンツブラウザ右下の「表示オプション」から、「プラグインコンテンツを表示」にチェックを入れる。「MyFirstModコンテンツ」がコンテンツブラウザに表示されるようになるはず。)

 立ち上がったら、上部の「ウィンドウ」→「プロジェクトランチャー」を起動し、立ち上がった「ProjectLauncher」右下にある+マークをクリックし、ビルド設定を作成する。

f:id:noroUE4:20181231030202p:plain

プロジェクトランチャーを起動する

f:id:noroUE4:20181231030126p:plain

ビルド設定を作成する

ちゃんと理解していないので適当な説明になるが、プロジェクトランチャーは単純なパッケージ化より詳細な設定でビルドするための仕組みで、その設定をカスタム起動プロファイルとして保存しておけるらしい。 

ビルドとはUE4エディタで作成したデータを、実際にWindows上で動くようにする(つまりexeファイルを作る)こと。

ここでは、ゲーム本体をビルドする設定と、MODをビルドする設定の、二つのプロファイルを作成する。

 

ゲーム本体の設定

 

f:id:noroUE4:20190101203055p:plain

f:id:noroUE4:20190101202953p:plain

ゲーム本体のビルド設定

 適当だが順に説明していくと

・タイトル

サンプル通り、FullGame v1.0となっている。

このプロファイルの名前に過ぎないので、なんでも適当な名前で大丈夫。

 

・プロジェクト 

 特定のプロジェクトを選択することもできるが、「任意のプロジェクト」のままでも問題ない。

 

・ビルド

 ビルド設定。つまり開発版か製品版か選ぶ。

 

・クック

 料理方法、つまりビルドの詳細設定。

「オンザフライ」「バイザブック」から選べるが、たぶんバイザブックが「以下の設定で」の意味。

 プラットフォームはWindowsNoEditorがWindows版らしい。よくわからない。

 カルチャーで言語を選ぶ。

 クックしたマップ(たぶんクック「される」マップが正しい?)で使うマップを指定するかと思いきや、何も指定しなくて大丈夫。よくわからない。

 リリース・DLC・パッチの設定

 「ディストリビューション用にゲームのリリースバージョンを作成」にチェックを入れ、リリース名を入れる。ここでは1.0。

 「エンジンコンテンツを含む」にチェックを入れる。

 詳細設定

 「すべてのコンテンツを単一ファイル(UnrealPak)に格納します」にチェックを入れると、完成品をすべて.pakファイルにまとめてくれるので扱いやすくなる。

 

・パッケージ

 完成したパッケージをどこに保存するか。

 「ローカル環境にパッケージ化および格納」を選ぶ。

  場所を指定しなければ、

ModSampleGame-master\ModSampleGame\Saved\StagedBuilds\WindowsNoEditor

 に、ModSampleGame.exeが作成され、

ModSampleGame-master\ModSampleGame\Saved\StagedBuilds\WindowsNoEditor\ModSampleGame\Content\Paks

にModSampleGame-WindowsNoEditor.pakが作成される。

 

・デプロイ

 「デプロイしないでください」を選ぶ。

 パッケージ化したものを自動的にどこか(サーバーとか)に配置したい場合の設定?

 

MOD部分の設定

 

f:id:noroUE4:20190101203228p:plain

f:id:noroUE4:20190101203246p:plain

MOD部分のビルド設定

こちらも順に説明していくと、「リリース・DLC・パッチの設定」まではゲーム本体のビルド設定と同じ。


 リリース・DLC・パッチの設定

 「ディストリビューション用にゲームのリリースバージョンを作成」のチェックをはずし、リリース名はなしで、「Base this release on a previous release, applys to new creating new releases / dlc / paches.」に、先ほど記入したゲーム本体のリリースバージョン(この場合は「1.0」)を記入する。

 「DLCをビルド」にチェックを入れ、ビルドするDLCの名前を記入し、「エンジンコンテンツを含む」のチェックを外す。

 この名前は、「ModSampleGame-master\ModSampleGame/Plugins」内のフォルダ名(この場合はMyFirstMod)と同じ名前を入れる。

 

残りはゲーム本体の設定と同じ。

先ほどと同じく、場所を指定しなければ、

ModSampleGame-master\ModSampleGame\Plugins\MyFirstMod\Saved\StagedBuilds\WindowsNoEditor\ModSampleGame\Content\Paks

にModSampleGame-WindowsNoEditor.pakが作成される。

ゲーム本体の.pakファイルと同名のファイルが作成されてしまうので、後ほど名前を変更する。(変更する名前はなんでもいいようだ)

 

ビルドして実行とロード

これでプロファイルの作成は完了した。では実行しよう。

プロファイル右側のボタンをそれぞれ押せば、ビルドが始まる。

f:id:noroUE4:20190101211750p:plain

ビルドの実行

 エラーなくビルドに成功したら、

ModSampleGame-master\ModSampleGame\Plugins\MyFirstMod\Saved\StagedBuilds\WindowsNoEditor\ModSampleGame\Content\Paks

に作成されたModSampleGame-WindowsNoEditor.pakの名前を変更(例えば、MyFIrstMod.pakなど。好きな名前で大丈夫)したら、

ModSampleGame-master\ModSampleGame\Saved\StagedBuilds\WindowsNoEditor\ModSampleGame\Content\Paks

にコピーする。

このフォルダに置いてある.pakファイルが、自動的にゲームにロードされるようだ。

ゲームの実行は、

ModSampleGame-master\ModSampleGame\Saved\StagedBuilds\WindowsNoEditor/ModSampleGame.exe

をダブルクリックする。

MODがロードされているかどうか確認するために、コンソールを開いて(ゲームプレイ中のコンソールの開き方はコンソールコマンド - UE4攻略wiki -Preview- - アットウィキ参照)

「open ModExampleMap」

 と入力すると別のマップに移動して、クリックで発射される弾が三つに増えている。これで正しくMODがロードされていることが確認できた。

 

終わりに

サンプルページのとおり、どうやらMODは作れるらしいぞということは分かった。

でも、いくつかの疑問が残る。

  1. これ、バージョン4.21でも使えるの?
  2. 用意されたサンプルからMODは作れたけど、そもそもこのサンプルはどうやって作るのさ?
  3. 「open ModExampleMap」のコンソールコマンドでMODで追加されたマップを開いたけど、ゲーム内で普通に開くにはどうしたらいいの?
  4. 元のゲームをバージョンアップしたら、MODは対応できる?
  5. プレイヤーにDLCを作ってもらうには、元ソースを全部渡す必要がある?

など。

1と2は、今後まとめていきたい。

3は、これから調べていかなければ。要するに.pak内のmap名を見つける機能が欲しいわけだけど、C++が必要な予感もする。

4はどうなんだろう。Minecraftでもバージョンアップで使えなくなるMODがあったし、再コンパイルを覚悟しなければいけないかもしれない。実際やってみないとなんとも。

5は、全部でないにしろ大部分の公開は仕方ないことかな?UE4で専用エディタを公開している商業ゲームはどんな感じなんだろう?インストールしようとしたらダウンロード165GBに驚いてまだ試していない。