"Over-Engineered Invaders" was my June entry into #1GAM. It's not publically available as I was lazy and used copyrighted graphics from the original Space Invaders. Having said that, the main reason for creating it was to put some of my own framework to the test. The results were certainly enlightening…
This might not sound like something positive, but a key part of me writing the game was to find out where my own code and process was below-par.
Needless to say, I found plenty of places to improve, and building a quick project really highlighted them. Some areas of code are poorly written, and there are other areas of functionality are missing completely. I never really realised how much of a help Flixel is, so it was certainly an eye opener.
One part that went absolutely right was the custom entity framework. I used a very simple version of component-based entities when creating Ineptia, and even though it was crude it really helped. This time around I used an entity system approach, and it worked out better than I ever could have hoped.
In previous iterations I have used components that have data and behaviour mixed together. It works well enough, but one thing that always bothered me was deciding which component should do what, and how they should communicate. With entity systems, the component is just data and systems are just behaviour. It makes breaking down data and behaviour much easier, and because systems can access multiple components at once there is rarely a need for them to communicate with other systems.
With this approach, systems are added to the World and can then register their interest with one or more components. For example, you can have a system that only cares about entities with a PlayerComponent attached. Like components, systems can be added and removed at runtime, so new behaviours can be added dynamically.
There's a couple of gotcha's, and it requires a slightly different way of breaking things down, but it works rather well.
Although it wasn't very polished, but the main reason for keeping the build private was the use of copyrighted graphics. Now I'm pretty sure the lawyers wouldn't have come to get me, but you can never be too careful.
I moved house at the end of May, and the various bits of move prep spilled into June. Coupled with work deadlines it didn't leave me much time or energy for game development, so I didn't start until very late in the month. If I had started earlier I would have been able to change out the graphics and release something.