31
\$\begingroup\$

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, etc.

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

\$\endgroup\$
2
  • \$\begingroup\$ 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. \$\endgroup\$ Apr 7, 2011 at 20:31
  • 1
    \$\begingroup\$ There is less of a distinction between a game engine and a framework, but from the title, between a library and engine, there is a huge and clearly defined distinction. This link sums it up: gamefromscratch.com/post/2015/06/13/… \$\endgroup\$
    – Serapth
    Jun 14, 2015 at 14:35

3 Answers 3

21
\$\begingroup\$

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

\$\endgroup\$
2
  • 1
    \$\begingroup\$ What about the difference between a rendering engine and a graphics library? :p \$\endgroup\$ Apr 7, 2011 at 21:29
  • 1
    \$\begingroup\$ @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. \$\endgroup\$
    – James
    Apr 7, 2011 at 23:18
15
\$\begingroup\$

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.

\$\endgroup\$
2
  • 1
    \$\begingroup\$ 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. \$\endgroup\$ Apr 7, 2011 at 20:30
  • 1
    \$\begingroup\$ 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. \$\endgroup\$
    – user1430
    Apr 7, 2011 at 20:55
2
\$\begingroup\$

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.

\$\endgroup\$

You must log in to answer this question.

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