7 Engines You Should Know

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!

Notice

Old Content!

I blogged this 5 years ago and things have changed quite a bit since then. Today (2012), I’d recommend Unity for most cases and for special needs use either C4 Engine (built-in editor, volumetric terrain) or Ogre 3D (volumetric terrain, sky + water simulation, Android/iPhone/WinRT+Metro support).

C4 Engine

C4 Engine Logo

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.

www.terathon.com/c4engine

Ogre 3D

Ogre 3D Logo

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.

www.ogre3d.org

Irrlicht

Irrlicht Logo

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

irrlicht.sourceforge.net

Torque

Torque Game Engine Logo

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.

www.garagegames.com

Crystal Space

Crystal Space Logo

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.

www.crystalspace3d.org

NeoEngine

NeoEngine Logo

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…

www.neoengine.org

Unity 3D

Unity 3D Logo

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. :)

unity3d.com/unity

10 thoughts to “7 Engines You Should Know”

  1. Wait a second. So Unity is a develop-on-mac-deploy-to-win32 engine?

    Who came up with that? I don’t care how good your engine is, I can’t imagine anyone serious about development to be willing to put up with that. –Or be willing to create such a monstrosity in the first place.

  2. mos: nothing monstrous or fancy about that. Unity Editor (and asset pipeline, script compiler, game packaging…) runs on Mac OS X currently (note ‘currently’). The game engine itself runs on OS X, Windows, Nintendo Wii or Mac/Windows web browser. You work in the editor, then when you’re ready, you build a game – it assembles and packages all the data files and your game code, and puts a platform dependent executable that “plays” your game data files. We take all the pain and testing to ensure that your game runs the same in the editor and in the player (even if on a different platform).

    And no, I’m not from the marketing department, just a mere code monkey :)

  3. Just thought I’d like to clear this up..

    Ogre is not being put into blender nor is it being used by blender.

    Crystal space seems to be blender’s choice right now… the plugin for blender (called blender2crystal) is something I also recommend you to check out.

  4. Can you provide any source for that?

    It’s been some time since I was active in the C++ world, but last time I checked Blender Game Engine was about to use Ogre3D as its main graphics engine. I can’t seem to find many references to Ogre in the context BGE anymore, so maybe this has changed?

    Back in 2006: BlenderNation: Ogre and Bullet Game Engine Integration

    Almost looks like it’s become rather silent about the BGE project.

  5. Unity is good if you’re an amateur or hobbyist, or you don’t know much about programming and don’t want source code. C4 is more of a pro-level engine geared towards people who know C++ and a lot of math, and it includes the full source. Ogre is not a full game engine and can’t really be compared against Unity or C4.

  6. You certainly have your views staked out :)

    But I believe you’ll find that Unity is quite a bit different from what you think it is. Unity requires every bit as much programming as C4 does and you’ll have to delve deep into scene graph manipulation, a game object/behavior system based on composition over inheritance, network representation of entities, state serialization and so on. They merely decided to make their editor the public face of the engine instead of the IDE.

    The point that “Ogre is only a graphics engine” comes up in any comparison, but frankly, I think it’s a bit silly. Ogre’s design already provides the necessary connection points, so as an Ogre user, you just add OIS, OgreBullet and OgreAL and you’ve got your bases covered. That’s why, even with the difference in scope, I think as long as Ogre is valid choice for building a game on, it’s a valid comparison against other engines intended for the same purpose. The biggest shortfall of Ogre is, imho, the missing editor (Ogitor is the closest to the Unity/C4 world editors you can get afaik). The biggest advantage, on the other hand, is that you can mix and match (eg. prefer ODE, Bullet, Newton or maybe PhysX? Want OpenGL, Direct3D9, 10 or 11? Do PVS via Portals, Octrees or BSP?)

    Regarding C4, I absolutely adore Eric Lengyel’s work on it. He’s the guy to sit down and really think something through instead of just shoveling more half-baked eye candy into the engine. His Transvoxel algorithm (already available as plugins for Ogre and Unity as well, btw) is a prominent example of that. He uses only a very limited subset of C++ (it’s almost C with classes) and even rewrote all the data structures (maps, lists, sets) from the C++ standard library, but in a way, it’s brillant: the code is easy to understand and you get binary compatibility even if you use a different compiler with totally differently implemented C++ standard library. On the other hand, I’m not completely happy with the workflow: C4 can only load TGA images and every task involves GUI tools – to import a dozen models, export them to collada one by one, import them in C4 one by one, manually assign the textures to the meshes one by one. It’s quite a clickfest :D

  7. I’ve used Irrlicht and Unity, and have tried to use OGRE.

    Unity is the simplest to build a game as it has most everything built into the engine, but limited deployment platforms – currently only Windows, Mac and web.

    Next, the one I have used the most, comes Irrlicht in ease. It will run with maybe 6 lines of code at most. To add a model requires about 1~2. Of course, with more lines of code it has much more capabilities; and one may write their own custom modules (custom model loaders, for ex.) or shaders. It’s also light and fast.

    Finally, OGRE. I tried to use it once – it was a real pain to set-up, and I never did really get it working. It also requires a number of dependencies – something that made Irrlicht more appealing.

    For those who want to write their own engine design but don’t want, or need, to spend the extra time on the parts that would be a repeat of what is already available, I recommend using Irrlicht in conjunction with sound, physics and network packages as needed. Build Irrlicht on top of SDL and sound is ready.

  8. You might want to re-check the deployment platforms for Unity, apart from PC, Mac and Web (both as a Browser plugin and since recently, Flash 3D), it also supports Linux, PlayStation 3, Xbox 360, Nintendo Wii, Android, iOS and soon Windows 8 Apps.

    Nice that Irrlicht is working well for you, though I believe it is showing its age in a rather drastic way (to my knowledge it still uses stencil shadows, BSP trees and software vertex skinning). I’m also be very wary of its “not invented here”-isms versus depending on standard libraries, but it does make deployment easier.

    I can’t quite follow your comments on Ogre being a pain to set up – granted, it doesn’t put that 6 liner for BSP rendering out as bait, but for usage in the average game, Irrlicht and Ogre won’t be much different. My gripe with Ogre these days would be that while it has kept up with recent features, its design has aged quite badly (lax leadership? poor discipline? GSoC slap-stuff-on effect? who knows).

    My top choices for someone not wanting to use Unity would be Horde3D or C4.

Leave a Reply

Your email address will not be published. Required fields are marked *

Please copy the string wI4Zhm to the field below:

This site uses Akismet to reduce spam. Learn how your comment data is processed.