One of the parts of this project I enjoyed the most:
To aid debugging and unit testing, I use a deterministic random number generator called GameRand. In debug mode, I can capture the random seed and log of every action taken in the game. Then I can replay that to reproduce a bug or create a test.
I ended up creating nearly exhaustive test coverage this way.
A write-up with more technical details and links to source code: