I’ve been hacking away at a part-time project for the last few days. It’s an implementation of a tabletop game we used to play as teenagers called Armageddon (aka Das Ewige Spiel). It probably needs to be adapted a little for PBEM play.

The idea is to make a PBEM version of it, and try to come up with some new programming techniques if I can. Also, I’m using boost a lot more than I usually would, and dipping into more of their libraries.

The game will have a separate server and client, which exchange their data as xml files (orders going one way, a status report going the other way). I currently have no plans for the client (I write input files by hand), except that I want it to either be portable (Java or C++ with a portable graphics library) or a web interface, which would make it a web game rather than a PBEM. Or all of the above.

The server is written in C++, with libxml2, boost and luabind. The latter is mostly used for setting up the game and modifying the game state – I like having scriptable access to the game world, and I’ve had very positive experiences with lua for Eressea.

Currently, the server knows factions, simple units, regions (but no terrain or levels) and has two commands: one to move a unit and one to swap two units’ places. It can save and load the gameworld, and read orders from an XML file as well as write a simple XML report. That does not sound like a lot, but I’ve built the foundation on which I can build to add more features fast. My short-term TODO list contains terrain types (especially ocean), terrain levels, buildings, more unit types and recruitment/construction orders. It all depends on the weather this weekend, I’d say.

I’ll try to keep track of my progress and the stuff I learn on the blog, if I have the patience for it.