I want to try my hand at writing a 3D game. However I don't want to start at such a low level of drawing individual triangles and writing my own 3D object loader and so on. I've heard of things like Irrlicht, Crystal Space 3D, and Cafu, but I don't have any experience with any of them. I'm looking for suggestions from people who have experience with these or other engines on which ones are well written, and are easy to get started using, without having to learn a ton of 3D math theory and how GPUs work internally.


9 Answers 9


My Opinion (only for open source 3D engines):

  • Irrlicht:
    • Light 3D engine
    • Clean C++ without dependencies and no STL.
    • Not very well documented but there are good tutorials.
    • Very small so you can customize it easily.
    • No OpenGL 3.X driver, Direct X 10.X or 11.X available in the official SDK.
    • Very good for mobile development;
    • Good community
    • Few extensions available
  • Ogre3D:
    • Big 3D engine
    • It uses modern C++ such as STL, exceptions and RTTI
    • Good documentation (There are published books).
    • Many renderers (OpenGL, DirectX and OpenGL ES...).
    • Ogre3D have many extensions as CEGUI or Bullet integration, Tree nodes...
    • But more difficult to extend Ogre3D if you want something specifics.
    • Big community
    • Many extensions
  • Crystal space: An old design and difficult to use. After few days, I stopped using this engine.
  • Horde3D
    • Small engine
    • Modern design
    • Light community
    • No extensions
  • Blendelf
    • Small engine with some dependencies
    • Modern design with moderns effects as DOF or HDR ...
    • OpenGL only
    • Light community
    • Bullet integration for physics
    • You use lua to pilot this engine3D


  • For a desktop game (or future commercial game): Ogre3D
  • For a first game: Irrlicht
  • For mobile development: irrlicht (Ogre3D is too big)
  • For sexy effects: Blendelf
  • \$\begingroup\$ To be honest I wouldn't recommend Irrlicht for mobile development. It does too many memory-allocations and offers little-to-no custom memory-allocation implementations. The startup-time due to the nearly 60 000 allocations done at startup is a big issue. \$\endgroup\$
    – Simon
    Commented May 8, 2011 at 13:04
  • \$\begingroup\$ I use Irrlicht on Android and IOS and startup time is not a big issue... Texture loading is far longer than alloc... \$\endgroup\$
    – Ellis
    Commented May 8, 2011 at 20:47
  • \$\begingroup\$ @Simon could you explain what you're referring to with "custom memory-allocation implementations"? What is that, and why would you want it? \$\endgroup\$ Commented Jun 9, 2012 at 17:14
  • 2
    \$\begingroup\$ @Aerovistae Memory allocation requires calls to the operating system, it's a very costly operation. Usualy when creating a game engine, you'd want to do your own memory management, f.e. you'd allocate a big chunk of memory once and then you'd distribute that memory in the program yourself. That way you're only moving pointers around and not calling the kernel each time you want extra memory. It's a fairly advanced topic and requires advanced pointer aritmetic especially if you want some sort of an anti fragmentation mechanism. \$\endgroup\$
    – dreta
    Commented Jun 9, 2012 at 20:41
  • 3
    \$\begingroup\$ So when Simon says he wouldn't recommend it because it doesn't offer custom memory-allocation implementations, really this doesn't apply to a beginner, or even to most intermediate developers? \$\endgroup\$ Commented Jun 9, 2012 at 20:49

The obvious initial suggestion is Ogre3D.

  • \$\begingroup\$ Have you had any experience with it? Is it fairly stable, well written, and good for 3D beginners? I can easily google up a list of 3D engines (as you see from my question), I'm looking for more insight into which is a good choice, and why. Thanks. \$\endgroup\$
    – davr
    Commented Jul 14, 2010 at 19:27
  • 1
    \$\begingroup\$ But Ogre3D isn't an engine. It is a 3d rendering library. You have to either choose an engine that's built on ogre or build your own. \$\endgroup\$
    – Fire
    Commented Jul 14, 2010 at 19:27
  • 4
    \$\begingroup\$ I've had extensive experience with Ogre3d; It's very stable and well written, and does a great job of taking care of mundane tasks (scene culling, mesh loading, billboards/particles). Fire is correct in that it's not a Game Engine; but Ogre can be (and often is) incorporated with other libraries to make one. It's a fantastic step above "drawing individual triangles and writing my own 3D object loader", but it is just a rendering library. If that's what you want, it's a great library with an active and supportive community. \$\endgroup\$
    – Karantza
    Commented Jul 14, 2010 at 19:32
  • 3
    \$\begingroup\$ @Fire OGRE: Object-oriented Graphics Rendering Engine. It's an engine. It has singletons all over the place. Definitely an engine. \$\endgroup\$
    – Ricket
    Commented Sep 26, 2010 at 14:43
  • 3
    \$\begingroup\$ @Ricket Yes, a graphics engine, but not a game engine which is what he most probably meant as this is strongly emphasized in the ogre docs. Also the singleton (anti)pattern certainly has nothing to do with it being an engine or not. \$\endgroup\$
    – Raoul
    Commented Nov 4, 2010 at 16:17

Open Scene Graph is a pretty good, very well designed cross-platform 3D engine. Contrary to Ogre3D, for example, it does not provide "game engine" features, and concentrates on being a very nice abstraction on top of OpenGL.

  • It is quite lightweight, and does not force a framework on you: you can use as little or as much of it as you want, and use it through SDL, SFML, wxWidgets, QT...
  • It is a great learning experience: as you learn the library, you understand more and more about the underlying OpenGL and the way it has been designed
  • Pretty much ready to use: it has loaders for mainstream 3D formats
  • Shaders friendly

Have a look at the extensive list of samples.


In terms of game engines:

  • Torque3D: Lots of features, but some would consider the code difficult to work with.
  • C4 Engine: Inexpensive, excellent author support, but the tools could use a bit of work.
  • DIY: Select a set of libraries and glue them together with your game.

Since Ogre3D was suggested, there also exists a light-weight alternative Horde3D.


  • The design is sound and will likely outperform Ogre3D for heavy rendering (if it doesn't already)
  • C API, making bindings for languages like Python simple and easy to maintain (internal code is C++)


  • Requires at least OpenGL 2.0 support
  • Smaller community
  • Unstable code base (major architectural changes are still occurring)
  • 2
    \$\begingroup\$ Avoid Torque 3D if you value your sanity. The scripting engine is a muddled nightmare, very frustrating to work with. \$\endgroup\$ Commented Jul 31, 2010 at 15:25

Irrlicht provides a bit more than Ogre3D, and at the same time is a bit more hands-on (e.g. it doesn't feel like you're just "starting an engine" and watching it run, it feels more like you're the one running commands, as it should be in my opinion).

I think it would be great to start with!


I know you asked for C++, but Panda3D also works with C++, even if it's at first targeted to work with python. It is a game engine, but whatever...


The obvious choice, if Ogre3D is too low level for you, would be NeoAxis: http://www.neoaxisgroup.com/

It's powered by Ogre, but is a complete game development platform.

It's targeting .NET so you can use C#, managed C++, VB.

So go for that. :)

Ogre3D is able to run on a range of mobile devices, like iPhone and Android. So it's not too big.

Don't mistake size for performance.

I am not sure if IrrLicht has an official iPhone support, but Ogre3D does.

  • \$\begingroup\$ If it's on .NET can't you add IronPython to the list of languages? Python is a fabulous scripting language. \$\endgroup\$ Commented Jul 31, 2010 at 15:28
  • 2
    \$\begingroup\$ .NET? Doesn't that rule out cross-platform? \$\endgroup\$
    – davr
    Commented Aug 2, 2010 at 16:47
  • \$\begingroup\$ .Net doesn't, but Neo-Axis uses C++/CLI which does. \$\endgroup\$
    – jsimmons
    Commented Aug 7, 2010 at 2:44
  • \$\begingroup\$ I talked to the Neoaxis lead developer today, and they're announcing Mac OS X support this September. :) \$\endgroup\$
    – jacmoe
    Commented Aug 7, 2010 at 16:55

SSG: A Simple Scene Graph API for OpenGL

Open Scene Graph



Good answers so far, but I'll add Marmalade. It does mobile pretty well. A bunch of large studios have released console game with it, so it's got credentials. There is even a unity-like editor built on top of it, Shiva3D, which allows for cross-platform as well.


Not the answer you're looking for? Browse other questions tagged .