I’m following your progress and your problem with save game is quite intersting.
Implementing reflections in c++ can be really difficult, maybe you can try to find a sort fo XStream (made for java) in c++?
But my comment is about how to mantain this kind of incremental and not-incremental informations.
IMHO is a big problem, and for me a solution can be to save into an archive (zip or whatever you want) not ONE big file, but many files: one for configurations, one for player status, one for world status, one for statistics and so on..
So changes can be managed more easly and, when you move into new version, identify with more detail what do you change or not.
Now, i don’t know your system (i’m a Java programmer), but i think that using Singleton,Factory, Business Delegate patterns on loading/saving this kind of information can help you a lot to keep control on your save/load subsystem. In particular maybe using not binary file but text file in one format (xml,csv, etc..) can help you into debug phase.
Image to move from 1.0 to 1.1: if some of your users have some problems with save file, you can say “please send me your save file”. If this file is human-readable, you can compare with many programs with your “skeleton” or “example save file” and find problem not on skeleton but into values.
What do you think?
What do you think? How to solve this problem?