I made a save system that needs no special setup to save all the actors in a level.
When I looked at existing save systems, I didn’t like how they always needed manual setup for the actors being saved.
You’d have to tag which actor types to save, and generally tag individual variables that you want to save with the SaveGame flag.
While that gives you a lot of control over exactly what is saved, having to configure every type of actor is both time-consuming and error-prone (as you can easily miss tagging a specific property and introduce save/load bugs later.)
Plus, a lot of the default actors and components that come as part of Unreal are not set up for saving - they never use the SaveGame tag, and often have complex C++ systems that are not based on property variables at all.
So I created a save game system that automatically saves everything. Every actor in the level is saved, along with its properties, its components and sub-objects, and their properties.
Standard Unreal types with more complex data have special-case handling so that they are properly saved and loaded too.
Physics state, material instances, ragdoll poses, light settings - all are saved and restored automatically.
The only thing is explicitly doesn’t save is the state of the UI. I could theoretically have added support for this too, but it would have drastically increased the save file for something that most games would probably just refresh upon reload anyway.
In most cases, the only required setup for the system is to simply bind keys to call the save and load functions, and possibly trigger a UI refresh.
Save file size
To prevent the saves from getting too large, it only saves the values which have changed.
It does this in two ways:
- One, it simply skips saving any property which is the same as on the class’s default object.
- Two, at the start of the level, it takes a snapshot of the state of the level, and filters out any values in the save that haven’t changed since that snapshot.
Same-map loading
A second thing that I don’t like in save systems in general is when they take a long time to reload a game.
Normally this happens because, in most save systems, the game has to first reload the entire level from scratch, and then apply the changes from the save file on top of the freshly-loaded level.
My system can bypass this by applying the save in-place, without having to reload the entire level first. This makes reloading within the same level extremely fast.
The system also has other features, including support for level streaming, rolling backups, loading screens, an on-screen saving indicator, saving screenshots, etc. - the full list of features is on its Fab page.
Here is a video that shows getting the system set up and working in the standard Arena Shooter template in under three minutes.
NV Save / Load - Basic setup example - Arena Shooter template
This system is available for sale on Fab: NV Save / Load on Fab.

