LoginSignup
10
8

More than 5 years have passed since last update.

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

Posted at

ゲームモジュールとは?

UE4 は様々な機能を 「モジュール」 という単位で分割、管理しています。
プラグインもこのモジュールの一種としてロードされています。

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

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

特に理由がなければゲームモジュールは1つでも構いません。
ただし、ゲームモジュールを複数用意すれば・・・

  • リンク時間が向上されるかも?
  • エディタ拡張部分をスタンドアローン版から切り離せる。

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

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

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

  • UE4Samples という UE4 プロジェクトを作る。
  • そこに LocalizationSample というゲームモジュールを追加する。

となります。

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

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

まず、UE4Samples という名前の UE4 プロジェクトを C++ テンプレートで新規作成します。
UE4 プロジェクトを作ったら、Source フォルダに LocalizationSample フォルダを作ります。
image
 
フォルダを作ったら、Source/UE4Samples フォルダ内の以下で選択している3つのファイル・・・
image

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

~.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つのファイルが出力されていることを確認します。
image

実行確認

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

  • UE4Samples
  • LocalizationSample

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

image

参考サイト

10
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
8