Is this an appropriate use of Game Instance?

I’m designing a story-driven game in Unreal Engine using Blueprints. To manage story progression, I’m planning to use the Game Instance to track and control the current state of the narrative.

Here’s how I envision the system:

  1. The player, using a third-person character, interacts with an NPC to start a conversation.
  2. When the conversation ends, an interface call sends a notification to the Game Instance, informing it that the dialogue is complete.
  3. The Game Instance then updates the story state and activates the next objective — for example, enabling interaction with three items placed in the level.
  4. Once the player collects all three items, the items communicate back (again via interface or direct call) to the Game Instance to confirm completion.
  5. The Game Instance then triggers the next event in the story, such as making another NPC interactable or unlocking a door.

This setup means the Game Instance acts like a story state manager — receiving updates from various actors (like the player character or item pickups), and then controlling what becomes interactable next.

I’m wondering:

  • Is this an appropriate use of Game Instance?
  • The communication between Game Instance and various actors (player, NPCs, item Blueprints) will increase — is this an expected architecture for story/event progression in Blueprint?

Game State would be where you handle the “states” of the game.

1 Like

What BP is typically used to manage story progression?

GameState works well for this but not the only solution. Personally I use a custom BP “Director” with a StateTree that drives the story line. You could use statetree events to do what you’re outlining with dialogue/etc. Building tasks is pretty easy and modular. I use the GameState for more over-arching game world tracking but it could also be extended with a statetree to the same effect.

For clarity the Director is literally a clean blank Actor BP with a StateTree component I named “Director”. This gets placed into my level and ticks along during gameplay.

To track story state, I create variables in this Director that are available for use in the state tree and tasks once I set it up as the Context Actor

Some Links:

If you go this route, pay close attention to ‘transitions’ as this is where most of missteps occur. Also I got hung up on when/where to use EndTask when building custom tasks so keep an eye out for that. Other than that works really well for story driven stuff and is very easy to track what is going on using the debugger.

1 Like