Over the weekend I spent a little bit of time working on an open source game that I’ve discussed in a pervious post. It’s called TripleA (Axis And Allies, hence three A’s). I’ve been working on a Universal Windows Platform version of this extremely flexible and powerful turn-based strategy game framework.

I’ve finished implementing the configuration load logic which pulls data from multiple files (both XML and property files) and loads it into an in-memory model. This model is essentially an object graph that contains the state of the map, all the territories, players, and game sequence.

I’ve been testing my map rendering and game config loading logic against two game scenarios.

The first scenario is classic. This is pretty much identical to the Axis and Allies board game.

Alt

The next scenario is called World At War. It’s a behemoth. It’ has a much more detailed map and massively more complex than the traditional Axis and Allies board game.

Alt

As you can see, my game map render is getting pretty good. There are a few minor things missing (e.g. displaying territory names and production units on the map) but I am deprioritizing that functionality so that I can focus on getting it interactive (adding / removing units, moving units, simulating battles). Once I get the client functional I can get onto what I am most interested in: making it multiplayer by building the server back end using Azure Service Fabric.

One of the cool things about the TripleA game engine (originally, written in Java) is that it provides a generic and configurable mechanism to define any turn-based game you want to play. There is a ton of configuration in the XML and property files and then you can even implement your own java classes that can implement from a set of interfaces that do different things to alter the game play.

I am loosely following the architecture of the old TripleA game engine. I am using it more for inspiration and understanding of how the game works rather than straight porting the code. In a nut shell, I am completely re-writing the client in C# and XAML.

Go check out my code here.