Gameplay, UI & Audio · Easy · 14 min

Save and Load Your Game: SaveGame Objects in Blueprints

Make a SaveGame object, write your player's data into it, save it to a slot, then check it exists and load it back — the whole save/load loop in Blueprints, no code required.

LevelEasy Time~14 min EngineUE 5.4+ Hands-on13 checkpoints

Before this: Blueprint Variables: Store and Change Values to Drive Behaviour, Event Graph Basics: BeginPlay, Nodes, and Wires Explained

By the end, you'll be able to
  • Understand what a SaveGame object is and why you need one
  • Create a SaveGame Blueprint with the variables you want to persist
  • Write data in and call Save Game to Slot
  • Check Does Save Game Exist, then Load Game from Slot and read your values back

What saving actually means in Unreal

When your game closes, everything in memory — the player's score, which level they reached, their settings — vanishes. 'Saving' means writing the bits you care about to a file on disk so you can read them back the next time the game runs. 'Loading' is just reading that file again.

Unreal gives you a tidy, built-in way to do this with zero file-handling headaches. You create a special little Blueprint called a SaveGame, drop your variables into it, and Unreal handles writing it to disk and reading it back. You never touch a raw file path or worry about where it lives.

In this lesson we'll do the whole round trip once: make the SaveGame, put a value in it, save it to a named 'slot', and on the next run check whether that slot exists and load the value back. It's a pattern you'll reuse in every game you make.

Five terms to lock in first

Tap a card to flip it

Before you start

You'll be working in Blueprints, so tick these off first:

  • An open project with any level (the Third Person template is perfect)
  • You're comfortable making and setting Blueprint variables (the variables lesson covers this)
  • You know how to find the Event BeginPlay node and wire nodes together
  • A value worth saving in mind — we'll use a simple integer 'high score' as the example

Build the save/load loop

We'll create the SaveGame, then do the saving and the loading. Tick each step as you go — your progress is remembered even if you close the page.

  1. 1Create the SaveGame Blueprint

    In the Content Browser click Add (the green '+'), choose 'Blueprint Class', and in the 'Pick Parent Class' window expand 'All Classes' and search for 'SaveGame'. Pick it and click Select.

    Name the new asset something clear like 'BP_SaveGame'. Double-click to open it. This Blueprint is purely a data container — you won't add any logic here.

    TipPrefix save-game Blueprints with BP_ (or SG_) so they're easy to spot in the Content Browser later.

  2. 2Add the variables you want to persist

    Inside BP_SaveGame, in the My Blueprint panel on the left, click the '+' next to Variables. Make a variable called 'HighScore' and set its type to Integer.

    Add as many as you need — a 'PlayerName' String, a 'LevelReached' Integer, and so on. Every variable you add here becomes part of what gets written to disk. Compile and Save, then close the Blueprint.

    TipOnly put things you actually need to persist in here. A SaveGame holds data, not behaviour — keep it lean.

  3. 3Create the SaveGame object in memory

    Open the Blueprint where your save logic will live — for a first try, the Level Blueprint is fine (Blueprints toolbar dropdown at the top of the editor → Open Level Blueprint).

    Right-click in the graph and add a 'Create Save Game Object' node. In its 'Save Game Class' dropdown, choose your BP_SaveGame. This makes a fresh, empty copy of your container in memory.

    TipDrag off the 'Return Value' pin and 'Promote to Variable' so you can refer to this SaveGame object again later in the same graph.

  4. 4Set your data, then Save Game to Slot

    Drag off the SaveGame object and call 'Set High Score' (the setter for your variable), feeding in the value you want to store — say the player's current score.

    Then add a 'Save Game to Slot' node. Plug the SaveGame object into its 'Save Game Object' pin, type a slot name into 'Slot Name' (for example 'PlayerSlot'), and leave 'User Index' at 0. Run this and the data is written to disk.

    TipThe slot name is just text you choose. Keep it consistent — you must load from the exact same slot name you saved to.

  5. 5On load: check Does Save Game Exist first

    Now the loading half. Add a 'Does Save Game Exist' node and give it the same slot name ('PlayerSlot') and User Index 0.

    Run its boolean output into a Branch node. The 'True' path means a save is there to load; the 'False' path means it's a first run with nothing saved yet — so you'd start fresh with default values.

    TipSkipping this check is the classic beginner bug: loading a slot that doesn't exist returns nothing useful and your values stay at zero.

  6. 6Load Game from Slot and read your values

    On the Branch's True pin, add 'Load Game from Slot' with the same slot name and User Index 0. Its 'Return Value' is a generic SaveGame object.

    Drag off that Return Value and add a 'Cast To BP_SaveGame' node — this tells Unreal it's specifically your SaveGame so you can read your variables. From the cast's output, call 'Get High Score' and use it (print it, set the player's score from it, and so on).

    TipForgetting the Cast is why beginners can't find their variables off the loaded object — the load returns the generic base type until you cast it back to yours.

You called Load Game from Slot and dragged off its Return Value, but you can't see your HighScore variable anywhere on it. What's missing?

When do you actually save and load?

At natural checkpoints: finishing a level, beating a high score, the player hitting 'Save' in a menu, or when the game is about to quit.

Saving writes to disk, so don't do it every single frame. Pick deliberate moments — a checkpoint trigger, a level-complete event, a pause-menu button.

QuizCheck yourself

1What is a SaveGame object, really?

2Which node should you run BEFORE Load Game from Slot to avoid loading a slot that isn't there?

3After Load Game from Slot you can't see your custom variables on the returned object. The fix is to…

ChallengeTry it yourself

Make a 'high score' that survives restarting the game. On Event BeginPlay, load the saved HighScore if a save exists (otherwise start at 0). During play, when the player's score beats the stored HighScore, update it and save the slot. Then stop and re-run Play — your best score should still be there.

Hint 1

Loading on BeginPlay: Does Save Game Exist → Branch → on True, Load Game from Slot → Cast To BP_SaveGame → Get High Score and store it in a normal variable you use during play.

Hint 2

Saving a new best: when the player's current score is greater than the stored best, Set High Score on a SaveGame object, then Save Game to Slot with your slot name.

Hint 3

Use one slot name (e.g. 'PlayerSlot') and User Index 0 in every save/load node so they all line up.

Handy Blueprint-editor shortcuts

  • Right-click (graph) Open the node search to add a node like Create Save Game Object
  • F2 Rename the selected variable or node
  • Ctrl S Save the current Blueprint asset
  • Alt click (pin) Break a wire connected to that pin
  • Ctrl W Duplicate the selected node(s)
Finished the steps?

Mark this lesson complete

We'll remember it on your Academy page and unlock the next lesson below.

Questions beginners ask

Where does the save file actually go on disk?

Unreal writes it into your project's Saved/SaveGames folder (in a packaged build, into the user's app-data save location for the game). You don't need to manage this — Save Game to Slot and Load Game from Slot find it for you using the slot name. You almost never touch the raw file.

Can I have more than one save file?

Yes — use a different slot name for each. 'Slot1', 'Slot2', 'Autosave', or names built from text (like 'Save_' plus a number) all work. Each slot is an independent save. That's how games offer multiple save slots.

Do I have to load on BeginPlay?

No, that's just the common place to do it for a quick start. You can load from a main-menu 'Continue' button, a checkpoint, or anywhere that makes sense for your game. Just remember to check Does Save Game Exist first so a fresh install doesn't try to read a missing slot.

Why does my loaded data come back as zero or empty?

Three usual culprits: you loaded a different slot name than you saved to; you forgot to Set the variables on the SaveGame object before saving; or you didn't Cast the loaded object to your SaveGame class, so you're reading defaults off the base type. Check those in order.

Get the next lessons as they land

New Academy lessons, UE5 tips and tool releases — straight to your inbox. No spam, unsubscribe anytime.

Report a bug