|Counting bytes saved|
It seems lots of people use marshaling and serializing interchangeably. It would appear that serializing is the conversion of data blocks into a stream of data that can be saved. This is what I'm doing right now...by hand. Marshaling seems to be the active "teleportation" of data from one place to other via a serialized method. When I was a database programmer once upon a time, I just had to pass whatever data object to a serialization method and it was automatically marshaled away. I don't have such a luxury in C. I also have to contend with the old 2 byte/4 byte/big-endian/little-endian integer issues.
So the big question is why am I doing this?
Well, one of the game's touchstones is that it interconnects with other games. "Rules of Engagement" links with "Breach 2". The interprocess communication (IPC) between the games was done via file transfer. Right now the game is binary-compatible with the original. This means, that I should be able to link the new version of ROE to the old version of Breach 2 and have them talk back and forth. (Also, if things go well, port Breach 2 next).
Also, in today's networked world, it would also be cool to trade captains, ships, races, missions, and systems online. Each are stand alone and don't require dependencies. (You don't need the G'shook Empire race on your HDD to share a mission with them in it.)
The game file serialization is the second to last filesystem thing I have to convert. The last is the auto-play demo files. It's partially implemented now, but is broken.