ストーリー系のイベント管理について

Unreal EngineでBlueprintを使ってストーリーベースのゲームを作っています。
物語の進行を管理するために、Game Instanceを使って現在のストーリーの状態をトラッキング・制御しようと考えています。

構想は以下の通りです:

  1. プレイヤー(サードパーソンキャラクター)がNPCとインタラクトして会話を始めます。
  2. 会話が終了すると、インターフェース呼び出しGame Instanceに通知が送られ、会話が完了したことを伝えます。
  3. Game Instance はストーリーの状態を更新し、次の目的(例えば、マップ内の3つのアイテムをアクティブにする)を設定します。
  4. プレイヤーが3つのアイテムをすべて回収すると、アイテム側から(インターフェースや直接参照で)Game Instance に報告が行われます。
  5. それを受けて Game Instance は次のイベント(新しいNPCとの会話開始、ドアの解放など)をアクティブにします。

このように、Game Instance はストーリー進行を管理する司令塔のような役割を持ち、プレイヤーやNPC、アイテムなどのアクターからの情報を受け取り、それに応じて次に操作可能なイベントを制御する仕組みです。

質問としては:

  • このような使い方は Game Instance の設計として適切でしょうか?
  • ゲームが進行するにつれて Game Instance と各アクター(プレイヤー、NPC、アイテム)との通信が増えますが、これはBlueprintにおけるストーリー制御として一般的な構成でしょうか?

It’s totally up to you on how you want to design it. You may use a game instance if that is aligned with your game intentions and direction. If you are asking my recommendation, I would recommend that you create a master Blueprint actor class that contains all the Blueprint functions that are needed. That way, you can spawn this actor class whenever you want to use your conversation functionality and destroy it once your conversation finishes. It will save you some memory usage.

Since a game instance always runs in the background, that will always mean that whatever functions, variables or instances you have in that class will always be loaded into the memory, either unused or used, it will always be loaded and cost you some memory usage.