How to properly set up a save/load system in UE5?

Hi everyone,
I’m trying to build a simple save/load system using Blueprints in Unreal Engine 5. My goal is to save the player’s location, health, inventory, and quest progress. I’ve followed a few tutorials online, but I keep running into issues – sometimes the data doesn’t load correctly after restarting the game.

Here’s what I’ve done so far:

  • Created a custom SaveGame class

  • Saving variables using SaveGameToSlot

  • Loading using LoadGameFromSlot in the GameInstance

My questions are:

  1. What’s the best practice for organizing save/load logic across different Blueprints (e.g., Character, GameInstance, Level Blueprint)?

  2. How should I handle saving complex data like arrays of items or quest states?

  3. Is there anything specific in UE5 that I should be aware of compared to older versions?

Any advice, sample Blueprints, or links to updated documentation would be really appreciated!

Thanks!

for that setup id keep all slot read/write in gameinstance (one place that survives level changes) and have character/level just hand their data over as a struct, widgets only request save/load and never touch slots directly. for inventory/quest arrays pack each entry into a struct and keep one array of those on the savegame object, that serializes cleanly. also always check DoesSaveGameExist before load and create defaults if missing, that fixes most wont-load-after-restart issues.

if you dont want to wire all that by hand, Advanced Save System, a save/load system plugin for Unreal Engine 5, covers slots + async + encryption and cloud saves in BP: Advanced Save System. its on sale right now ($23.93) so good time to grab it if you want to ship save/load in an afternoon.