Has anyone implemented any kind of save patching system within a blueprint-only game?
I have an interesting scenario where I released a demo for a game which had particular variables and their types defined in the SaveObject I’m using.
Since the demo released I’ve changed some of these variables to use different structs/types - and I’d like to be able to migrate a previous save file to be compatible with the new SaveObject.
Ideally I’d like to be able to run a patch logic on a save slot when someone loads it. I’m now storing a version variable on the SaveObject to indicate which version of the game build is, but that’s as far as I’ve got as I couldn’t see any blueprint nodes that could help me out here…
You could try to cast the loaded save object to a “LegacySave” object (which will have to be exactly the same as the old save). You could then read the values from that save, and pass it to the new one.
Ah yes, this might put be down the right path. I’ll need to backtrack and re-create my old save format. I have noticed that the engine seems really struggle and slow down when it encounters the difference in structs/types.
Just leaving a reply here - that I followed what you said and have it working now. It took me a while to bring the object back to it’s original state, but thankfully source control helped out there a bit I’ve now got another save object for the latest format, and am trying to come up with a robust framework for managing the new objects and being able to increment again in the future.