[PLUGIN] Savior

There’s a node “New Slot Instance” for that.

I saw trying to have a look to the project just to understand how to use the plug in

I am sorry to say that the project ue 4.27 doesn’t compile.
Could you fix it, please?

And why it requires simpleinventoryplugin?

A 2 minute video would be possible without a proper documentation?

The plugin is not included in demo projects.

There’s a very reasonable guide on how to use it as the main topic of this very forum post, and the link to docs on the marketplace page description.
I know many people don’t like to read, but that’s not on me.

I am trying to implement the ISAVIOR_Serializable interface functions, specifically OnSaved() and OnLoaded() as follows:

UFUNCTION() virtual void OnSaved_Implementation() override;
UFUNCTION() virtual void OnLoaded_Implementation(const FSlotMeta& MetaData) override;|

However, only the OnSaved_Implementation() is executed, and not the OnLoaded_Implementation(). I am doing this in my Game Instance. OnLoaded() works fine for my other actors.

  1. Is OnLoaded() not supported in the Game Instance unlike OnSaved()?
  2. Could it be that the OnLoaded() delegate is not hooked up for the Game Instance?

I am using C++ and UE4.27.

I will have to verify that.
Which node are you using to load?

I am using LoadLevel.

Hmm …
The “LoadLevel” only looks for actors that are inside a level.

The Game Instance is not an actor and it isn’t ‘inside’ any level instances, it exists throughout the play session regardless of any level currently open.

After loading a Level you can also use the 'Load Game Instance" (not the async one).

Greetings,

I have purchased the plugin, after adding the plugin , my project doesnt Compile in 5.3 (both plugin and project are 5.3)

it says Savior and SaviorEditor are built with diffrent engine version. i tried many possible solutions

I have rebuilt and compiled the project with c++ , i faced several errors.

I added the Public dependencies to the Modules, didnt work,

all my attemps have failed so far.

I have a theory that the long list of errors might be coming from the FieldNotificationSystem, maybe it has something to do with the savior editor ??
after activating the savior plugin i get more than 300 errors regarding the UI and widget systems .here is a snapshot of my errors.

Update 1 : I fixed the issue by “Not moving the plugin from Engine directory to project directory”, i had moved the plugin folder form Engine files to project files (for my version control) , now the plugin is back at Engine directory and im wondering why the plugin doesnt load when its located in my project files, as i prefer it to be inside my project directory so everything can be compiled and saved to my version control together.

With regards.

The plugin for 5.3 is not the same for 5.2.
If you move the files you will have to do it again after installing plugin version for Unreal 5.3.

Thanks for your response, its working as you mentioned.
Im trying to figure out the system ,now i have encountered 2 difficulties.

1 : any recommendations for how to save timers and delays? for example, my game respawns some items 300 seconds after interaction, (using Ftimers in blueprints) and it destroys new spawned actors with “delay node” after 500s , how can I load the last state of timers (the remaining time and activation state of timer) when the game is loaded?

2: is there any way to save the state of “Do once nodes” or any other nodes which can switch the logic flow? (such as Gate, Do once, FlipFlop)

with regards.

Create a ‘Boolean’ variable and mark it ‘Save Game’.
ft the boolean ( let’s call it WasTimerTriggered ) is true after loading save data, then replicate the code that should run (or never run again) based on the state of the boolean value.

Just let me thanks you
We have just abandoned your product due to the lack of guide and support toward one much better.
And with documentation too
Kind regards

No problem,
Good luck.

Hello again and good afternoon (or morning!),

trying to understand different features of the plugin,
I know what is “SGUID” , however i don’t know What is the difference between Using “SGUID” variable in a class and implementing “Serialized” interface in a class?
would you please elaborate on these 2 terms and their use cases please?
I appreciate your help.

“Serialized” means the data of the class is saved into the save file then restored back to the class instance when loaded.

The “SGUID” is a key property to identify the instance of your class that is created at runtime, the object that you want to save (you don’t want to save the class itself, you want to save the properties of the instance, and for that you need the ‘SGUID’ identifier for the system to know which instance is which).

I see , thanks for response

I noticed your GitHub note about SGUID of “player character” ,i understand why it should be set to 000-000-000, however I’m working on a multiplayer game with multiple player characters , if the SGUID of all player characters are set to 000 , then how the system can identify which character is which? when they all have same SGUID 000-000?

please take note that all my important data are stored inside the “Player Character” class, so i cant save them somewhere else, i have to save the player character data, but they all have the same 000-00-00 SGUID.

any idea how to get around that?

Several steam games convert the SteamID to a FGuid struct then store that as the SGUID value.

How you convert the SteamID to Guid is up to you though, there are several ways to construct a Guid from a String.

yes, we can generate FGUID from unique Steam IDs
but let’s say a player has the steam ID : 1084457154, i can convert this ID to SGUID : A254-FD54-885c-65d2 , now the SGUID is not 0000-0000-0000 and it wont work with player character in Shipping build as player SGUID should be all 0s for shipping mode,
that’s where ive been confused. :saluting_face:

No.
That’s a misunderstanding, where multiple characters of same class are spawned, the player one has invalidated SGuid for simplicity of use only.

You can give whatever value you want - as long it is always unique and always persistent, i.e: never changes whenever the game executable is rebooted again another time.

Now I’m starting to understand the plugin, I was browsing the Demo project and I saw your simple inventory plugin.
what is the “UAutoInstanced” class that you used for inventory component? its also included in the savior scope as well. i had seen “UAutoInstanced” before, but never understood how it actually works in unreal. is it some sort of dynamic class generator?

btw sorry to interrupt you with many questions, i do really appreciate your support.