A huge game. A huge, sprawling free-form adventure game. An epic creation featuring emergent gameplay in a continually-evolving persistent world.
But then I realized: man, that’d be really hard to do.
I’ve taken on over ambitious personal projects before, though, often going into them with the full knowledge that I would never even get half-way to completion before losing my motivation and giving up. I’ve started development of loads of games in the past. I’ve completed this many: zero.
It’s not my primary motivation, clearly, but it would be nice to see one of these projects to completion for once.
Now, a lot of game development is involved with the creation of so-called “boilerplate” code. Standard stuff that every game has to do – set up the screen, move stuff around on it, check for control input, etc etc. In order to keep my motivation up, I decided that I would implement a nice, reusable game library that would encapsulate a lot of standard code. While developing it I could still imagine that I am contributing to my great big megaproject, but I’d write a smaller, simpler game on top of it, driving development and testing it out.
With this in mind, along with a vague idea of what my “simple” game would involve, I fired up my IDE and got cracking.
Unfortunately, as I mulled over game #2, lots of new ideas for it popped into my head, and I began to realize that the “small” game that I had envisioned cracking out on top of my game library was likely to be a lot more complicated than I had anticipated.
And so was born game idea #3. Shootah will be an abstract, top-down, scrolling shooter, which shouldn’t take a lifetime to develop, but will produce a lot of code that can be used in future projects. Once it’s complete, WUGL (That’s Washing Up Game Library. I thought of that myself!) will be mature enough to let me get #2 off the ground relatively quickly, skipping the boring stuff and being able to get into the actual game without too much effort.
Mmmm… I do so love nice, modular, reusable code.
As of right now, the basic framework is in place, the game launches, stuff moves about the screen. That’s about it. But I’m adopting a “release early/release often” strategy, and will be putting up a very very early build as soon as I polish off the launcher/autoupdater. That way anyone who’s interested can at least do some early testing and hopefully catch problems as quickly as possible.
Did I mention that I’m using Java, so it’ll be available on Windows, Mac and Linux? No? Well I am. That’s good, isn’t it?