Intro


Narrative has a very powerful save system. The cavoite being that if you don’t understand how Unreal Engine’s own saving capabilities work you can easily make a mistake and wind up not saving anything. Narratives own documentation certainly tells you how to use the save system, but doesn’t explain many of these instances of important information that could save you hours, or in my case days, of your time. We will touch on all of that here.

The System


Narrative has implemented the saving code in 2 locations, making it easy to access no matter the situation in which saving is needed. The first is the Game Instance and the second the player controller.

BP_NarrativeGameInstance

The game instance is set within the project settings, if you are within the project settings just search for Game Instance and it’ll pop up. When you open it you’ll see various functions, all of which house all things important to Narratives save system.

<aside> 💡

It’s important to note that generally speaking its important to keep data itself out of here. The instance isn’t normally meant to be saved. It’s meant to hold data between levels more than anything. As of August 30th, 2025 the save system doesn’t move data to a new level. The save system saves the data, but locks it to the level it was saved in. This is a known issue.

</aside>

BP_NarrativePlayerController

This just houses a few functions that communicate with the save system more easily. This is where most of the saving will occur as nearly every actor can easily access the controller.

Narrative Save Subsystem


From nearly anywhere that there is a graph in Blueprints you can access the Narrative Save Subsystem. This is solely for saving and loading though, you can get certain things, but will generally only ever use this to help the actor you are placing this on to save/load data.

Interfaces

There are 2 interfaces, both are important. If you are trying to save something on an actor, you need the Narrative Savable Actor Interface. If you are trying to save data that is on a component, you also need the Narrative Savable Component Interface.

Saving an Actor

To save an actor, and once you have that interface on there, there are 2 functions you need to set up from the interface then 2 functions you need to call in your actor on begin play and end play. All of this is tracked by a variable known as a GUID, this GUID is a unique identifier that creates randomness to ensure that nothing shares the same identifier.

SET ACTOR GUID

image.png

GET ACTOR GUID

image.png

BEGIN PLAY

image.png

END PLAY

image.png