Engine: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Definition von 3D Engine)
 
()
Zeile 1: Zeile 1:
==Engine==
+
'''Engine''' ist Englisch und bedeutet wörtlich übersetzt '''Motor'''.<br>
'''Engine''' ist Englisch und bedeutet wörtlich übersetz '''Motor'''.<br>
+
 
Im unserem Fall reden wir von der 3D Engine und diese beschreibt eine Sammlung von Sourcecode, der uns über ein Befehlssatz alle nötigen Funktion zum erstellen von 3Dimensionalen Grafikanwendungen zur verfügung stellt.
+
In Bezug auf Grafik und Computerspiele wurde der Begriff Engine vor allem durch die ersten First Person Shooter geprägt. Die meisten Definitionen die zu den Begriffen Rendering-, Grafik- und Game-Engine existieren sind äusserst schwammig. Da sich jedoch in letzter Zeit der Begriff Engine auch im wissenschaftlichen Bereich weiter durch setzt, findet sich nun auch die ein oder andere brauchbarere Definition wie zum Beispiel:
Der Sinn einer 3D Engine ist einmal ein den Code für diese zu schreiben und dann diesen zu nutzen anstatt jedes mal ein neuen Code zu programmieren.
+
 
Zur Basis des Codes gehören aufjedenfall das Fensterhandling(erstellung, verwalten, zerstören), laden von den nötigen OpenGL Befehlen, die [[Gameloop]] und die Systemnachrichten verarbeitung.
+
''In today’s modularly constructed games, the game’s engine refers to that collection of modules of simulation code that do not directly specify the game’s behavior (game logic) or game’s environment (level data).''<br>
Der weitere Code für Grafik sollte dann je nach Umfang in weitere Datein unterteilt werden, wie z.B. Vektorrechnung/Matrizenberechnungen, Helferfunktionen zum konvertieren, Helferfunktionen für Grafikeinstellungen und so weiter.
+
[http://planetjeff.net/IndexDownloads/Lewis2002.pdf Game Engines in Scientific Research, CACM, Januar 2002]
Je nach Umfang, kann es sein das neben den Grafikfunktionen noch weitere Funktionen zu anderen Themen wie Sound enthalten sind.
+
 
<br>
+
Diese Definition besagt also, das eine Game Engine eine Bibliothek ist die alles übernehmen ''kann'' was nicht direkt mit einem konkreten Spiel zusammen hängt. Der Streitpunkt ist nun, was direkt mit einem Spiel zusammen hängt und was nicht. Da viele Genres ganz andere Bedürfnisse an eine Game-Engine stellen, existieren auch hunderte verschiedene Engines.
<br>
+
 
mögliche enthaltene Module:
+
Der Sinn hinter einer so strickten Trennung zwischen Game-Engine und eigentlichem Spiel, ist die Wiederverwendbarkeit ein und des selben Sourcecodes für mehrere Spiele und im kommerziellen Bereich zusätzlich noch der Verkauf der Engine an andere Produzenten. Aber auch aus der Sicht eines Softwareentwicklers bietet diese Trennung den Vorteil, dass man ein großes Projekt von vorne herein in zwei große Teilbereiche aufspaltet. Zusätzlich benötigt man bei einer Engine üblicherweise noch Editoren. Durch die Trennung von Spiel und Engine kann man die Engine auch für die Editorentwicklung verwenden, wodurch sich diese Modularisierung selbst bei der Entwicklung eines einzigen Spieles lohnt.
*[[Grafik]]
+
 
*[[Sound]]
+
Eine Game-Engine setzt sich üblicherweise aus den folgenden Haupt-Bereichen zusammen:
*[[Physik]]
+
*Grafik
*[[Netzwerk]]
+
*Sound
*[[Dateformate]]
+
*Physik
*[[Partikelsystem]]
+
*Netzwerk
*[[KI]]
+
*Eingabe
*[[Steuerung]]
+
*Editoren
 +
*Künstliche Intelligenz
 +
 
 +
Da der Grafik-Bereich üblicherweise verhältnissmäßig groß ist, gibt es auch eigene Grafik-Engines. Grafik-Engines sind also Game-Engines die ausschließlich die Grafik behandeln, nicht die restlichen genannten Teilbereiche. Oder umgekehrt gesagt: eine Game-Engine besitzt eine eigene oder benutzt eine bestehende Grafik-Engine. [[Szenengraph|Szenengraphen]] fallen üblicherweise in die Kategorie Grafik-Engine, obwohl man von einer Engine häufig erst dann spricht wenn irgend eine Art von Animation im Spiel ist, was bei [[Szenengraph|Szenengraphen]] nicht zwingend der Fall sein muss. Diese Ansichten sind jedoch auch sehr vage und nicht unumstritten.
 +
 
 +
Nun existiert noch der Begriff Rendering-Engine, welcher üblicherweise verwendet wird um noch eine Stufe tiefer zu gehen. Eine Rendering-Engine stellt nur eine sehr strikt definierte, jedoch sehr allgemein anwendbare Funktionalität zur Darstellung von 3D Szenen zur Verfügung. Man könnte auch sagen, dass eine Rendering-Engine keine eigenen Entscheidungen trifft welche sich auf das Aussehen der dargestellten Szene auswirken würden. Als bestes Beispiel sei hier [[LOD|Level of Detail]] genannt. Die Wahl des [[LOD|Level of Detail]] überlässt die Rendering-Engine fast ausschließlich den übergeordneten Programmteilen (beispielsweise der Grafik-Engine). [[OpenGL]] und [[Direct3D]] stellen wohl die bekanntesten Vertreter für Rendering-Engines dar. Wieder kann gesagt werden, dass eine Rendering-Engine ausschließlich die Darstellung eines konkreten [[Frame|Frames]] mit konkret gegebenen Parametern übernimmt. Und umgekehrt kann gesagt werden: eine Grafik-Engine besitzt eine eigene oder benutzt eine bestehende Rendering-Engine.
 +
 
 +
Nun wäre noch der Begriff 3D-Engine zu klären, welcher am vielfältigsten von allen eingesetzt wird. Üblicherweise handelt es sich dabei um einen Überbegriff für Game-, Grafik- und Rendering-Engine aber natürlich mit der Einschränkung, dass es sich um 3D- und nicht um 2D-Szenen handelt.
 +
 
 +
=Ressourcen=
 +
*[http://gamearchitect.net/Articles/TheList.html The List], eine umfangreiche Auflistung der Teilgebiete die bei einer Game-Engine beachtet werden können.
 +
*[http://www.devmaster.net/engines/ 3D-Engines Liste], eine umfangreiche Sammlung von 3D Game- und Grafik- Engines.

Version vom 1. Juni 2005, 00:30 Uhr

Engine ist Englisch und bedeutet wörtlich übersetzt Motor.

In Bezug auf Grafik und Computerspiele wurde der Begriff Engine vor allem durch die ersten First Person Shooter geprägt. Die meisten Definitionen die zu den Begriffen Rendering-, Grafik- und Game-Engine existieren sind äusserst schwammig. Da sich jedoch in letzter Zeit der Begriff Engine auch im wissenschaftlichen Bereich weiter durch setzt, findet sich nun auch die ein oder andere brauchbarere Definition wie zum Beispiel:

In today’s modularly constructed games, the game’s engine refers to that collection of modules of simulation code that do not directly specify the game’s behavior (game logic) or game’s environment (level data).
Game Engines in Scientific Research, CACM, Januar 2002

Diese Definition besagt also, das eine Game Engine eine Bibliothek ist die alles übernehmen kann was nicht direkt mit einem konkreten Spiel zusammen hängt. Der Streitpunkt ist nun, was direkt mit einem Spiel zusammen hängt und was nicht. Da viele Genres ganz andere Bedürfnisse an eine Game-Engine stellen, existieren auch hunderte verschiedene Engines.

Der Sinn hinter einer so strickten Trennung zwischen Game-Engine und eigentlichem Spiel, ist die Wiederverwendbarkeit ein und des selben Sourcecodes für mehrere Spiele und im kommerziellen Bereich zusätzlich noch der Verkauf der Engine an andere Produzenten. Aber auch aus der Sicht eines Softwareentwicklers bietet diese Trennung den Vorteil, dass man ein großes Projekt von vorne herein in zwei große Teilbereiche aufspaltet. Zusätzlich benötigt man bei einer Engine üblicherweise noch Editoren. Durch die Trennung von Spiel und Engine kann man die Engine auch für die Editorentwicklung verwenden, wodurch sich diese Modularisierung selbst bei der Entwicklung eines einzigen Spieles lohnt.

Eine Game-Engine setzt sich üblicherweise aus den folgenden Haupt-Bereichen zusammen:

  • Grafik
  • Sound
  • Physik
  • Netzwerk
  • Eingabe
  • Editoren
  • Künstliche Intelligenz

Da der Grafik-Bereich üblicherweise verhältnissmäßig groß ist, gibt es auch eigene Grafik-Engines. Grafik-Engines sind also Game-Engines die ausschließlich die Grafik behandeln, nicht die restlichen genannten Teilbereiche. Oder umgekehrt gesagt: eine Game-Engine besitzt eine eigene oder benutzt eine bestehende Grafik-Engine. Szenengraphen fallen üblicherweise in die Kategorie Grafik-Engine, obwohl man von einer Engine häufig erst dann spricht wenn irgend eine Art von Animation im Spiel ist, was bei Szenengraphen nicht zwingend der Fall sein muss. Diese Ansichten sind jedoch auch sehr vage und nicht unumstritten.

Nun existiert noch der Begriff Rendering-Engine, welcher üblicherweise verwendet wird um noch eine Stufe tiefer zu gehen. Eine Rendering-Engine stellt nur eine sehr strikt definierte, jedoch sehr allgemein anwendbare Funktionalität zur Darstellung von 3D Szenen zur Verfügung. Man könnte auch sagen, dass eine Rendering-Engine keine eigenen Entscheidungen trifft welche sich auf das Aussehen der dargestellten Szene auswirken würden. Als bestes Beispiel sei hier Level of Detail genannt. Die Wahl des Level of Detail überlässt die Rendering-Engine fast ausschließlich den übergeordneten Programmteilen (beispielsweise der Grafik-Engine). OpenGL und Direct3D stellen wohl die bekanntesten Vertreter für Rendering-Engines dar. Wieder kann gesagt werden, dass eine Rendering-Engine ausschließlich die Darstellung eines konkreten Frames mit konkret gegebenen Parametern übernimmt. Und umgekehrt kann gesagt werden: eine Grafik-Engine besitzt eine eigene oder benutzt eine bestehende Rendering-Engine.

Nun wäre noch der Begriff 3D-Engine zu klären, welcher am vielfältigsten von allen eingesetzt wird. Üblicherweise handelt es sich dabei um einen Überbegriff für Game-, Grafik- und Rendering-Engine aber natürlich mit der Einschränkung, dass es sich um 3D- und nicht um 2D-Szenen handelt.

Ressourcen

  • The List, eine umfangreiche Auflistung der Teilgebiete die bei einer Game-Engine beachtet werden können.
  • 3D-Engines Liste, eine umfangreiche Sammlung von 3D Game- und Grafik- Engines.