Easy to use cross-platform 3D engines for C++ game development?

davr
  • Easy to use cross-platform 3D engines for C++ game development? davr

    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.

  • The obvious initial suggestion is Ogre3D.

  • 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.

    Pros:

    • 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++)

    Cons:

    • Requires at least OpenGL 2.0 support
    • Smaller community
    • Unstable code base (major architectural changes are still occurring)

  • 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.

  • 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!

  • 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

    TL;DR:

    • 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

  • 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.

  • 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...

Tags
c++ 3d cross-platform
Related questions and answers
  • I'm creating an FPS game. I'm writing my own game engine. So far all the backend stuff is going great. I'd like to support md2 as the native file format for 3D Objects, but I also want to use skeletal meshes. Does anyone know if the md2 file format supports skeletal meshes? In-case you need to know, I'm going to use blender as my Mesh creation tool and C++ as my programming language... Thanks For got to mention, the engine is based on OpenGL... Alright, for anyone who is reading this, I just found the Doom 3 md5 specifications (http://tfc.duke.free.fr/coding/md5-specs-en.html). It gives

  • Say I develop a game for mobile platform running OpenGL ES 2.0. I have done 2D part, and now I wish to import some 3D objects. The imported 3D objects must contain the following: Vertices... 3D authoring application (3ds Max, Maya, Softimage) into the game. However, doing so from scratch is going to be really be a lot of work. Therefore, is there any available solution/middleware, that will let me import 3d meshes into my game, ready to use? The solution/middleware should be: easy to use easy to port efficient not consuming too much memory with unnecessary things containing all

  • know if my speculations are ok, as I don't have much experience with 3d animations yet. I want to make a well decision as any option I choose would require a lot of work to get it to render and I don't want to find out in the end that I have to rewrite everything again, as a lot of other objects will be working with these data. Sorry if it's a too subjective matter, but I need some insight. I'm... for my needs. Ah and I forgot to mention that nodes can have hierarchy, but this is not a problem if the frame data is reduced. The structure instances don't get duplicated unless any value changes. When

  • Lately I have been working on a game that i plan to make online. I have used different libraries to make this game as far as i could, but I feel that I should rethink on how Im sertting this game up, so I planned to start over. The libraries that I have used are SFML, OpenGL, and Bullet Physics, along with GLM to load the models. But the problem is that the 3D graphics arent working with the Physics correctly... So my main question is: What would be a good combination of libraries to make an online game with? Im sure that many people have good combinations of libraries for making a game

  • Since building a game is not about 2D anymore, I just want to build a list of the (not necessarily best, but good enough) open source software available to make games. I prefer to put emphasis on libraries that insist on specializing on one part of what makes a game (like Ogre does for graphics, and OpenSteer does for steering), rather than engines/libraries that try to feature a lot of different features. 3D Graphics: OGRE3D http://www.ogre3d.org/ Irrlicht http://irrlicht.sourceforge.net/ Sound: IrrKlang http://www.ambiera.com/irrklang/ Found this: http://wiki.gamedev.net

  • Sorry for the ackward title, but i don't know what to call it exactly. I'm looking for code or libraries that allow easy creation of commonly used user input devices, and code/libs that make gaming controls easy to set up (i'm using SFML and Box2D at the moment) I don't want to re-invent things like buttons, arrows being placed wherever the mouse is located, and more game specific items such as "controls settings" or even being able to drag objects around with the mouse. More specifically i want source code for interfaces that.... Makes Buttons and Textboxes easy to create allows mouse

  • I'm looking into building a cross-platform opensource 2D RPG style game engine for ChaiScript. I want to be able to do all of the graphics with SVG and need joystick input. I also need the libraries I use to be opensource and compatible with the BSD license. I'm familiar with allegro, ClanLib, and SDL. As far as I can tell, none of these libraries have built in or obvious integration for SVG... not seem to have joystick input support, which would require that SDL or some other library also be used. So my question can be summed up as this: What is the best way to get SVG and joystick

  • I've been working with the XNA-Framework(only in 2D) for over a year now. Now I want to try and start a bigger 3D-project. But somehow I have difficulties to decide which engine/Framework I should use. So far I gathered three possible Frameworks, I want to list here: XNA with the OX-engine: I already have some experience with XNA and the Ox-engine seems to be the best possible open source... is what engine would you guys recommend? Is there any other stuff I have overseen? as mentioned before getting a little more into C++ would be great to but it is not a "must have" as I alredy worked

  • I would like to know if there is a C++ game engine that I can use for free to prototype some ideas I have. I have experience in C++ and have spent some time now playing around with different rendering engines such as Ogre3d and irrlicht. I don't want to re-invent the wheel and spend the time building my own engine. I have some ideas for a game that I would like to prototype and would be looking for a free engine to experiment with. I would be open to paying for the engine if I can make my idea work but as I don't have a great deal of time or resources I would need the engine to not have