Was ist eine Game-Engine?
Eine Game-Engine ist wie ein virtuelles Herz, das Videospiele zum Leben erwachen lässt und softwaretechnische Rahmenbedingungen schafft.
Zu ihren Kernkompetenzen zählen die visuelle Darstellung, Physiksysteme, Steuerelemente, Datenverwaltung und Netzwerkfunktionalitäten.
Mit einer Engine lassen sich üblicherweise verschiedene Anwendungen realisieren und im besten Fall auf verschiedenen Plattformen anbieten.
Bekannte Vertreter wie Unity oder die Unreal-Engine bieten zudem Benutzeroberflächen und Verkaufsplattformen für entwickelte Spiele oder
3D-Assets an, verlangen dafür aber auch Lizenzgebühren und entscheiden selbst, auf welche Funktionalitäten sie sich in Zukunft konzentrieren.
Was genau leistet die Mirage-Engine?
Die Mirage-Engine basiert auf einem Importer für 3D-Dateien im .gltf-Format, welche neben den Dreiecksinformationen verschiedener Objekte
auch Texturen, Oberflächenbeschaffenheiten und Vererbungshierarchien beinhalten. Die .gltf-Dateien können zum Beispiel von der Open-
Source-Software Blender 2.8 exportiert werden. Um die Dateien klein zu halten, werden Szenenobjekte ohne Dreiecke von der Mirage-Engine
erkannt und an ihrer Stelle Klone erzeugt, die dank instanziierter Rasterisierung kostengünstiger dargestellt werden können. Die Engine verwaltet
außerdem Objekte wie virtuelle Kameras, Spieler und Sonnen, die sich wie die anderen Szenenobjekte 3D-transformieren lassen und dabei
nicht vergessen, ihre Erben mitzunehmen. Alle Transformationen, wie zum Beispiel die Positionsänderung eines Objekts, lassen sich dank des
eigenen Animationssystems flüssig und pro Bild darstellen. Über Morphs lassen sich einzelne 3D-Objekte verformen und weiterhin anklicken.
Verschiedene GUI-Methoden erlauben die Steuerung über die Maus und Tastatur, Touch oder die Geräteneigung. Sie können sowohl im Splitscreen-
als auch im Vollbildmodus verschiedene Dialogtypen mit CSS-Styles darstellen oder anhalten, sollte der Tab nicht mehr aktiv sein.
Die Schnittstelle WebGL 2.0 wird verwendet, um die 3D-Daten und Transformationsmatrizen auf der Grafikkarte ausgelagert zu rasterisieren
und sie anschließend auf einem HTML-Canvas-Element anzuzeigen. Die Mirage-Engine greift über sogenannte Shader an manchen Stellen in
die WebGL-Pipeline ein, um Effekte wie Belechtungsmodelle, Reflexionen des Himmels und Spiegel, Schatten oder Transparenz zu illustrieren.
WebGL 2.0 basiert auf OpenGL ES 3.0 und wird vier Jahre nach Release 2017 allmählich von allen aktuellen Browsern wie Chrome, dem neuen
Edge oder Firefox unterstützt, was das W3C aber wohl nicht daran hindert, bereits Ende 2021 die neue Schnittstelle WebGPU herauszubringen.
Vorausschauend kann man bei der Mirage-Engine die Schnittstelle austauschen, sobald sie wieder breit unterstützt wird und zuverlässig läuft.
Was sind die Vorteile einer eigenen Engine?
Eine eigene Engine bietet maximale Entfaltung und Kontrolle zum Preis von einem ungeheuren Zeitaufwand und alleiniger Verantwortlichkeit.
Videospiele, die in Baukaustenengines entwickelt wurden, können dafür relativ leicht auf Konsolen portiert oder zum Kauf angeboten werden.
Man darf allerdings nicht den Aufwand unterschätzen, sich in die Oberfläche einer fertigen Engine einzuarbeiten. Das geht natürlich immer
noch schneller, als alles selbst zu schreiben, bringt einen persönlich aber weniger weit und der Aufwand war fruchtlos, wenn man die Engine
wegen eines fehlenden Features wechseln muss oder nach einem Update nichts mehr wie gewohnt läuft. Neben dieser Ungewissheit skalieren die
Kosten der großen Engines mit dem eigenen Erfolg, weshalb ich für einen direkten Einstieg eher die freie Godot-Engine empfehlen würde.
Für mich waren die Freiheit, Weboptimierung für schnellere Ladezeiten und der Lernfaktor die Gründe für meine ganz eigene kleine Engine.