Gold of the Kingdoms - an XNA/C# homebrew game
Gold of the Kingdoms was born of my desire to create a complete game, decently balanced and with music and sound effects. Although I haven't developed a game for Windows in a long time, I read that XNA is friendly to use, and the added benefit of being able to program in C# (which I'm currently using at work) convinced me to follow this route. The game took just over three months to create.

For more technical details, check out the Development section below.

Gold of the Kingdoms has you guide a caravan between various kingdoms where goods can be traded in order to make a profit. During travel, the caravan can encounter various hazards such as wolves and bandits. As such, upgrades can be purchased in order to reduce losses to such hazards. At the other end of the spectrum, scoundrels can be hired, and they will steals from others and bring you the spoils!

The ultimate goal of the game is to influence all kingdoms in the realm, which is accomplished by paying a large sum of gold in each kingdom.



Downloads


Installer - installer for Windows. Download this to play. Tested in Windows XP and 7.
Source - source code (Visual Studio solution).

Screenshots



Development


While most of the resources such as songs, sound effects, and textures were taken from free game development resource sites, the Gold of the Kingdoms program was designed and written from scratch. This includes things like mouse routines, UI elements design, etc.

My approach is to first program the fundamental game rules in their own heavily-tested and well-covered assembly (called Core). Then the development shifted almost entirely to the XNA interface elements. Once I was happy with how the game felt, I invested time in balancing it, revisiting some of the Core code. Here is a chronological progression of where the effort was spent.

Here are a few code statistics:

95% Core test coverage


84 out of 100 Maintainability index (Visual Studio report)

Largest class: 205 lines of code

As part of testing, I've also ensured that there are no memory leaks by creating a user defined report in Windows' Perfmon, and then playing the game intermittently for about two hours. The report contained nothing remarkable, which was good news.

In terms of what I could have done better, I considered using StructureMap for dependency management and injection at a point in time, but decided against it. Towards the end of development, it became apparent that it would have saved me a bit of time and code.

More time than anticipated went into finding and editing resources, but it was also fun. I think that during the development of indie games there is a certain moment in time when the program stops feeling like a program you have been writing every evening and starts feeling like a game.

Enjoy the game!