[PLUGIN] Savior

I’ve submitted today version 2.3.0 for Unreal 4.18, 19 and 20.
This version contains a lot more checks to prevent crashes on a wide range of scenarios, I hope with this version I’ve managed to prevent anyone’s project from crashing on Load Game;
I’ve reworked the whole Array builder, that should sanitize Blueprint code I wasn’t expecting developers to execute WHILE the load process is running (nobody should run code while it is running, but still)…

If any of you still experience any crash with version 2.3, please let me know!
Update should be online in a few days.


Edit: Changes are complete, Epic already processed and update is published, should be available to you now (version 2.3.0)

How do i setup a temp save without writing it to disk? I have an instanced battle level that i want to save the data going into and out of battle but i don’t want to save it to disk (player has to been at a save check point in order to save to disk)

Unreal Engine’s standards in case like that is send data to your “Game Instance” Blueprint.

[USER=“434”]BrUnO XaVIeR[/USER] Hi there! I’ve got plugin some time ago but didn’t had a chance to try it.
Have a general understanding of how I can use it for typical objects in the game. Want to try it for saving “designs”. Kind of how in KSP you can design a rocket and then save/load such design.
The architecture is rather simple - “design” is an actor with a set of child actor component that contain “parts” of the design. The way I see it, I have to exclude this “design” actor from the general savegame system and save/load it separately for in-game editing. What I’m not sure about is if plugin can capture state of child actors. Is there are anything special I should worry about?

The plugin will not save relative position of child Actors (in v2).
Child Actor Components won’t load Transform data from the save files so I don’t save that info.

Ohh, I see. Can I change that in source or its some special consideration? Like is it a bad idea to store relative transform and load it later?
Besides “designs” there are vehicles that are already spawned from designs and they use the same architecture, so this will effect them too.

Some developer had bugs when saving/loading child actor transforms…
They will always be “corrupt positions” (when loading from save) because the way child actors are implemented into the ActorComponent source code.

I mean, the “ChildActorComponent” specifically.
Actor hierarchies work just fine, no issues there.

how would i go about setting the plugin up so save multiple levels to a single save slot? For example in a rpg you save a single slot but that save includes all the data from all the levels that you visited

Got it. Thank you! I’ll workaround it then.

RPGs save properties attached to the main player/character only.
( https://forums.unrealengine.com/development-discus… )

You can centralize all your data to Blueprints members of the “Game Mode” group.
Then use the “Save/Load Game Mode” plugin function and that will work independently of Level/Map your Player is in.

I’m having an issue with saving an array of character pointers. I add the player character to the array and save the game world. When i load the game world its adding a WorldSettings object to the array instead of the player character. The array is in the player controller which i added to the slot scope along with the player character blueprint object

Empty default “Scope” values, removing “Actor” class, etc…
Then add only the class of your Character there.

I did that when I created the slot object all I have are bp_player and bp_playerpc under the actor scope

What i did:

  1. Create a Character name it BP_Player and set that to be the default pawn in the game mode
  2. Create a PlayerController BP_PlayerPC and set that in the game mode
  3. Add an array of BP_Player object references to the BP_PlayerPC and flag it as SaveGame
  4. In BP_Player add input Space Bar which does the following:
    4a. Get the player controller cast it to BP_PlayerPC add self to the array
    4b. Call save game world passing in the slot object
    4c. Clear the array
  5. In BP_Player add input enter that does the following:
    5a. call load game world passing in the slot object
  6. Go to scene overview click on BP_PlayerPC object and look at array (the WorldSettings_1 object is there instead of BP_Player)

Hmm… that is very weird result.
Without a sample (empty) project reproducing that behavior I will not be able to investigate why that happens in your save setup.

Here is a blank project that reproduces the issue

Epic added a new check “IsInGameThread()” in a place that affects plugin behaviour…
My Actor Iterator is just ignored because of that and it cannot find the character pointed to, after that was added.

I’m not sure yet what I have to do to workaround this roadblock, but I will keep looking.

Okay, I set some internal threaded code to “take another path”… This problem is fixed.
I will send update to EpicGames as fast as I can.

Thank you very much for the useful repro project!

@falola Marketplace staff already processed the update I sent them.
Please update your version installed, that should work correctly now :slight_smile:

Works now thanks!!!

Hi Bruno ! Could you add a Screenshot/Thumbnail node, like in Savior 1 ?