This final post is 6 days late, but there was no way I could have fit the final touches in earlier, and even though there are some minor things still missing or are clumsily implemented, I’m happy to bring this project to an end and declare it a small success. As can be seen from the image, the last days of development really paid off, and my feeling that all the necessary programming was in place and just needed some nice graphics to go with it was right. Among the new things are a nice background produced by Bernhard Stockmann and published under the Attribution-Noncommercial 3.0 Austria creative commons license, a sprite for the projectiles, a Mars texture on the planet (from planetpixelemporium.com, assembled by James Hastings-Trew), coloured indicators of the player numbers as well as score counters.
The game is now fairly playable, though a lot of small things are missing, such as explosions (particle effects) to visualize shots hitting their targets, hyperspace jumps, ship-ship collision, and more. But the core gameplay is definitely there, and several things that the official XNA Spacewar game doesn’t have are included in my version. Among them is the exact implementation of ships wrapping around the edges of the screen as well as exact collision detection using polygon outlines.
My goal of doing several iterations in an agile fashion didn’t really work out. This was largely due to a lot of other things going on this month which took attention away from the project. For further projects, I might try it again, but maybe I need to define goals about each iteration more closely to be able to work towards a specific set of features better.
The quality of the code is not that good. I simply followed my instincts where some things should go in the code, and by the end I think I have a better understanding of how XNA projects should be handled and how some things should be improved. Part of this is due to the game not really requiring a real game engine, so though there are parts a game engine in there, most of it is programmed specifically for this game. When I have some free time again and before I start another project, I’ll do some refactoring and then release the game’s code.
After this first small foray into the world of XNA, I have to say I’m happy about what I found. I work a lot with C#, so programming a game with it feels really natural to me. And similar to the .net framework, most of the functionality I was looking for is already included. On the other platforms I want to try out (e.g. Nintendo DS), I expect to do a lot more of the heavy lifting in terms of code and functionality myself.