Was ist der Unterschied zwischen einer Bibliothek und einer Engine?

31

Ich arbeite an einer Bibliothek, um die 2D-Spieleentwicklung mit Scala zu unterstützen. Bisher ist es eine Sammlung hilfreicher Klassen, das Laden von Dateien, die Erkennung von Kollisionen, Bilder, Sprites usw.

Also, wann hört es auf, eine Klassenbibliothek zu sein und fängt an, eine Engine zu sein? Wo genau liegt der Unterschied zwischen nützlichem Framework und einer Game Engine?

Lanbo
quelle
Ich würde sagen, die Unterscheidung kann nicht getroffen werden, weil es sich um Konzepte auf einer anderen Abstraktionsebene handelt. Ein "großer" Motor ist immer noch ein Rahmen.
André Paramés
1
Es gibt weniger Unterschiede zwischen einer Game-Engine und einem Framework, aber vom Titel her gibt es einen großen und klar definierten Unterschied zwischen einer Bibliothek und einer Engine. Dieser Link fasst es zusammen: gamefromscratch.com/post/2015/06/13/…
Serapth

Antworten:

21

Ich denke, die Verwirrung, in die die Leute hier geraten, besteht darin, dass sich das eine im Allgemeinen aus dem anderen zusammensetzt. Was die Leute also wirklich wissen wollen, ist, wenn man genug davon hat, um als das andere betrachtet zu werden.

Also, wann hört es auf, eine Klassenbibliothek zu sein und fängt an, eine Engine zu sein?

Noch nie.

Wo genau liegt der Unterschied zwischen einem nützlichen Framework und einer Game Engine?

Da ist gar nichts.

Lassen Sie mich nun die Antworten erklären. Eine Game Engine besteht aus Klassenbibliotheken. Sie hören nicht auf, Klassenbibliotheken zu sein, nur weil sie sich in einer Spiel-Engine befinden. Eine Bibliothek ist ein nützliches Framework, um einen bestimmten Bedarf innerhalb einer Game-Engine anzugehen. Ein Framework, das die Anforderungen für ein vollständiges Spiel beinhaltet, ist eine Game Engine.

Hier einige Beispiele für Game-Engines:

  • Unwirklicher Motor
  • Reality Engine
  • Quell-Engine
  • Quake Engine
  • Unity Engine

Und einige Beispiele für Bibliotheken

  • Novodex (Physik)
  • FMOD (Audio)
  • Havok (Physik)
  • Ogre3D (Rendern)
  • BINK (Videothek)
  • Direct3D (Grafik)
  • OpenGL (Grafik)
  • DirectSound (Audio)
  • XInput (Eingabe)

Hoffe das hilft

James
quelle
1
Was ist mit dem Unterschied zwischen einer Rendering-Engine und einer Grafikbibliothek? : p
Zaky Deutsch
1
@Zaky German - Ogre3D ist eine Grafik-Engine wie FMOD eine Audio-Engine. Unabhängig davon handelt es sich jedoch nicht um eine Game-Engine, sondern um Benutzereingaben, Netzwerkverbindungen oder ähnliches. Hier kann meiner Meinung nach ein Teil der Verwirrung zum Tragen kommen. In dieser Konnotation können Sie Bibliothek, Modul, Komponente oder Engine austauschen. Dies ist jedoch keine "Game Engine". Eine Grafikbibliothek ist mit Direct3D vergleichbar, oder mit einer Thin-API, die Direct3D überlagert, um die Arbeit zu vereinfachen. Sie wird jedoch nicht direkt gerendert. OpenGL und Wrapper fallen ebenfalls in den Bereich der Grafikbibliothek.
James
14

Es gibt wirklich keine konkrete Definition für einen Begriff (oder für den verwandten Begriff "Rahmen" in dieser Angelegenheit). Es gibt Hunderte von verschiedenen Möglichkeiten, die verschiedenen Unterscheidungen in Softwarepaketen zu interpretieren und ihnen Klassifizierungen zuzuweisen.

Ich persönlich betrachte eine "Bibliothek" als etwas, das eine relativ kleine und gezielte Menge an Funktionen bietet, während ein "Framework" mehr oder breitere Funktionen bietet und eine "Engine" die gleiche (oder mehr) und typischerweise eine Menge von Funktionen hat dazugehörige Tools.

Ich habe genug von den persönlichen Interpretationen der gleichen Begriffe anderer Leute gesehen, um mich sicher zu fühlen, was darauf hindeutet, dass eine "Engine" mehr oder mehr Funktionen bietet als eine "Bibliothek" normalerweise ... aber wo Sie diese Grenze für Ihre eigene Software ziehen liegt an Ihnen.

Josh
quelle
Es gibt einen konkreten Unterschied zwischen einem Framework und anderen Bibliotheken. Diese sind in der Wiki-Seite der ersteren aufgeführt. Kurz gesagt, das Framework steuert den Fluss der Anwendung, und Sie fügen Ihren Code ein. In anderen Bibliotheken steuern Sie den Ablauf und rufen dessen Code auf.
André Paramés
1
Ich würde das nicht für endgültig halten. Wikipedia hat auch eine Seite für "game engine" und genau wie "library" und "framework" werden diese Begriffe genauso oft verwendet, wie es die Beschreibung auf der Wiki-Seite tut Erfahrung. Es ist immer noch alles sehr wellig.
Josh
2

Dies ist eine schwierige Frage, da die Grenze zwischen Bibliothek und Engine manchmal sehr dünn und verschwommen sein kann. Ich muss sagen, dass eine Bibliothek zu einer Engine wird, wenn sie auf ein bestimmtes Spiel oder eine bestimmte Art von Spiel ausgerichtet ist.

Beispiel: Die Unreal-Engine (oder Source- oder Quake-Engine) wurde für FPS-Spiele entwickelt (sie könnte möglicherweise für andere Spiele verwendet werden, aber Sie würden einige Zeit mit der Arbeit an der Engine verbringen). Ogre3d (oder sogar Directx, SDL oder andere gängige Bibliotheken) kann verwendet werden, um jede Art von Spiel zu erstellen, ohne dass wesentliche Teile des Codes herausgerissen oder umgangen werden müssen.

thedaian
quelle