Savior 3 update:
[Improvement]:
- Savior 3 is nearly 30% faster on heavy data loading.
- Restores Relative Transform attachments on respawn.
- Load World: added “Reset Level on Load” option.
- Load Level: added “Stream Level on Load” option.
- Mitigating ‘Child Actor’ transform conflicts on load.
- Added support for Class Reference properties.
- Added support for Int64 properties.
[New Built-in Systems]:
- Save/load Skeletal/Mesh Reference (root component mesh).
- Save/load Animation Blueprints’ properties (Variables).
- Save/load Movable Lights’ native properties.
- Save/load Dynamic Materials’ properties.
[New Nodes]:
- [SAVIOR] Open Level (+HUD).
- [SAVIOR] Open Level (+HUD) +Callbacks].
- [SAVIOR] Load Object : (Slot Data).
- [SAVIOR] Load Component : (Slot Data).
- [SAVIOR] Load Actor : (Slot Data).
Open Level (+HUD) nodes:
These nodes can execute an action to open a persistent level while triggering a Savior Slot’s loading screen.
It doesn’t perform any data load from any slot, just opens a regular persistent map.
https://i.imgur.com/pmtpt0J.png
Load Object nodes:
The Load xxx (Data) internally were called StaticLoadxXx functions…
This have changed, you will have to replace them to new ones now they have been renamed in C++.
https://i.imgur.com/PyXPhih.png
Animation Blueprint Variables:
I have added support for directly saving and loading properties of Anim Instance Blueprints that are marked ‘Save Game’ on spawned Characters;
Removing the need to pass data through Characters to their AnimBP after a slot was loaded.
Your Animation Blueprint must implement the ‘Savior Serializable’ interface for this to work.
https://i.imgur.com/BuQiulT.png
https://i.imgur.com/AFDA4Cb.png
https://i.imgur.com/3na8G8C.png
Skeletal Meshes, Static Meshes, and Dynamic Material Instances:
A bundle of new algorithms that allows us to save and runtime load skeletals or meshes of root components;
As well as restoring dynamic material instances’ parameters, such as scalar params, vector params, and texture object params.
This was the hardest one to add since it touches stuff from a bunch of different threads, including the rendering thread.
https://i.imgur.com/RhgN9qs.gif
Movable Light Sources:
And finally, native C++ properties of movable light sources can be saved and restored without requiring ‘Save Game’ flags.
Only ‘Movable’ light sources are supported.
https://i.imgur.com/52gtwVx.png
Some notes to keep in mind with Savior v3:
-
Savior 3 can save and restore scalar public parameters, vector parameters, and public texture parameters of dynamic material instances on Actors’ meshes.
-
So “Save Actor” function automatically saves Dynamic Material Instances for Actor that implements the ‘Serializable’ interface.
-
And “Save World” function makes use of the Save Actor node, so the same rule from above applies when using this function.
-
Dynamic Material Instances does not require ‘Save Game’ check box on properties.
-
Check Epic’s documentation on dynamic material instances.
-
To save an Animation Instance, the Anim BP class must implement the ‘Serializable’ interface.
-
When serializing Animations, it’s not desirable to add a SGUID to Animation Instance if owning Actor already has a valid SGUID (it’s just not necessary).
-
Animation Properties to be saved require to be marked with the ‘Save Game’ check box, just like properties of regular Blueprints.
-
Light Component properties are only saved/loaded if the light source transform is set to ‘Movable’, dynamic lights.
-
None of Savior 3 features work for the ‘Minimal’ data set, only slots using ‘Complex’ data format (‘Compression’ setting on Slot class) support these new features.