After you make the decision to not re-invent the wheel as far as technology goes the next step is to figure out what technology you are going to use. It's not as simple of a task as it seems given all of the alternatives out there but it has been relatively fun for me. As I've been evaluating technology options I've had the following criteria:
Must be cross platform
And by cross platform I really mean support both Windows and Mac. I'm focusing on these two platforms for a number of reasons
- My main dev machine is a Mac. I run bootcamp on it but I'd still like to develop in the Mac environment
- Windows is still the major target but while the Mac install base is small it is drastically under served. Lots of potential for the right title.
- Targeting other platforms is unrealistic at this time. I'm just not going to have access to dev kits for any consoles.
- iPhone == suckage. I know a tonne of people are targeting the iPhone but the platform is a crazy risk/reward proposition.
Must be open source
I am not a crazy open source zealot, in fact I think Stallman is a quack, but I like the idea of low/no cost licensing along with having access to all source code that I may need to debug through.
Must be mature and supported
No shiny new technology that isn't proven in commercial games and has been around for a while. Also no tech that is dead and not being supported any more. I've learned that any piece of tech has problems but as long as it has a good sized community behind it usually someone has solved the problem you're having.
Must be native code
I like all kinds of tech from managed code to interpreted scripting languages but C++ is still the king when it comes to doing the heavy lifting of game development. Integrating a scripting engine for things like AI behavior is a possibility but the major systems are all native code.
For early prototyping I've decided that I need a rendering engine, a physics engine and an input engine. I'll figure out the other major systems when I get to the point of needing them. For now I've decided on:
- Ogre3d - All the fancy features, great support, battle tested.
- OIS - Already integrated with the Ogre3D samples so why not?
- ODE - I've used this in the past and loved it.
My mind will be open to other options as I start working through things. If one tech proves that it isn't cutting it then I have no qualms about replacing it but I don't plan to replace anything because something new and shiny comes along. Deciding on tech early that will do the job and sticking with it is the first step to actually finishing a game :)