"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…
What Went Right
Found some weaknesses
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.
Found some strengths
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.
What Went Wrong
No release
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.
Late start. Again.
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.
No inspiration
Although I enjoyed figuring out the technical aspects of the project, the idea of cloning Space Invaders didn't really trigger my imagination. I've always felt like I spend more time trying to solve software problems rather than gameplay ones, so I wasn't really expecting this.
Lessons
Start earlier
I'm writing this two weeks into June, so I guess I failed that already…
Don't use copyrighted material
This one speaks for itself really.
Make something I enjoy
Space Invaders was fun, but technical challenges alone don't motivate me as much as I thought they would. There needs to be some creative aspect in order to inspire me to build something.