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.
My Opinion (only for open source 3D engines):
- 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
- 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.
- Small engine
- Modern design
- Light community
- No extensions
- 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
The obvious initial suggestion is Ogre3D.
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)
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.