I'd like to improve my skills/try something new and I'd like to start with 3D. I have read Starting programming in 3D with C++ but I have question about engines:

  • What should engine do? I know it is abstraction layer above 3D API (i.e. OpenGL or DirectX) but what should it exactly do?

4 Answers 4


You're right in saying that a game engine is abstracting away from the low level graphics APIs, but a fully fledged game engine does a lot more.

Game engines are intended to make everything with regards to game development easier. They do each have their own unique features, but generally they provide easy abstraction layers for graphics, audio, input, scene management, collision detection, maths and general useful utilities. Some provide wrappers and plugins for physics APIs and some even have some AI support (mostly limited to FSMs, pathfinding and - the current trend - behaviour trees). A lot of them support, and pride themselves, on cross-platform functionality.

A game engine's purpose is to make it easier for the user to create a game, without having to deal with the small annoyances in creating a game from scratch or having to install a whole bunch of libraries and writing your own wrappers for them to suit your game.

There are a lot of engines out there, but beware of the difference between a graphics engine and a games engine (For example, Unity would be a games engine, whereas Ogre would be a graphics engine).

I've got two books on the subject, but they provide a good overview on the subject:

  • 3D Game Engine Architecture by David H Eberly

  • Game Coding Complete by Mike McShaffry

They're not too in depth as you would need several books on each component to get the depth of knowledge you'd need to create a full, professional game engine, but they explain the concepts very well, I think.

If you're starting out game dev, don't make an engine. I refer you to the following page: http://geometrian.com/programming/tutorials/write-games-not-engines/

Engines are a tricky thing to get right. If you write a load of games, you'll find you have a lot of reusable code after a while which you can use to make your own personal engine to help you out. And having a lot of (complete) games under your belt is a lot more impressive than a single engine.

Hope that helps.


  • 1
    \$\begingroup\$ +1 for the blog article. It says exactly what I would say on the matter. \$\endgroup\$
    – Tetrad
    Commented Jan 30, 2011 at 1:40
  • 5
    \$\begingroup\$ Yes, nobody should be making a game engine before they've made a game. How can you know that your code is reusable if you don't yet know that it's usable? \$\endgroup\$
    – Kylotan
    Commented Jan 30, 2011 at 21:37
  • \$\begingroup\$ @Kylotan I realise this is very late, but I'd just like to thank you for that comment as I've been constantly quoting it to others :) \$\endgroup\$
    – Ray Dey
    Commented Mar 27, 2011 at 22:51
  • \$\begingroup\$ @RayDey the link to "write games not engines" is dead, FYI. I was looking forward to reading it :( \$\endgroup\$
    – DrewJordan
    Commented Apr 26, 2016 at 18:44

Adding to Ray's answer: Engines (Game, Graphics, Audio, etc...) not only make it easier to interact with the underlying APIs, but implement functionality specific to the game, ex: Shading model, 3D sound.

Specifically for Game engines: they manage game objects, resources (Memory, threads, all the other engines), and inter-module communication. They give the game stucture, scalability, and flexibility, which is essential for any non-trivial project.

  • \$\begingroup\$ +1 for the structure, scalability and flexibility point and I did forget to add memory management \$\endgroup\$
    – Ray Dey
    Commented Jan 30, 2011 at 4:59

I've written a detailed tutorial on what a game engine is - specifically in the context of the iPhone and Android platforms. I've included detailed descriptions with examples of the various parts of a game engine: UI, Graphics, Sound, Physics, Particle effects. The tutorial is available here: What is a game engine? . Hope it's helpful.


Every game engine has a slightly different idea of what a game engine should do.

But because there are too many game engines already, I really recommend that you make a GAME not an ENGINE.


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