When I wrote my first (anf for now the only) game in TurboPascal for MS-DOS, it had a fixed format with a hard-coded limits of object numbers, based on the static arrays. I used a simple BlockWrite() plus additional checksum for all the arrays representing the game objects. Notable is the fact that the whole level was stored in a savegame (around 40 Kbytes total) -- you didn't need the level file to load a game saved while roaming it.
...oh yes, and that game was a 3D FPS.

But now I, even before I started to flesh out my new engine, I anticipated the problem and developed my persistency system (chepersy). Should save a lot of effort on the date storage part, including all the compatibility and performance problems. Nobody seems to be interested, though, despite the fact that it could help a lot of people :cry:

I, honestly, plan to use it for everything, from the save games to 3d models. Because the other known solutions -- Ini files, raw binaries, TPersistent-based streams -- didn't statisfy me. And now, when I almost finished chepersy, they feel like a stone age tools to me.

If somebody at least tried to use chepersy for his own level editor... Honestly, It would benefit him greatly (me too). :roll: