Upgrading Save Games Across Game Updates

I’ve been tinkering with a reasonably complicated RPG and I’ve come into some trouble regarding loading/saving across build changes.

Specifically I’d like to try a rolling-release but I’m not sure how best to design my load/save to ensure old saves are compatible with new builds/releases* when save-data can sometimes drastically be different from what is expected but CAN be upgraded by manual logic*.

I’ve tried considering setting up a save game with just two variables that would never change, that can always be loaded and cast to a Save Game. A float specifying build the save was created with and a byte-array blob (with all objects serialized into a formatted string) and setting up special ‘upgrade’ logic in loading to attempt to create a series of routines that can easily be added and maintained functions (“Upgrade Save_00-10” from v0.0 to v1.0, Upgrade Save_10-25 from v1.0 to v2.5, generic examples) all called in succession but I’m having trouble conceptualizing changes to variables that might need complicated values other than int/float/string/byte. Examples might include entire Character blueprints. I’m not sure how override serialization in Blueprints to automate complicated array objects, etc… Some data/enums/structs/BPs no longer exist across builds…

Any thoughts? First time developing a Save Game with a complexity of this sort. (Character relations, equipments, items, quest management…) The only problem I see with all of this is that some game experiences/items/etc may need to be removed and others automatically forced onto a user…forcing users to replay the game for ‘full value’.

Edit Anyone also know how to override serialization in BPs, or should I just implement a “Get/Load Serialized Data” functions and manually format/set all values? Game is not Pausable (var), a menu-driven (UMG-based…!#%&ing nightmare to work with and implement own widgets for common controls) game with 3D backgrounds.

Edit No thoughts? Really?