In yesterday’s post about end of Edoiki development I promised to tell you about selecting the new development tools. The decision to end Edoiki development was finalized after roughly a month (this week was my deadline). I have some theoretical experience (and little practical) from object-oriented programming and I know the basics, but I have never really got into OO in practice. As I’m starting the new project, I’m taking the leap to the world of object oriented programming.
The process I used to choose a new development platform was pretty simple (although took some weeks):
- First I decided what I needed
- Then I listed out potential engines
- After that I made lots of testing, reading & learning and simply chose the engine
First I decided what I need
Before I started picking the engines, I had some requirements for the engine. Object-oriented development was a must. It had to be 3D. I also wanted it to be bit more powerful than Blitz3D which uses DX7. The engine must need to be well documented and have an active community. Proven projects (so that somebody has actually made something else than “tech demo” with the engine) was also a necessity. Price had to be “reasonable” (something around “not five number price, hopefully less than 4 number price”). Most of the possible indie engines seemed to be around $100 or $200 (which is extremely cheap as you think of it).
Edoiki was never for “casual gamer moms” (same goes for the new project), and many engines seemed to be using DirectX9. The fact that DirectX9 is already very widely spread made it easier for me to start development with a engine that uses DX9. See also some system requirements stats, which is taken from Steam.
I checked out Devmaster.net for engines and put about dozen engines on my list of candidates. Many were dumped after seeing that they would lack some crucial features, and only a few survived to the “final round”.
Irrlicht was one potential candidate, but in my (humble) opinion, the engine I picked seemed to have better documentation, articles and tutorials than Irrlicht. Engine itself was pretty okay, but I was bit worried on how they will continue developing and supporting the engine. active community is fine, but since the engine is done on someone’s “spare time” as Nikolaus Gebhardt – the author – says, I think Irrlicht is not for me.
Truevision3D was my second alternative, and actually the engine itself is fine. Basically there weren’t any problems with the engine, but there were other factors that made me skip it. The fact that they said in 2005 that “version 6.5 is here within months”, and it wasn’t until October 2007 when “pre-release of 6.5” was published. Since the engine itself was nice, this wasn’t a major problem, but still something that bothered me. They also say that “you can use their engine with any language” (Blitz, C++, C#… you name it). They say it’s an advantage – but I say it spreads the documentation. Now if they want to write tutorial for animating a character, they need to have like half a dozen variations for each language. There is no enough documentation for languages, so it was tough for me to learn their system. Also the bit strange licensing system (read more about that on their site) didn’t seem very user-friendly, although they promised to improve it the last time I checked it out. I also heard that the community can be bit intrusive for new people, and these type of rumors had some kind of impact on my decision (although not the final reason why I didn’t choose Truevision). In my opinion, Truevision3D is a great engine – but the community, tutorials and documentation aren’t what I’m after.
Next I checked out Power Render. Engine seemed pretty nice, but the fact that the 7.0 is not out yet and there weren’t good public documentation (nor community) made me skip it. I’m sure many people can find it a great tool, but I wanted something more established (in terms of documentation, tutorials and community).
Microsoft’s XNA was one of my candidates. It seemed very good (or “almost right” for me), but the XNA version 1.0 isn’t quite right for me (no networking, art pipeline was giving some headache, no proper way to publish for Xbox, .NET download overhead when publishing to PC). 2.0 should appear by the end of the year – but still I’m not sure how well the art pipeline will work, or how good is their network system, or if they’ve dealt with the other issues. Maybe after 6 months the situation is different, but I’m not going to take the risk and hope that it will be a good solution for me. XNA uses C#. While C++ can be more difficult than C# (one could say that C# as a “higher level” language can be “easier to use” – at least in theory), I think C++ is rock solid language for games development, while C# is “making its appearance”. I won’t get into the C++ versus C# wars, and I won’t say which one people should use. I simply say that “it depends what you want and what your project needs” and leap to the next candidate.
3D Game Studio was another engine I checked. The name reminds bit of a “game maker tool”, but after testing it I could see that it’s very easy to use (for those with some programming skills) and very nicely done. There were only 2 problems with the engine. First of all the networking system is in amateur level (especially if you compare the rest of the engine features), and it lost the quick comparison in speed with my last candidate. If your game needs network play, then 3D Game Studio (at least at the moment) is bit of a problematic, but otherwise I think the engine is well tested and there’s a solid company doing the development – not to mention active community and lots of articles and tutorials they have. (Those interested in how networking is done in 3D Game Studio, I simply say that they use “wait 1 sec” type of commands to ensure that players are in game.)
The last candidate – which I ended up selecting
I ended up benchmarking Ogre3D (which is a graphics engine, not a game engine) and using various libraries for the development. Ogre3D is a tested rendering engine that I can count on. It has the features I need (although the art pipeline isn’t exactly the easiest to use), the documentation is superb and the community is active. The installation process is painful even for experienced programmer (friend of mine – a top notch C++ coder who uses Visual C++ 2005 Express Edition – mentioned that he tried to test it in the past but couldn’t get it working), not to mention for those with less experience. By carefully reading the tutorial on how to install Ogre3D I finally managed to get it working. I tested samples and even got my own animated model and shadows to appear in the right places. While not easiest the install (and with “not so good” art pipeline), Ogre3D is very powerful graphics engine and their site is filled with articles and their forums are a great place to get guidance.
Ogre3D is not a game engine, so I need to pick libraries for different usage (such as for input, networking and so on), but there are several games made using Ogre3D and the tutorials, documentation and community are excellent. Ogre3D uses C++, and that’s what I’m learning right now.