Save Game Inspector / Reference

Feature reference

v1.2.0Runtime plugin
  • UE 5.5–5.8
On this pageAt a glanceWhere to find itThe inspector tabThe New Save Version windowSaving and backupsPlay In EditorAuto reloadSettingsMessagesLimits

Everything Save Game Inspector adds: the inspector tab and its controls, the New Save Version window, saving and backups, Play In Editor testing, every setting with its default, and the messages you may see. For the game-side nodes, see Blueprint nodes.

At a glance#

Item Details
Plugin type Runtime and editor. Save Data Version stamping, the Blueprint nodes, migration steps, and the Project Settings ship in packaged games. The inspector and its windows are editor-only.
Platforms Migrated loading works wherever the engine's save system does. The inspector runs in the Windows, macOS, and Linux editors.
Engine versions UE 5.5–5.8
Dependencies None. Your SaveGame classes need no changes.
Saving Keep using the engine's save nodes. Every save records its SaveGame class's Save Data Version automatically.
Blueprint nodes Yes. See Blueprint nodes.
Settings Project Settings → Plugins → Save Game Inspector, shared and used by the packaged game, and Editor Preferences → Plugins → Save Game Inspector, per user
Console commands None

Where to find it#

Entry point Where
Save Game Inspector Tools menu, in the Save Game Inspector section. Opens the inspector tab.
New Save Version... The same Tools section, or right-click a single SaveGame Blueprint in the Content Browser.
Open a save Double-click it in the file list, use Open, or drag one or more .sav files onto the tab.
Save shortcuts Ctrl+S saves and Ctrl+Shift+S saves as, while the inspector has focus. Editor Undo and Redo cover edits and Migrate.
Inspect A button on the notification that appears when a migrated load loses fields during Play In Editor.
Migration steps Create a Blueprint class with Save Game Migration as its parent, or use New Save Version.

The inspector tab#

The file list is on the left. Open saves appear as tabs on the right, each with its banners, a header, the main view, and a switch between Issues and Change Log at the bottom. Opening a save never changes the file.

Toolbar#

Control Available when Effect
Open Always Choose one or more .sav files. Starts in the project's Saved/SaveGames folder.
Reload A file is open Reads the file again. Asks first if the tab has unsaved edits.
Save The save is decoded, or is live Writes the file the way Save Game To Slot would.
Save As... Next to Save Writes to another file; the tab then follows the new file.
Save Stamped As Version N Next to Save, for files Saves with this build's Save Data Versions, so no migration step will run on the file.
Decode As Not live Reads the save into another SaveGame class you pick. The Class the File Names returns to the original.
Migrate Decoded, not live Applies rename rules and due migration steps to the open copy, then opens a before-and-after comparison. It can be undone; to discard it completely, use Reload.
Compare With A save is open A File..., An Open Save, A Live Object during play, Its State Before Migrate, An Earlier Version from the change log, or Stop Comparing.
Play A save is open Opens the Play options. See Play In Editor.
JSON A save is open Export JSON... or Copy as JSON. There is no JSON import.
Raw Decoded, not live Shows the values as stored in the file. Opens automatically when the save cannot be decoded.

Tabs and banners#

A tab's label starts with LIVE for a running game's object, ends with * for unsaved edits, and adds (changed on disk) when the file changed. Closing a tab with unsaved edits asks first.

Banner Meaning Buttons
Red: Not decoded The save's class could not be used. The Raw view shows what the file holds; Decode As reads it into a class you pick. None
Yellow: file changed on disk The file changed while this tab has unsaved edits. Reload (Drop My Edits), Keep Mine
Blue: LIVE This is the running game's own object. Edits apply at once and cannot be undone; when play ends it becomes a snapshot. Snapshot
Yellow: fields removed Fields that would stop the engine's loader were left out. Save writes a clean file. None
Yellow: newer version The save was written by a build with a newer Save Data Version of its class, so this build runs none of that class's steps on it. None
Green: Migrated Migration has run on the open copy. Save writes the result. Compare With Before

File list#

Part Details
Refresh Lists the folders again.
Check All Checks every listed save for loading issues.
Add Folder... Adds a folder to the list and to Extra Folders in preferences.
Slot column The file name. Live objects appear in blue.
Class column The SaveGame class, or ? when the file cannot be read.
Ver column The save's Save Data Version. Yellow when older than this build's version for its class; red when newer.
Modified column Date and time of the last change.
Issues column After a check: clean, or the number of fields a packaged game loses.

Saves are grouped under Project: Saved/SaveGames, Packaged game (Shipping), one Folder group per extra folder, Recent (up to 12 files outside the listed folders), and Live (Play In Editor) during play. Only .sav files directly inside each folder are listed, and files over 256 MB are not read.

Right-click a file for Open, Check, Show in Explorer, Copy Path, and, for recent files, Remove from Recent. Right-click a live object for Open Live, and a folder group for Show in Explorer or Remove Folder from List.

Row Shows
Class The SaveGame class and its path, or why it cannot be used: missing from this project, not a SaveGame class, or abstract.
Save Data Version The save's version, or 0 when it was written before the plugin, with notes such as older than this build, migration steps due, or migrated here.
Written by The engine version that wrote the file.
Source The file's path and size, or that the save is live or in memory only.

Badges#

Badge Meaning
file The save holds a value for this field.
default The save has no value, so the class default is shown. Saves skip values equal to the default, so an older save picks up a changed default.
edited Changed in the inspector; Save writes it.
PIE only Loaded through a rename only the editor follows. A packaged game drops it; add a Field Renames entry or a migration step.
unresolved A saved reference points at something that does not exist here, such as an object created during play or a deleted asset.
would crash The saved value was left out because its type change would stop the engine's loader; the default is shown.
lossy Converted with possible loss, or an enum value this build no longer has.
migrated Saved data from another field was moved here.

Live objects show no badges.

Issues#

Part Details
View Packaged game shows what a shipped game loses. This editor shows what this editor's loader loses.
Summary Every saved field loads cleanly, or how many fields lose data and how many were recovered.
Add Rename Rule... For a selected field a packaged game loses. Opens Add Field Rename with From and To filled in; element numbers become [*]. The rule applies to the open save's class.
Copy Copies the list, one line per issue.
Columns Saved field, What happened, Saved type -> current, and Saved value.
Colors Green: recovered. Red: loses data in the chosen view. Yellow: other notes.

Losses are listed first. Selecting an issue highlights its field in the Details view.

Raw view#

A read-only tree of the file's own values, with the columns Saved field, Type as saved, Value as saved, and Loader, which shows what the load did with each value. It works even when the save's class is missing.

Compare#

Fields are paired by name, so different versions and classes line up. Type in Filter differences to search paths and values. Differences are marked Only in A, Only in B, Type differs, or Differs, and header and dropped-data differences are marked as such. Both sides appear side by side with linked scrolling; select a difference to find it in both.

Change Log#

When a watched file changes on disk, the tab reloads and the Change Log lists the time and each changed field. Compare With Current compares an earlier version with the current one. It keeps the number of versions set by Change Log Depth.

The New Save Version window#

Step What you do
1 of 4: Which SaveGame class changed? Pick the class. The window shows its current version and its migration steps, including a parent class's. New Save Data Version defaults to one above the current; you can skip numbers but not go lower.
2 of 4: Which save was written before the change? Pick an older save of the class, or tick No old save: I will type the old field names. The sample is loaded with the existing rules applied.
3 of 4: Where does each lost field go? For each field a packaged game still loses, choose where it moves in Moves to, or leave it lost. Result shows Moves, Fails with the reason, Stays lost, or Not checked. Add Field adds a row you type yourself.
4 of 4: Create the new version Choose the Folder, default /Game/SaveGameMigrations, and the Name, default SGM_<Class>_v<N>. Create a migration step can be turned off to raise the version only. Open it in the Blueprint editor afterwards is optional. Problems appear in red and warnings in yellow.

Create Version N creates the migration step with its Target Version, class, and Field Moves, adds it to Migrations, and raises the class's version in the Project Settings. New saves carry the new version immediately, in the editor and in Play In Editor. If creation fails, nothing changes and the window stays open. The Project Settings must be writable, for example checked out from source control.

Saving and backups#

  • Save writes through a temporary file, so a failed write never leaves a partial save.
  • The first overwrite from each open tab copies the original to Saved/SaveGameInspector/Backups. Save As over an existing file backs that file up.
  • Save Drops Data appears when saving would lose fields, with Migrate First, Save Anyway, and Cancel.
  • After Decode As, saving asks you to confirm the class change.
  • Until you migrate, Save keeps the file's own versions, so the game still runs its pending steps. After Migrate, Save writes this build's versions.
  • Saving a live or snapshot tab opens Save As.

Play In Editor#

Option Effect
The slot the game loads The slot to write, filled in from the file's name. The list shows existing slots. Play In Editor reads Saved/SaveGames/<Slot>.sav whatever the user index.
Put the slot's own file back when Play In Editor ends Restores the slot's previous file after play, or deletes it if there was none. If the editor closes unexpectedly, the next editor start restores it. Off overwrites the slot with no backup.
Write the unsaved edits Plays with your edits. Off plays the file as it is on disk.
Play Writes the slot and starts Play In Editor. Unavailable while play is running.
Write To Slot Now During play, writes the slot; the game sees it on its next load.

During play, every SaveGame object the game holds is listed under Live (Play In Editor). Open one to edit it in place, without Undo, and use Snapshot for a copy. When play ends, live tabs become snapshots.

A migrated load that loses fields during play shows a notification, such as Save 'Slot1' lost 2 field(s) on load, with an Inspect button.

Auto reload#

The inspector watches the listed folders and the folder of every open file. A changed save reloads half a second after writing stops. A tab with unsaved edits keeps them and shows the yellow banner instead. With Auto Reload off, the list still refreshes but open tabs do not reload.

Settings#

Project Settings#

Project Settings → Plugins → Save Game Inspector. Shared with your team and read by the packaged game.

Category Setting Default Effect
Versioning SaveGame Class Versions Empty Read-only. Each SaveGame class's own Save Data Version, raised only by New Save Version.
Migration Migrations Kept up to date The migration steps a migrated load may run. Migration Blueprints are added, renamed, and removed automatically; steps written in C++ are added by hand.
Migration Field Renames Empty Renamed fields applied on every migrated load, before any step: Save Game Class (empty for every class), From, and To.
Analysis Analyze On Load Always Always, or Only When The Save Is Older. The second skips the check for saves already at the current version, and then Field Renames do not apply to them.
Analysis Log Dropped Fields On Log a warning naming each field a load leaves dropped.

Editor Preferences#

Editor Preferences → Plugins → Save Game Inspector. Personal preferences, not shared.

Category Setting Default Effect
Files Extra Folders Empty More folders to list saves from. Applies when the list refreshes.
Files List Packaged Game Saves On List the saves a Shipping build of the project writes, in %LOCALAPPDATA%/<Project>/Saved/SaveGames on Windows. Development builds save next to the executable; add that folder above.
Auto Reload Auto Reload On Reload an open save when its file changes. Reopen the inspector tab after changing it.
Auto Reload Change Log Depth 20 How many earlier versions the Change Log keeps, from 1 to 200.
Play Restore Slot After Play On The starting state of Put the slot's own file back for new tabs.
Play Play With Unsaved Edits On The starting state of Write the unsaved edits for new tabs.
Issues Default Issues View Packaged Game The Issues view a new tab starts with: Packaged Game or This Editor.

Messages#

When Message
A save is written Saved name, or Not saved: with the reason, for example a read-only file.
A file cannot be read Could not read path.
Decode As fails Could not decode as class, with the reason.
Migrate runs A one-line summary of the migration.
Play Playing with slot name, or Wrote slot name ; the game sees it on its next load.
Play while play is running A reminder to use Write To Slot Now.
A rename rule is added Added field rename from -> to, or a note that the Project Settings are read-only and need checking out.
Migration steps change Registered migration step, Removed migration step, or Migration step renamed.
New Save Version finishes Class is now at Save Data Version N, with a link to open the step.
JSON Exported path, Could not write path, or Copied the save as JSON.

The Output Log category is LogSaveGameInspector. Each migrated load logs a one-line summary, and a warning per dropped field while Log Dropped Fields is on.

Limits#

  • Only the Migrated load nodes apply rename rules and migration steps. The engine's own load nodes do not.
  • A field the editor loads through a rename can still be lost in a packaged game. Check the Packaged game Issues view and test packaged builds.
  • Undo after Migrate restores the values but not the migrated state; Save then writes this build's versions. Use Reload to discard a migration.
  • A renamed Blueprint SaveGame class keeps its Save Data Version; a renamed C++ class does not.
  • New Save Version offers destination fields up to four levels deep, and not inside sets.
  • Classes that hold a lazy object pointer cannot be saved from the inspector.
  • The inspector shows references into levels as unresolved and never loads a level.
  • Migrate logic must not need a level or world, because it also runs in the editor.
Documentation
↑ ↓ Navigate ↵ Openesc Close