Posted at

一つの UE4 プロジェクトで複数のゲームモジュールを扱う

More than 3 years have passed since last update.


ゲームモジュールとは?

UE4 は様々な機能を 「モジュール」 という単位で分割、管理しています。

プラグインもこのモジュールの一種としてロードされています。

どのようなモジュールがロードされているのか?は、エディタの「Window > Developer Tools > Modules」で確認できます。

ゲームモジュールとは「ゲーム実装部をモジュール化したもの」で、C++ で作られた UE4 プロジェクトは最低1つのゲームモジュールを持ちます。

特に理由がなければゲームモジュールは1つでも構いません。

ただし、ゲームモジュールを複数用意すれば・・・


  • リンク時間が向上されるかも?

  • エディタ拡張部分をスタンドアローン版から切り離せる。

などのメリットもあります。


複数のゲームモジュールを持つ UE4 プロジェクトを作ってみる

では、試しにゲームモジュールが複数存在する UE4 プロジェクトを作ってみます。

今回説明する手順は・・・


  • UE4Samples という UE4 プロジェクトを作る。

  • そこに LocalizationSample というゲームモジュールを追加する。

となります。

※ここに載せるファイルパスは全て UE4 プロジェクトディレクトリ相対です。


UE4 プロジェクトとファイル、フォルダの用意

まず、UE4Samples という名前の UE4 プロジェクトを C++ テンプレートで新規作成します。

UE4 プロジェクトを作ったら、Source フォルダに LocalizationSample フォルダを作ります。



 

フォルダを作ったら、Source/UE4Samples フォルダ内の以下で選択している3つのファイル・・・




これらを Source/LocalizationSample フォルダにコピーして、以下のようにリネームします。


~.Build.cs の書き換え

Source/LocalizationSample/LocalizationSample.Build.cs を開いて、クラス名「UE4Samples」を「LocalizationSample」にリネームします。

(クラス名だけでなく、コンストラクタもリネームするのをお忘れなく。)

これで LocalizationSample モジュールのビルドルール(依存するモジュールの設定や、最適化の有無、RTTI の有無など)が定義できるようになります。


LocalizationSample.cpp の書き換え

Source/LocalizationSample/LocalizationSample.cpp を開き、以下の記述・・・

#include "UE4Samples.h"


IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, UE4Samples, "UE4Samples" );

これを以下のように変更します。

#include "LocalizationSample.h"


IMPLEMENT_GAME_MODULE( FDefaultGameModuleImpl, LocalizationSample );

IMPLEMENT_PRIMARY_GAME_MODULE を指定できるゲームモジュールは、UE4 プロジェクトの中で一つだけです。

それ以外のゲームモジュールはすべて IMPLEMENT_GAME_MODULE で指定することになります。


~.Target.cs の書き換え 


  • Source/UE4Samples.Target.cs

  • Source/UE4SamplesEditor.Target.cs

この2つのファイルを開き、以下の記述・・・

OutExtraModuleNames.AddRange( new string[] { "UE4Samples" } );

これを以下のように変更します。

OutExtraModuleNames.AddRange( new string[] { "UE4Samples", "LocalizationSample" } );

Source/UE4Samples.Target.cs を書き換えると、ビルド構成・・・


  • DebugGame

  • Development

  • Shipping

で、Source/UE4SamplesEditor.Target.cs を書き換えると、ビルド構成・・・


  • DebugGame Editor

  • Development Editor

でビルドされるようになります。


~.uproject の書き換え

UE4Samples.uproject を開き、以下の記述・・・

    "Modules": [

{
"Name": "UE4Samples",
"Type": "Runtime",
"LoadingPhase": "Default"
}

これを以下のように書き換えます。

    "Modules": [

{
"Name": "UE4Samples",
"Type": "Runtime",
"LoadingPhase": "Default"
},
{
"Name": "LocalizationSample",
"Type": "Runtime",
"LoadingPhase": "Default"
}
]

これで UE4Samples をエディタで開いたり、実行したりする際に LocalizationSample モジュールが読み込まれるようになります。


ビルド

UE4Samples.uproject の右クリックメニューから「Generate Visual Studio project files」を選択して、Visual Studio プロジェクトファイルを作り直します。

終わったら、作りなおされた UE4Samples.sln を開いて、Development Editor | Win64 でビルドしてください。

ビルドが終わったら、Binaries/Win64 に以下の4つのファイルが出力されていることを確認します。


実行確認

最後に UE4Samples.uproject を起動して、「Window > Developer Tools > Modules」から


  • UE4Samples

  • LocalizationSample

の2つのモジュールが読み込まれていることを確認します。


参考サイト