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 am working on a library to help 2D-Game development with Scala. So far it is a collection of helpful classes, file loading, collision detection, images, sprites...

So when does it stop being a class library and start being an engine? Where exactly lies the difference in a useful framework and a game engine?

share|improve this question
    
I'd say the distintion can't be made, because they're concepts at a different level of abstraction. A "big" engine is still a framework. –  André Paramés Apr 7 '11 at 20:31

3 Answers 3

up vote 17 down vote accepted

I think the confusion people get into here is that one is generally made up of the other, so what people really want to know is when you have enough of one to be considered the other.

So when does it stop being a class library and start being an engine?

Never.

Where exactly lies the difference in a useful framework and a game engine?

There is none.

Now let me explain the answers. A game engine is made up of class libraries. They do not stop being class libraries simply because they are within a game engine. A library is a useful framework to tackle a specific need within a game engine. A framework that entails the needs for a complete game is a game engine.

Here are some examples of game engines:

  • Unreal Engine
  • Reality Engine
  • Source Engine
  • Quake Engine
  • Unity Engine

And some examples of libraries

  • Novodex (Physics)
  • FMOD (Audio)
  • Havok (Physics)
  • Ogre3D (Rendering)
  • BINK (Video Library)
  • Direct3D (Graphics)
  • OpenGL (Graphics)
  • DirectSound (Audio)
  • XInput (Input)

Hope this helps

share|improve this answer
    
What about the difference between a rendering engine and a graphics library? :p –  Zaky German Apr 7 '11 at 21:29
    
@Zaky German - Ogre3D is a graphics 'engine' like FMOD is an audio 'engine'. Separate however these are not a Game engine, they do not handle user input, network connectivity or the like for example. This is where I think some of the confusion can come into play. In this connotation you could interchange Library, Module, Component, or Engine. These are not a 'Game Engine' though. A graphics library would be something akin to Direct3D or a thin API to over Direct3D to make it easier, but it wont directly do rendering. OpenGL and wrappers around it would also fall into the graphics library area. –  James Apr 7 '11 at 23:18

This is a tricky question, since the line between library and engine can sometimes be a very thin, blurry one. I'd have to say that the point where a library turns into an engine is when it becomes geared towards a specific game, or a specific type of game.

For example: the Unreal engine (or Source, or Quake) is designed to be used for FPS games (it could feasibly be used for other games, but you'd spend some time working against the engine). Ogre3d (or even Directx, SDL, or other common libraries) can be used to make any type of game, without having to rip out major parts of the code, or work around them.

share|improve this answer

There really is no concrete definition for either term (or for the related term "framework," for that matter). There are hundreds of different ways of interpreting the varied subtle distinctions in software packages and assigning them classifications.

I personally view a "library" as a thing that provides a relatively small and directed set of functionality, whereas a "framework" provides more or broader functionality, and an "engine" provides the same (or more) and typically has a set of associated tools that come with it.

I have seen enough of other people's personal interpretations of the same terms to feel safe suggesting that an "engine" provides more, or higher level, functionality than a "library" typically does... but where you draw that line for your own software is up to you.

share|improve this answer
    
There is a concrete difference between a framework and other libraries; these are listed in the Wiki page of the former. Succinctly, the framework controls the flow of the application, and you plug your code into it; in other libraries you control the flow and call its code. –  André Paramés Apr 7 '11 at 20:30
1  
I wouldn't consider that definitive; Wikipedia has a page for "game engine," too, and just like "library" and "framework," those terms are used just as often in ways that conform to the description on the wiki page as in ways that do not, in my experience. It's still all very hand-wavy. –  Josh Petrie Apr 7 '11 at 20:55

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.