I have a somewhat simple idea I want to make into a game. I ‘know’ that I can do it in PHP with a mix of css/ajax/json tied together with JQuery but I would like it to be something that I do not have to maintain as heavily as a browser app where I need to worry about various browsers and what might be coming along in the next incarnation of Firefox or the dreaded IE (which has been a horrendous thorn in my side on every web project I have ever built). I decided that I should look into a game engine for speed and OMG I entered a whole new world of hobby projects, half-baked ideas, expensive solutions, HUGE specialty engines, paid as your go solutions shamelessly pandered like a vanity press (Torque) and then the do-it-yourself engines.

After reading reviews and actually looking through a WHOLE slough of these various engines I came to the conclusion that like everything else there are ‘tools for the job’ and you need to pick the right tool for the exact job at hand while maintaining flexibility for things that you may need to do later and for growth. It is also helpful to work with languages and tools you currently know and enjoy working with. So I came up with some basics for what I need for my project because picking a game engine is perhaps one of the single most important parts of coding a game.

  1. Cross platform - windows/linux/mac in that order of preference with at least win/linux
  2. scriptable - Lua/Squirrel or Python bindings with good network support
  3. large and active community - Busy forums that are helpful where people share code (I personally like to share code when I solve a particularly vexing problem)
  4. ability to handle 3d - but NOT specifically a FPS engine (this was a major issue with a lot of the engines I looked at), I am much more interested in third person and or 3d/iso’ish with bounded-selects for my particular game.
  5. Free or very cheap - Why on earth would I want to pay a lot of money for something that I would then be limited in my ability to share my enhancements with the community later? (especially when this is a small project with one coder) There are many other ways to make money on software.. Host servers for games, write books, paid support contracts etc.
  6. Speed of use and decent learning curve - I do not want to spend a year learning some crazy API or some language some developers made up to create their own games.
  7. No click and drag / piecemeal engines - I.E. If an engine states that you just need to click together parts and then fill in some info to create your game I get really suspicious.
  8. Customizable - Why would I want my game to look just like someone else’s game and have reviews go “Oh this game is just like ___ but acts sort of like ___ don’t bother because you have seen it all before”

Once I started comparing a lot of the engines to my list they dropped off like flies. So in the end, because of my particular needs and want of simplicity, I was left with OGRE3d and Irrlicht, both of which fit the bill nicely and are well documented and used render engines that are not specifically boxed into one corner or another or limited by insane design schemes and/or unusable for my purposes. While being somewhat simple (Irrlicht is dead simple and I would highly recommend for hacking out quick 3d visualizations). Both engines are specifically for C++, which is all good but after taking a nice close look at my projects needs, and the fact that it really is not that complex graphically, working with optimized C++ is really not a big need as I am thinking I might have at most 20 characters/models on my screen at the most and the rest will interface changes that are done via network. Having to comb through the myriad of C++ libraries that I am only passingly familiar with and having to learn their syntax, quirks and funky compile issues all while ‘also’ learning a render engine left me with a foul taste in my mouth. However I pressed on and started to brush up on my C++ (which I have not used Visual C++ or Code::Blocks in a very long time and both these have changed dramatically since my last foray into C++). Then, I ran across something interesting while perusing the OGRE wiki.

PyOgre is a python binding to Ogre and I started looking into it and thought to myself “hey, I know python and I know a lot of the libraries as well.. this could speed up my development time.. hrm”. PyOgre bindings hook directly into the Ogre libs and Python runs anywhere. This might actually fit the bill, it easily fits into my list of needs and is lightweight enough and has a very good learning curve for me. So to be thorough off I went to the python game resources on the python site and I decided to look into the other engines that are out there for python that may been an even better fit for my particular needs. Most of these are HIGHLY specialized libs for doing things like math visualization or specific bindings to other engines I had already thrown out. Then while combing through the list I found ONE engine (unfortunately) named Panda3D (also see the wikipedia article) (it rises above it’s cheeseball name upon inspection) that seems like a decent fit and I am now in early stage playing around with it. So far I have found sample code for almost all the elements of the game I want to create and it appears to have the full features of other engines as well, though I would not be locked into having to deal with more than I want and can easily crank out a server app using stackless python (which on a low end box could handle many more clients than I could probably find for my game)

So finally at the end of two weeks of downloading, compiling and trying out engines, attempting to interact with the various communities and ducking shyster companies that want to nickel and dime every naive, hobby or wanna-be game maker (which by the way I find deplorable as some companies could actually be discouraging a lot of potential talent from actually creating their games by doing this, thus hurting the industry as a whole) *cough* Torque *cough* I have found that I came full circle back to python (pygame was the first engine I worked on the initial stages of this idea, that was three years ago) and ended up blending some preconceptions I naively had about game engines.

I am left with a choice between two engines that are different but fit the bill.
On one hand I have the very open ended and extensible OGRE via PyOGRE which it easy enough to be up and running with and on the other I have Panda 3d which already has many of the Pathfinding, audio, animation and import modules I need but I could extend it out quickly (and if I want can also program in C++ for parts or all of it)
In a straight comparison to be up and running quickly I am leaning towards Panda3d but I am still doing a little research into PyOGRE. Hopefully my next post I will plop some code and screen shots in here.

In the meantime, I hope this post saves someone some time their search for an engine for a game that is NOT an FPS (sorry they all look the same to me now, and are boring) but it not some 2d 1990 nintendo looking mess.
If you looking to build an RTS (real time strategy) or simulation style game (think ISO’ish) I would recommend you look into what Python has to offer.