3d engines, reviews, first impressions and irritation
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.
- Cross platform - windows/linux/mac in that order of preference with at least win/linux
- scriptable - Lua/Squirrel or Python bindings with good network support
- 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)
- 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.
- 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.
- 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.
- 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.
- 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.
Recently

April 7th, 2008 at 8:05 pm
April 8th, 2008 at 1:16 pm
Thanks for posting this.. very useful insight here.
I’ve been using Panda3d off and on for awhile now, but haven’t had time to do comparisons to other engines. I’m really happy to hear I’m not the only one that can seen past it’s cheese ball name. It definitely seems that Panda hasn’t been getting nearly the attention it deserves, mainly because as soon as people see that it doesn’t have a level editor they immediately discard it. But really with how Panda is setup, it seems pretty easy to use a 3d modeling program to fit those needs and really allow for more than any other level editor I’ve seen.
That is easy for me to say since I’m an artist that plays around with python on the side. But only basic knowledge is needed to merge existing art assets or create objects that panda will read as entities (could have panda look for something like ent_* in the object name and have a text file that defines object properties maybe). If you are looking for a 3d app you can setup as a proper editor, I would take a look over Maya. They have python support and while they didn’t implement it well, someone in the community did with PyMel. Though in most cases, any major modeling program should work just fine without any modification.
Anyway, I hope more people in search for advice on game engines comes across your post. It seems like it could save them a lot of time and pain.
April 8th, 2008 at 1:31 pm
@Crimity - Hey thanks.. Yea, being a linux guy I sort of look past project names as we have some ridiculously named projects that are huge .. (gimp all the gnu stuff) ..
I think I am sold on panda, it seems to handle what I need and is what I have been looking for, frankly I am surprised there is not as many using it.. The wikipedia article mentions a problem with the license, but I cannot seem to figure out what that problem is.
Anyway, yea this post was written as a wrapup to research and also for a group of friends. I really hope I can save someone the two weeks it took me to review all those engines.
April 8th, 2008 at 2:07 pm
I looked that problem with the license.. I knew of the first one, but not the second.. though I don’t see it causing a problem for most people.
The bit about giving modifications back to Disney doesn’t seem bad.. since thats only if you make modifications to existing code. Since in most cases I don’t think anyone would need to make any changes to the existing code to make a game this doesn’t seem to matter much, but is very important to keep it in mind.
April 13th, 2008 at 8:21 pm
Hi there,
Thanks for the objective article about your search for the right engine, and for giving the amazing Panda3d engine a run through.
Being a very complete game engine and having a great community makes for a good choice.
THe engine has some amazing features , as you can see by going through the ‘features’ page and and having a great development team aided by a amazing community will continue to allow it to innovate.
One thing I wanted to clear up as to me is a non-issue. I know the issue of the license comes up sometimes and while technically you might call foul compared say to the LGPL of other engines, its really not a fair comment I dont think because what open source software is to suppose to do, is make code publicly available and to give back if you change it, for all to benefit from and essentially that is what this clause is doing ( IMHO only ). The second issue is beyond their control as they are a U.S. company and must adhere to government regulations. It’s a great company, a great engine , and its a noble thing to reach out and get code, make it better and give back to the community. The world could do far worse having such a model by which to mold a society.
I would like to take the opportunity to welcome you to the helpful community whether on the forums, or in IRC
cheers
neighborlee