ゲームモジュールとは?
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