In the slices of time between working on feature films, doing illustrations and other things that provide income, I am also trying to teach myself the ins and outs of game design. Why? well, mostly cuz i enjoy gaming, always have. I started writing simple games way back in 6th grade when i first learned BASIC and Logo, and i have been toying with them ever since. Now i find myself with some free time and all the tools and knowledge to build my own game and no excuse not to. Plus, i think it would be fun, career-wise to move sort of laterally from the development i do in the film industry to a similar role in the gaming/interactive industry.
Since i am a programmer first and a writer and artist second (or tenth, or seventeenth), i am approaching the game design field from the technical end. All of the websites out there that offer advice as to becoming a game developer suggest you write a version of tetris first, then some platformer like mario bros. or a tile-based game like zelda. After that, start to think about your own simple game that may or may not involve the more complicated game structures. This is basically what i did. Being already fairly familiar with real-time interactive systems form my camera-control software, i started with some simple game-engine like applications that werent actually games, but more like exercises in game design. Once i felt confident that i understood the basics (which are, in fact fairly basic) i moved up to a ‘Gauntlet’ style arcade tile based game. using the stuff i had written previously, this was pretty easy to do and in a few weeks of spare time i had covered all the ground i wanted to cover with that. (i never actually finished it, but i built a map-making tool and a map importer, and had some AI bits, and learned a great deal about what works and what doesn’t and why you need things like the A* (a-star) pathfinder algorithm, and what a scene-graph is used for.
The fact of the matter is that, even though i am a programmer, i am really not that interested in re-inventing the wheel and writing my own ground-up game engine. however, i do want to know enough about the parts of a game-engine so that i can expand on the ready-made ones and understand why things do what they do.
So, at this point i was ready to start thinking about my own game. I have some ideas, and i want to start very simple. I think i will start with a 2d tile-based game, arcade style but with RPG elements. Like zelda or gauntlet. I am not trying to bust open the cutting edge of graphic performance or even make a hugely popular game, i am just at the point that i want to build the entire thing from start to finish and have more than just some coding exercises under my belt. So i went in search of some pre-built game engines to build my simple game.
i started at Garage Games. Their stuff is quite nice, especially if you are a coder. You can purchase the entire game engine codebase and modify it to your heart’s content. Their codebase (at least the 3d engine) has a nice client/server design so that it is fairly easy to build collabarative/multiplayer games. They also have a great 2D game builder, which you can also get the code for. However, even if you dont want to code, the 2d builder is quite advanced and you can build some pretty decent arcade style 2d games with little effort and write very little code.
i also looked at the Unity game engine. Since i am a fully Mac work environment, this tool looked really good. And, it is really good. If you like to work in a visual IDE style environment, and dont mind scripting your objects in C# or Javascript, it is a great tool. I downloaded the 30 day trial and gave it a try. One thing i noticed (which is the same with the GG engines above as well) is that the Unity engine is very very dense. this is not a bad thing, but the interface can be daunting. also, it is primarily a 3d engine, and while you can definitely do 2d with it (or mock-2d in any case) the thing that bothered me the most was my inability to alter the source. (mostly to make things like dynamic content generation a bit easier. Not to say it isnt possible with the scripting tools they provide, but i did feel a bit penned in with unity.) That said, unity is a great tool and when i get around to doing some 3d games i will most likely come back to it.
The last tool i looked at is Flash. Flash isnt a game engine per se, but it has all the bits that a game engine really requires (which should be obvious, see as there are so many flash games out there). The downside of flash, is that flash games tend to be, how do i put this?.. shitty. Dont get me wrong, there are lots of fun flash games, but they are jsut that, fun flash games, not fun games. Flash makes it fairly easy to build games, and so everyone does. and as a result most of them are crap. Anyhow, i think that flash can be a good development platform and solves many of the compatibility issues that tend to come up. Plus it is a good skill to have if you are a software consultant-type looking for work. So i have decided to go with flash for the first simple tile-based game i am writing.