Hey Rama,
I just came about the need of versioning the save files. Did you consider that in your work yet? As a file loads the actors directly, every versioning needs to happen inside of the actor class itself.
One versioning thing I just came about is renaming of parameters (member variables). As your save system uses UPROPERTY to save/load the members by name, loading is broken when renaming happens. Would be nice to have something like:
Before loading: Remap the actor class. Like:
RamaSaveVersioning_RemapClass(FString oldClassName, FString newClassName);
Would be nice to use string for the new/old class name. Using UClass would need the old class still to exist. FString would make it possible to delete the unused stuff.
During actor load within RamaSave_PreLoad:
RamaSaveVersioning_RenameProperty(UClass class, FString oldPropertyName, FString newPropertyName);
Cheers.