I’m trying to create a quick saving system like in games such as TES: Skyrim, Half-Life, Deus-Ex, Dishonored etc. Basically, whenever I save, location, velocity, properties and any other relevant variables of the game are stored, but the task seems impossible to me.
Saving property of every actor in the level is fine enough with “get all actors” node, but how do I save things that might have been destroyed? What about things that got spawned-in later like grenades?
I couldn’t find a single tutorial that covered anything more advanced than “create a single variable in the save game object and then load it”.
I was even ready to spend some money on a 3rd party plugin, but even those didn’t seem to have a solution. I looked up Savior, but I found it’s documentation too poor for how advanced the plugin was, as well as CW Auto-save, which has video tutorials, that I tried to follow, but despite using the same nodes, the functionality from videos either didn’t work or froze the editor.
Is Unreal just not capable of mass-saving whole levels like that? I assume it can do it, since I’ve seen games made in it implementing saving like that, but I can’t find any information about how to implement it whatsoever.
The answer is the save game, I’m afraid. But you have to get your around how saving actually works, because each thing that you want saved, has to know about that.
Anything that should have consistent status across different gameplay sessions, needs to save and load itself. If something gets destroyed, then it will know next time the game loads, it can just remove itself, and so on.
Doors that have been unlocked, can unlock themselves, etc.
If you think about it, there’s no way Epic, or anyone else, can implement a blanket save system, because they don’t know what kind of application you’re going to write using the engine, and what needs to be saved.
I think I see what you mean. Of course, there’s no build-in solution since the engine has to fit any functionality any dev might want, but I hoped someone has figured out a simple-ish way to at least start me off.
What I understand from your reply, is that I need to somehow store variables about status of things, so if a thing is destroyed, I’d need to have a variable like “is destroyed” and destroy it on begin play if it’s on? I can work with that I think…
Yes, for example, if you have a door which can change color and / or open. How would the engine devs ever know that? So it’s really up to you to code it.
Some of these plugins ( like Savior I think ), will reset any blueprint variables back to how they were when the save was done. But you still have to write the code to maintain the consistency.