Dynamic save slot system

Hi,

Every tutorial shows how to make a set number of slot based save games but that’s not what I’m looking for.

I’m trying start the game with zero slots and for the player to add them to the widget themselves, similar to Bethesda games or borderlands where the player can add or delete any save game

Each save will then store;
Player data (inventory, health, upgrades etc)
Save slot data (play time, difficulty etc)
Level data (enemies killed, doors locked etc)
And more

Options data I’ll save globally so you don’t have to change them per save.

Anyone got any tutorials or made something like this? I’ve made a basic static save system before but I’m not sure how I would assign the correct data to the slot and ensure that the widget matches any advice would help,
Thanks

You basically have a special save game, which contains the names of all the other save games :slight_smile:

Each time the player adds a slot, you add a name to the list, and create a new save game of your type with that slot name.

When the player removes a save game, you can just remove the name from your master list.

So like create an array in the save game and add or remove from that array?

I’ve never done this but I think you should create a save game that loads on game start and into that save game you save all the other save games so it will load the saves you have or smth like that. I hope it’s understandable

Just the slot names of the other save games… :slight_smile:

Yes, like I say, one special save game that is just all the slot names of the other save games.

Ok, I’ll try and work something out, not something I could do off the top of my head :slight_smile:

Tell me if you get stuck :slight_smile:

Hi @DarkEmbrace96,

To implement a dynamic save slot system (like Bethesda or Borderlands games) in Unreal Engine, the standard architecture relies on a Master Index Save paired with Individual Save Files.

Here is how to set up the architecture and UI flow:

1. Architecture Breakdown

  • Master Index Save (e.g., SaveGame_Index): A dedicated SaveGame object stored under a fixed slot name. It holds an array of structs containing lightweight metadata for every save file created (e.g., SlotName, SaveDateTime, PlayTime, LocationName).

  • Individual Save Files (e.g., Save_001, Save_002): Standard SaveGame objects created with dynamically generated slot names. These store the full game data (health, inventory, actor states, level progress).

2. Save & Creation Flow

  1. When the player clicks “New Save”, generate a unique slot string ID (e.g., using a timestamp or incremental index).

  2. Gather all player/level data and save it to that unique slot name using Save Game to Slot.

  3. Load your SaveGame_Index file, append the new slot’s metadata struct to the master array, and save the index file back to disk.

3. UI Widget Setup

  1. On Menu Open: Load SaveGame_Index. If it exists, loop through the metadata array.

  2. For each element, dynamically create a Save Slot Entry Widget inside a Scroll Box and pass the metadata to populate text labels (playtime, date, difficulty).

  3. On Delete Click: Call Delete Game in Slot using the specific slot string, remove that item from the Master Index array, resave the Master Index, and call Remove from Parent on the widget entry.