Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

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?
share|improve this question
    
For the book recommendations, this question should help you: gamedev.stackexchange.com/questions/455/… –  Tetrad Jan 30 '11 at 1:41

4 Answers 4

up vote 23 down vote accepted

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://scientificninja.com/blog/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.

Ray

share|improve this answer
1  
+1 for the blog article. It says exactly what I would say on the matter. –  Tetrad Jan 30 '11 at 1:40
    
+1 for the difference between graphics and game engine. –  Ramon Zarazua Jan 30 '11 at 2:40
5  
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? –  Kylotan Jan 30 '11 at 21:37
    
@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 :) –  Ray Dey Mar 27 '11 at 22:51

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.

share|improve this answer

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.

share|improve this answer

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.

share|improve this answer
    
+1 for the structure, scalability and flexibility point and I did forget to add memory management –  Ray Dey Jan 30 '11 at 4:59

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.