This post is not exactly related to .NET/XNA game development, but I like to keep track of what’s going on in the world out there and I still like C++ better than C# ;)
Having played the whole engine shopping game more than once, here are 7 engines I’d take a closer look at if I were to write a game in C++. I’ve listed them in order of personal preference, but be warned, this is entirely my opinion and not based on proper research!
C4 Engine
This is the engine I would choose as an indie developer. Everything you need for rapid development is already there, including a fully interactive world editor. You basically have the development speed of a tool like 3D Game Creator but all the power of a conventional engine designed for programmers first and foremost.
Feature-wise, it’s got the already mentioned world editor, is shader driven, does per pixel lighting, uses a scene graph, can do visibility determination with portals, will soon feature a terrain and foliage rendering system (in the upcoming “fireball” release) and you’ll receive excellent support from its author and forum members.
Ogre 3D
Ogre 3D was an almost instant hit due to its power and its clean design. Ogre uses a plugin system that can extend the functionality of specific areas in Ogre’s architecture. For example, Ogre uses a scenegraph-like system for managing the world. The actual visibility determination system is entirely provided by plugins. You can switch between an Octree, BSP or terrain/distance based system easily.
Because of the very active community, there are lots of great addons for Ogre 3D, including several state-of-the-art terrain rendering systems, game frameworks and bindings for other languages, including a .NET wrapper.
The only drawback to Ogre 3D is the missing development tools. It’s a
nice programmer’s engine but you’ll have to invest some time to set
up a production chain yourself. Still, there are importers for all kinds
of file formats, the engine can load many different file formats natively
and Blender, a 3D modeling tool, is moving towards becoming something
like Ogre 3D Game Creator (Blender Game Engine uses Ogre!). –
they picked CrystalSpace in the end, probably because of the Python integration.
Irrlicht
Irrlicht is in some ways a contender to Ogre 3D. It might even be more convenient than Ogre 3D in that, as long as you’re not doing anything exotic, you can get a basic rendering loop going in just a page of code. Irrlicht also comes with its own GUI system and its own math library. There also is a .NET wrapper called Irrlicht.NET that allows you to use Irrlicht in C# and other .NET languages.
The Irrlicht community is very small compared to other engines, maybe that’s because, as soon as you ask for a 3D engine on gamedev.net, you’ll quickly get 3 people recommending Ogre 3D and only then someone comes along and suggests Irrlicht.
Irrlicht is also lacking a production tool chain. It’s not like Ogre where the tools are there and you just have to find a way to organize everything and make it work together, you probably won’t get away without coding some tools yourself if you want to
Torque
Torque is the 3D engine that Dynamix originally created to power their Starsiege: Tribes series of games from part 2 onwards. It has got several nice features, amongst them Terrain rendering and a skinnable GUI system. There also is an editor you can use to create your game worlds, design your GUIs and import assets.
While I haven’t tried it myself, Torque seems to have its problems as well. I keep hearing again and again that major portions of the code are an ugly mess and that documentation is very lacking. This might be attributable to the fact that a lot of beginners (include lots of those annoying MMORPG-wannabes) switched to Torque, so I’m not making up my mind before I get a look at it myself.
Crystal Space
Crystal Space is one of the oldest game engines out there. Originally designed for software rendering in the era before 3D acceleration, this engine has grown into a mammoth repository for nearly anything the 3D engine world has to offer.
I can’t tell much about Crystal Space, because for my taste, it simply got too large. The learning curve is quite steep and tool support is often lacking. This engine’s size seems to make it quite hard for its developers to catch up with the latest technology — at least I personally got the impression that new features in Crystal Space just take longer and end of looking not as cool as they do in other engines.
NeoEngine
While I don’t have much experience with NeoEngine, it’s been around longer than Ogre 3D and is in most terms equivalent to Irrlicht. I would have ranked NeoEngine as equal or maybe even higher than Irrlicht if it had the same level of publicity.
Just like Irrlicht, the developers rolled their own maths library, their own GUI system and they’re not using libraries such as Boost either.
I can’t really say much about this engine as I don’t know of any games that have actually used it. Everything seems to be feature complete and ready for prime time, but I would have to try and create a game with it to see whether it works out…
Unity 3D
Unity would have been a contender for first or second place, was it not for the fact that all unity development tools work on MacOS exclusively. Once done, you can deploy your game to Windows PCs alright, but to get to that point, you’re forced to install MacOS on your system.
What you get with Unity is a game creation system like no other, supporting any feature you can think of. If this sounds like a description released by their marketing department, let me state that their marketing department, if they got or need any, would only be making objective reviews if they wrote that. Yes, I’m that impressed. :)