I haven’t been so regular lately, because of exams (a belated round of vivas), a visit from family, tax declarations and various other things to sort out as I prepare to leave the country.
I’ve also recently been offered some free webspace by “PruHosting.org”, so a special thanks to Patrick Ruitenberg. I’m likely going to migrate the blog over there when I’ve had some time to sit down and learn a how to install and run a WordPress server.
I’ve always made games, just not on computer: when I was young I used to make them using coloured pencils, but somehow it never occurred to me that I should try to do some actual programming. Then I was making maps for “Starcraft” and “Warcraft 3″ (Blizzard have always provided great mod tools), none of which were very much good and none of which I have any more: I kept them for a while by I ended up deleting them because I didn’t have the actual games any more.
That’s trouble with modding: if you want to show somebody else your work then they need to own the game too. This restricts your audience greatly. You’re also very restrained, because no matter how good the mod tools are they were made to make the original game, not yours. And of course if you lose your licence details your work may be forever locked away in a game file you can’t access.
I used “Gamemaker” for a number of years: it really is a great tool, and unlike the mod tools I used before, it creates an executable at the end that can be run by anyone who uses Windows. This means that unlike “Unity” or Flash, Java or Python (“Pygame”), the user doesn’t need any software installed to play your game, because it’s compiled, rather interpreted (or compiled and interpreted like Java). This makes it a lot easier to share. The trouble is of course that it only runs on Windows, and as I’ve explained in great length, I’m not a huge fan.
In addition, this ease-of-use comes at a price, and that price is efficiency: when I started building rigid-body, particle and constraint-based physics systems I ran up against a number of problems related to the way the program worked on a very base level. So Gamemaker is brilliant for doing little mock-ups really quickly, but you’re not going to be able to build something like “World of Goo” or “Braid” unless you start from scratch.
Last time I talked about the “Spring” RTS engine: I actually worked with it for some time, and had a lot of fun learning to make 3D models using “Wings 3D” and how to texture them in “GIMP”. I also messed around with “Lua” a bit, in order to script animations. By the time an exam period came round to take the wind out of my sails, I had a couple of units working in the game, which was very satisfying.
But even though Spring is open-source and cross-platform, there’s still a sense that it was made specifically for “Total Annihilation”: for example, the fact that animations have to be scripted limits their complexity, and it’s not possible to deform meshes in any way, which is fine for tanks and robots but a serious problem if you’re trying to make something organic (remember how strangely units moved in “Total Annihilation: Kingdoms”?). Okay, so technically I could go in and rewrite the engine myself, but if I’m going to do that, why not try doing it myself?
Also, although I learnt a lot about 3D modelling and texturing, most of what I had to learn was how that specific game engine had been designed, something that’s not really much use for anything else.
The reason this is a bad thing is that I consider myself to be very much in a learning period: I’m not good enough at programming, 2D animation or 3D modelling to make any of my wild ideas come to life, so everything that I work on needs to teach me something new. Hence the little games in C with “SDL”. First a Sokoban clone to learn the basic of drawing sprites on a screen with a simple graphics library, dealing with input, loading and saving. Then there was a Snake clone to practice regulating frame-rates and drawing text on the screen (a short while ago updated the graphics and released it). The results are not nearly as important as the lessons learnt.
Recently I’ve been working using C++/OpenGL with Striker, of “TheGameHippo.com” fame. Striker built the basic engine architecture and I’ve been doing the higher logic code (we haven’t actually done any work for a while, because of my exams and family visits and his new job).
Working with somebody else has taught me an important lesson: that although it’s nice to do everything yourself and from scratch, and occasionally frustrating to work within someone else’s framework, it is simply impossible to do be everywhere at once, and making a reasonable game from the ground up is not feasible for one person. Unless, of course, that person’s name is “David Rosen”.
Alas, for us mortals, stubbornness can only get one so far. If anyone else has insight to share with regard to getting into game development, teamwork, modding and choice of languages, please speak up!