この文書では、LabyrinthにおけるGameModeブループリントの実装について解説します。
特徴
GameModeには下記のような特徴があります。
- BeginPlayが呼び出されるのが誰よりも早い
- どのブループリントからも呼び出すことができる
- 別のGameModeに差し替えても動作することが理想
これらの特徴から、どうしても機能を多く持たせがちなのですが、依存関係が強くなるのを避けるため、Labyrinthでは必要最低限の機能だけを持たせています。
GameModeの機能
LabyrinthのGameModeは以下の機能を有します。
- ゲーム開始時のパラメータ設定
- プレイヤーキャラクターの管理
- ポストプロセスボリュームの保持
1. ゲーム開始時のパラメータ設定

GameModeのBeginPlayイベントは非常にシンプルです。
GameInstanceのセットアップイベントを呼び出します。このイベント内部では、ゲームのコンフィグなどのパラメータを設定します。
2. プレイヤーキャラクターの管理

LabyrinthのGameModeは、プレイヤーキャラクターオブジェクトを保持しています。
通常であれば、GameModeのプロパティの[Defaul Pawn Class]でプレイヤーを設定すれば、[Get Player Character]関数で取得できるようになるため、わざわざGameModeが保持する必要はありません。
Labyrinthでは、プレイヤーキャラクターはナビメッシュを使用してタッチした箇所に移動するのですが、そのためにAIControllerを利用します。
GameModeのプロパティ[Default Pawn Class]でプレイヤーキャラクターを設定すると、AIControllerをPossesすることができないPlayer Pawnとして生成されてしまうため、プロパティを使って生成は行いません。

その代わり、あらかじめマップにプレイヤーのブループリントを配置します。

このブループリントを、GameModeのコンストラクタで探しだし、プレイヤーキャラクターとしてGameModeが保持します。

3. ポストプロセスボリュームの保持
マップに配置されたポストプロセスボリュームの参照をGameModeが保持します。
こうすることで、アクターやデバッグ機能がポストプロセスを操作したい場合に簡単に取得できるようにしています。