Engine
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 todays modularly constructed games, the games engine refers to that collection of modules of simulation code that do not directly specify the games behavior (game logic) or games 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.