I sometimes think, if it wasn’t for the rampant demolition of the world around me, I would have become a game developer.
I have an ambiguous relation to games. Once I was an avid gamer, but i’ve since gone off it. I’ve become very picky about my games too – they need to entertain me easily, not demand significant effort (i work enough all day as it is) while not be shallow or kitsch either. As such casual games of the Popcap variety are pretty much all ruled out (bar the excellent Plants vs Zombies), as are MMOs, and generally games with too much learning curve. And ones i find stressful – which now includes Half Life 2 sadly, though it was once the joy of my life, now it causes too much anxiety.
Anyway, there are some truely great games around. The one that haunts me still is Assasins Creed 2 – gorgeous environments, entertaining but not too difficult gameplay, some fun characters, and an intriguing plot – which unfortunately wanders off into retarded territory right at the end. I have no idea why they did it like that, it was a perfectly fine intrigue and they had to go throw in some stupid “the fate of the world rests in your hands” crap. Game story telling is around the level of a hollywood action b-movie.
Anyway the point was, i’m making a game, since its something i always wanted to do. Nothing spectacular, but i hope i can make it at least satisfying for myself. Drawing from PixelJunk Eden and the brilliant Flow and Flower games from ThatGameCompany, combined with some fun interaction courtesy of Craig Reynold’s Boids flocking model (which i’ve optimized in a way i’m quite proud of).
The general aim is to produce a relaxing game/toy, that is visually enchanting, reels you in without making any demands, and is relaxed at all times. Perhaps Eufloria would be the best example of the ambiance i’m going for (sadly unavailable on mac).
I’ll drop a couple of updates on the process here, maybe an image or two. Its being done in PulpCore – after much meandering and changes i settled on that, and i recommend it. Its a simple Java game applet framework. I wasted a lot of time choosing a language (since i had to learn from scratch) and a framework. I initially used Processing, which good fun for prototyping and art, but is quickly limited for more structured projects. I wandered into Flash territory for a while, with the Flixel engine. Also an excellent piece of kit and I would happily use it for another project. Sadly my vision involved hundreds of boids and the fundamental speed limitations of ActionScript meant that at best I would spend more time optimizing than creating.
On the other end of the spectrum was the Slick 2D opengl framework, also in java (since i started from processing which inherits from java i stuck to that root). But while feature rich, the API was just TOO rich and cluttered for my taste, as i was looking for something that would allow me to get going quickly and have good reference. Pulpcore turned out to have good enough performance (despite not being OpenGL) and a clean and nicely laid out API to let me learn fast.
Finally some tips for novice programmers who might stumble this way. I was quite confused at first as to what language to even use. Most game development leans towards C/C++. For nearly all indie games today this is unecessary. These are aweful languages to learn and force you to deal with lots of irrelevant junk. I was set on a language with built-in memory management. C# was promising but is far too focused on windows – i needed something mac-compatible, and wanted something cross platform. Python et al looked like they would be just too slow, despite the lovely syntax that makes programming so much less of a headache. Python is used a fair bit but generally as a scripting layer on top of a C engine. Since i didn’t want to deal with C, and would have to for the performance critical parts of my game this approach was ruled out.
So I stuck with java, despite most glances around the web indicating that its not really used for games. Which is sad, as its actually a good solution for a modern Indie – higher level language without some kind of propriety language (BlitzBasic, TorqueScript, etc), near-compiled speed, and useful for other programming tasks. The emergance of Android also makes it more interesting – a game written in java should be straightforward to port. Maybe i will try if i ever get my hands on an android device!