
Descrizione
Open, edit, compare and play any .sav file in the editor, and see exactly which fields your players' saves lose when a SaveGame class changes. A guided New Save Version window makes the migration that recovers them, packaged games included.
Documentation
You can find plugin docs here, along with docs for all other plugins i made.
Unreal has no way to look inside a save.
A .sav is a private binary format; the only way in is to write code that loads it and prints fields. And when a SaveGame class or struct changes, the loader quietly skips whatever no longer matches. Players lose data, and nobody notices until the bug reports arrive.
It is worse than that. The editor and a packaged game load saves differently. Rename a Blueprint variable, or a member of a Blueprint struct, and Play In Editor keeps the value: the shipped game throws it away. Change TArray<bool> to TArray<int32> and the stock loader asserts: a Development build crashes on load, a Shipping one corrupts the rest of the save.
Save Game Inspector opens any save, in its own SaveGame class, C++ or Blueprint, as an editable property tree. Every row says whether the file holds it or it is the class default, whether you changed it, and whether it only loads in the editor. The Issues list shows every field that did not load cleanly, why, and what the saved value was, as a packaged game sees it. A raw view shows the file itself, so even a save whose class is gone opens.
Edit, compare, play. Edits undo like any asset edit; saving writes exactly what Save Game To Slot would, with a backup. Compare any two saves side by side, even of different versions or classes. Press Play to start Play In Editor with a save in its slot, and get the slot's own file back afterwards. While the game runs, watch and edit its live SaveGame objects. Saves the game writes reload by themselves, with a change log.
Then fix it for your players. Every SaveGame class has its own Save Data Version, and every save carries it, from the stock save nodes, with no subclass and no code change. Changed a class? New Save Version takes an old save, lists what it loses, lets you point each field at its new home, tries every move on that save, and makes the migration Blueprint and the new version in one go. Swap Load Game From Slot for Load Game From Slot (Migrated) and those migrations run for the versions a save has not been through: move values, read what the class dropped, report. Renames are recovered in packaged games too, and fields that would crash the loader are cut out instead.
Features:
Opens any .sav in its own SaveGame class, C++ or Blueprint; Decode As another class; raw view without a class
Every savable property type, including instanced structs, gameplay tags, sets, maps, optionals and static arrays; legacy 5.3 and older saves
Row badges: in file, default, edited, PIE only, unresolved, would crash, lossy, migrated
Issues as a packaged game or the editor sees them, with one-click rename rules
Edit with undo; save with backups and confirmations; the save's version kept until it is migrated
Side-by-side compare paired by field name, including header and dropped data, against files, open saves, live objects, earlier versions or the state before migrating
Play a save in Play In Editor with the slot restored afterwards, even after an editor crash
Live PIE SaveGame objects, editable in place, with snapshots
Auto-reload when the game writes a save, with a change log
JSON export and copy
A Save Data Version per SaveGame class, stamped into every save by the stock save nodes; a parent class's migrations reach its subclasses' saves
New Save Version: a guided window from an old save to the migration step and the class's next version, every move tried on that save first; from the Tools menu or a SaveGame Blueprint's context menu
Load Game From Slot (Migrated), async and from memory, with a report of every field dropped and recovered
Save Game Migration Blueprints with Field Moves and a Migrate event that reads every saved value; they register and cook themselves
Rename recovery that works in packaged games; crash-prone fields cut out instead of asserting








