[PLUGIN] Savior

Hey, Master how things going with Savior 5 - There is a relase nearly soon with the new Demo ;)? Can we except World Partition and Travel Level Case sort of Multiplayer implementation?

Hmm… why would you need a save system to be network replicated?

The updated plugin is already on Fab, but due to crunch at work, I am still pending on a new demo project. I also need to write a lot of new documentation for this plugin.

1 Like

Hey i see, cant wait! Just Would like saving things on the server like player buildings, foliage,killed enemies- progress in quests (load info for other clients that join so that info need to be delivered somehow) - also containers with items (shared stash) - as example when dedicated server goes down or have 1 hour loop save server- to have everything in place. Thanks

If you do a “Is Server” check before calling any save function, the save process will run on the server.

1 Like

Hi,

I’m sorry if this has already been asked and answered, this is a real long thread to go through.

Is there a way to create new slots at runtime?

My game map is generated procedurally. What I would like to do is have the player select “New Game” and provide a “Seed” value. This would create a new world and it would be saved. Then they can load that game from a selectable list of saved games. If they want to create a new world, they can, and still be able to access the old world. I don’t want to have a limit on the amount of worlds they can have saved.

I am on the road right now, but I will explain to you as soon as I am home from work today.

It’s very simple, will show you some settings screenshots later. :+1:

@jrussbowman A lot of projects do something like this:

You have only 1 slot template type, then you just override the Slot File Name property, like in this example below.

Thank you. I’ll give this a try.

Will the widget for loading available saves work with this or should I scan the files?

The widget class there should work fine, but you might have to “read the slot file” before drawing it to the screen.

Ok thank you, hopefully I can get some time to work on this, this weekend.

This is what I came up with, the filename looks correct according to the print string. However, it doesn’t create any slots in the slotpicker widget this is the event construct of. Am I missing something?

Edit: The read slot from file is failing, if I skip it then I don’t appear to be getting a valid slot as the load game world fails.

Edit2: I realized that I had not been saving the meta data, so I got that in. Added a check for my file scan to not bypass trying to read the metadata file as a file. Still failing.

I’m working on trying to modify the readslotfromfile to get some debugging in to understand why it’s failing.

Edit3: Last edit, the issue was by scanning the files I was getting a string that ended with .sav, Savior automatically appends .sav so I was looking for files that ending in .sav.sav. I fixed that and it’s working now.

It’s late here, calling it a night :slight_smile:

Yeah, sorry about that.
You should read “slot meta”. Reading the actual slot file is slow and not required for a widget.

1 Like

Any update when this is coming? I checked the test I made earlier and it looks like the latest version still doesn’t save the instanced struct.

Oh sorry.
I had some schedule issues lately.
I will note here to implement it this week!
By the weekend at the latest I guess.

(I’m working for a Japanese company at the time and the crunch is quite real lol)

1 Like

No worries, there’s no big hurry if it means you won’t burn yourself out :person_bowing:

1 Like

I am pushing this Sunday an update where FInstancedStructs are supported.
At this time, this is only on Unreal 5.5 (and I will update the plugin for 5.6 later as well)

However, the underlying struct supported for deserialization currently is limited.
The supported types right (within Instanced Struct) are these:

FGuid
FVector
FVector2D
FRotator
FTransform
FLinearColor
FColor
FVector4
FQuat
FMatrix
FPlane
FSphere
FBox2D
FRay

I might make it support any inner type in the future, but right now there are technical limitations to how it was implemented.

2 Likes