Progress ReportThe save part of the Cell engine is now finished to alpha quality - it can serialize out any data structure defined in the cell definition file to XML. It implements cons hashing of instances, with a simple run length encoding of the actual map cell array. This optimizes the in-memory and on-disk representation for size, since I want Obsidian to handle very large megaprojects without borging the computer's memory. This trades off against speed a bit, but currently the cell engine takes about 12 seconds to save a deep 2x2 fortress, with DF suspended only for the first 4-5. That seems reasonable so far for an unoptimized debug build...
As a nice side effect, the XML file is also pretty darn compact now. A 2x2 embark with 180 z-levels is saved as just over 300kb of text XML. I might not even need a compressed binary serializer... argh, who am I kidding? This is DF - someone is probably already itching to throw a 15x15 embark with 500 z-levels into the front of the Cell Engine just to watch the pretty flames and shrapnel coming out of the back of it.

Ahem. The cell engine currently reads from DF and saves to file the following:
1 ) Tile types
2 ) Materials
3 ) Global Features (DF only has Underworld for now, AFAIK)
4 ) Local Features (Adamantium tubes, pits, stairways, river sources/sinks, etc.)
5 ) Veins
6 ) Stone Layers
7 ) Constructions
8 ) Settlement info*
Items and critters will eventually be added as well - but they are lower priority for now.
Next up: With the engine settling down to a somewhat stable architecture I'm going to finish the Lua bindings - so that you can query/manipulate all fortress data from inside of a Lua script.
After that I'll be grabbing the latest DFHack and updating the Cell engine to use it, i.e. get some support for 31.06+.
Once all that is done I will release a beta Lua module of the Cell Engine for anyone that wants to dump their fortresses to XML and play with them a bit in Lua. ETA is expected to be 2-3 weeks (we're entering finalling, so my days are going to be hectic for a bit)
Skeggox
* The code is written, but my version of DFHack doesn't implement it so I can't test it properly yet