Einstieg in die Spieleentwicklung: Game-Engines I

Mein letzter Beitrag zu diesem Thema ist schon eine Weile her. Nachdem ich im letzten Artikel über Modding gesprochen habe, wird es Zeit, über Editoren und Engines zu sprechen, mit denen man eigene Spiele erstellen kann. Das zwar mit einigen Modding-Tools prinzipiell auch möglich. Viele davon benötigen aber das Original-Spiel um Mods zu starten bzw. ist es auch nicht erlaubt das fertige Produkt zu vermarkten oder ohne Zusammenhang mit dem Original zu verbreiten. In den letzten Jahren sind die Editoren und Tools, die mit den Engines ausgeliefert werden um ein vielfaches umfangreicher und einfachte in der Bedienung geworden, so dass sie sich von Mod-Tools nur wenig unterscheiden. Einige Tools ermöglichen sogar das Erstellen einfacher Spiele ohne überhaupt Code schreiben zu müssen. In diesem Artikel stelle ich einige der bekanntesten – und für den Einstieg am geeignetsten – Engines vor. Im 2. Teil gibt es dann Tipps für die ersten Schritte mit einer (neuen) Engine.

Was ist eine Engine

Grundsätzlich bekommt man mit einer Spiele-Engine mehrere Teile in die Hand. Erstens, einen Editor der das Erstellen von Spielen erleichtert und sehr häufig mit der eigentlichen Engine verwechselt wird. Die Engine selbst ist eine gigantische Software, die alle Module vereint, die notwendig sind um ein Spiel auf den Bildschirm zu bringen: Das Ausgeben von Grafik und Sound, das Verarbeiten von Userinput (Maus, Tastatur, Controller, etc.), das Laden und Speichern von Dateien; aber auch spezifischere Elemente wie Physik-Simulation, KI und Multiplayer. Mit einer Engine kann man sich also komplett auf die Spielelogik und das Game- und Leveldesign konzentrieren, ohne sich darum kümmern zu müssen wie man ein 3D-Modell am Bildschirm rendert oder wie die eigene Spielfigur auch im Spiel der Mitspieler auftaucht (wer sich intensiver mit der Spieleentwicklung befassen will, sollte früher oder später zumindest theoretisch wissen, wie die einzelnen Aufgabenbereiche funktionieren).
Damit man aber nicht direkt mit den Modulen arbeiten muss und die einzelnen Assets, wie Texturen, 3D-Modelle und Sounds, durch viele Zeilen Code miteinander zu einem Spiel verknüpfen muss, gibt es den eingangs erwähnten Editor. Dieser benutzt die Module der Engine und erlaubt es eine Spielwelt zu modellieren und die einzelnen Asstes miteinander zu Kombinieren und sie zu manipulieren. Die so erzeugten Gameobjekte können dann in der Spielwelt positioniert und zum Leben erweckt werden.

Spieleentwicklung per Mausklick

Spieleentwickler-Tools haben in den letzten 20 Jahren, genauso wie die Spiele selbst eine enorme Entwicklung durchgemacht. Das Erstellen von Spielen ist leicht wie nie. Möglich machen das Tools, in denen man Spiele per Mausklick erzeugen kann. Diese Tools sind meist auf 2D-Spiele begrenzt, da diese viel einfacher umzusetzen sind. Es werden keine 3D-Modelle benötigt und eine Physik-Simulation ist oft nicht notwendig bzw. viel simpler als in einer 3D-Umgebung. Die Spielemechaniken sind auch meist simpler und oft nur auf das notwendigste begrenzt. Dafür sind sie besonders zugänglich und werden meist zum Erstellen von Jump ’n‘ Run- oder RPG-Titeln im Stile der Supernintendo-Ära genutzt.

Eines der bekanntesten Tools dieser Kategorie ist der RPG-Maker. Seit mehr als 20 Jahren erfreut er sich großer Beliebtheit. Die RPG-Maker-Spiele haben den typischen SNES-Look den auch heute wieder viele versuchen nachzuahmen. Ein weiterer Grund für die große Bekanntheit des Makers ist die inoffizielle englische (und deutsche) Übersetzung der RPG-Maker 2000. Damals gab es nur Lizenzen für Japan und die Übersetzungen verbreiteten sich (illegal) über das Netz. Zur selben Zeit gab es kaum freie Engines und Frameworks, die Tools waren nicht so benutzerfreundlich wie heute und Dokumentationen und Tutorials waren ach nicht so umfangreich. Der RPG-Maker ist mittlerweile seit einigen Jahren auf Steam erhältlich und ist über den reinen Mausklick-Editor hinausgewachsen. Der Maker ist nicht gerade günstig aber immer wieder in den Steam-Sales enthalten.

Vollwertige Engines

Der Begriff „Engine“ wurde Mitte der 90er geprägt. Die ersten Vertreter für die auch Lizenzen angeboten wurden, waren Doom-Engine, Source Engine und die Unreal Engine. Diese wurden über die Jahre stetig weiterentwickelt und sich auch heute noch verfügbar und beliebt. Für private Projekte manchmal frei Nutzbar waren kommerzielle Lizenzen meist mit hohen Kosten verbunden die sich nur größere Entwickler leiten konnten. Ein großer Wandel wurde durch 2 treibende Kräfte ausgelöst. Professionelle Engines waren den großen Entwicklern vorbehalten, kleine Projekte waren meist auf Mods beschränkt. Für kleine Teams und Einzelpersonen blieb nur die Entwicklung eigener Engines bzw. Spielen die direkt im Code realisiert wurden. Die sich daraus entwickelnde Indie-Szene wurde in den letzten Jahren stetig größer und erlangte immer größere mediale Aufmerksamkeit. Hier trat die Firma Unity auf den Plan. Mit ihrer Unity3D-Engine richteten sie sich stark an die Indie-Entwickler, die Lizenzkosten waren auch für kleine Teams leistbar und für nichtkommerzielle Projekte gab es eine abgespeckte freie Variante der Engine. Der einfache und intuitive Umgang mit dem Editor führte zu einer wachsenden Beliebtheit.

Mit den Jahren war Spieleentwicklung Salonfähig geworden, wachsende Communities, Kurse an Universitäten und eigene Schulen haben ebenfalls dazu beigetragen dass immer mehr Menschen ihre eigenen Spiele entwickelt haben. Der nächste große Umschwung kam dann mit der Veröffentlichung der Unreal Engine 4. Unity3D wuchs von Version zu Version ebenso wie die beliebtheit und die Community. Langsam aber sicher entwickelte sie sich zu einem ernstzunehmenden Produkt. Andere Engines hatten immer noch hohe Lizenzkosten, einige davon konnten auch nicht kostenlos getestet werden. Die Unreal Engine 4 wurde dann aber unter einem komplett neuen Lizenzansatz veröffentlicht. Mit einer Subscription von 20$ pro Monat hatte man Zugriff auf  die komplette Unreal Engine inklusive aller Updated während des Subscriptionzeitraumes. Es war auch möglich die 20$ einmal zu bezahlen und die Engine zu installieren und erst zu einem späteren Zeitpunkt erneut 20$ zu bezahlen um die Updates zu bekommen. Für veröffentlichte Spiele sind weiterhin umsatzabhängige Abgaben zu bezahlen, aber die teuren Lizenzkosten entfallen. Unity hat schnell darauf reagiert und die eingeschränkte Free-Version der Engine eingestellt. Die Unity3D-Vollversion kann frei genutzt werden, (umsatzabhängige) Gebüren fallen nur für veröffentliche Spiele an, weiters gibt es Subscription-Modelle für erweiterte Services wie Support, Asset-Store und Cloud-Services. Daraufhin hat auch Unreal wieder reagiert und die Subscription für die Engine selbst aufgehoben und ebenfalls Bezahlmodelle für Extraservices geboten. Damit sind 2 der größten Engines frei für jedemann zugänglich, andere Engines haben dieses Wettrennen nicht mitgemacht, sie können weiterhin von großen Entwicklern (auf Anfrage) lizenziert werden oder werden, wie die id Tech, gar nicht mehr lizenziert.

Unity3D

Unity ist gerade bei Indies, Studenten und Hobbyspieleentwicklern sehr beliebt. Anfangs wegen der eher mittelmäßigen Grafik kritisiert, hat sie in den letzten Jahren stark zugelegt. Unity ist vor allem auch für die Multiplattform-Fähigkeit bekannt, es gibt kaum ein Gerät das nicht unterstützt wird, egal ob PC, Konsole, Mobilgeräte oder andere Plattformen. Weiters unterstützt Unity eine Vielzahl von Dateiformaten, anders als bei anderen Engines hat man so die freie Wahl bei den Content-Creation-Tools (Bildbearbeitung, 3D-Modellierung, Soundkomposition, etc.). Der Einstieg in Unity ist denkbar einfach und die Dokumentation ist umfangreich, die Community sehr groß und hilfsbereit und es gibt unzählige Tutorials vom Anfänger bis zum Profi.
Unity bietet als Scriptsprache, unter anderem JavaScript und C#. Das ist für Einsteiger mit Programmiererfahrung besonders interessant, da sie keine eigene Scriptsprache wie z.B. LUA lernen müssen. Auch für Programmieranfänger ist es einfacher, da für JavaScript und C# mehr Tutorials und Quellen verfügbar sind. Gerade C# ist als Scriptsprache interessant, da somit beinahe die komplette .Net-Umgebung zur Verfügung steht. Außerdem erlaubt die objektorientierte Programmierung komplexere Projekte einfacher, übersichtlicher und performanter umzusetzen. Ich empfehle allen Anfängern auf C# zu setzen, auch wenn leider viele Tutorials JavaScript nutzen. Aber auch jenen mit JavaScript-Erfarung empfehle ich (gerade bei größeren Projekten) C# und OOP zu versuchen. Unity erlaubt auch das Schreiben eigener Editor-Plugins und Erweiterungen, diese können nur als C#-Scripte umgesetzt werden.
Eine weitere stärke von Unity3D ist die Art wie Gameobjekte aufgebaut sind. Unity nutzt ein Entity-Component-Modell, Gameobjekte werden dabei durch Kombination einzelner Komponenten erstellt. Ein Panzer besteht z.B. aus einer Grafikkomponente für das Aussehen, einer Fahrzeugkomponente für das Fahrverhalten/die Steuerung, einer Waffenkomponente für die Kanone, eine Physikkomponente für Kollisionen und Schwerkraft, etc. Vor allem ältere Engines setzen auch in ihren neuesten Versionsn oft noch auf ein Vererbungsmodell. Dabei wird von einem allgemeinen Objekt ausgehend immer wieder Kindobjekte erzeugt die spezifischeres Verhalten aufweisen. So wird das Kindobjekt eins grafischen Elements um physikalische Eigenschaften erweitert, dessen Kind wird mit Eigenschaften für Fahrzeuge erweitert (Geschwindigkeit, Beschleunigung, etc.) dessen Kinder weisen dann spezielle Eigenschaften und Funktionen für Land-, Luft- bzw. Bodenfahrzeuge auf.

Unreal Engine

Die Unreal Engine zählt zu den bekanntesten Engines, zum einen wird sie auch von vielen namhaften Entwicklern genutzt, zum anderen ist sie auch für Indies und Hobbyprogrammierer verfügbar. Als Script- bzw. Programmiersprache steht hier nur C++ zur Verfügung. Die Programmierschnittstelle gestaltet sich auch als etwas komplexer als jene von Unity. Der Einstieg fällt hier ohne Vorerfahrung also etwas schwieriger aus. Dafür bietet die Unreal Engine ein Feature, das sich Blueprint nennt. Dabei kann Spielelogik mittels „visuellem Scripting“ umgesetzt werden. Einzelne Knoten bilden die Zustände verschiedener Gameobjekte ab, diese werden miteinander verbunden um so unter gewissen Bedingungen Zustandsänderungen auszulösen. Das Konzept wird auch z.B. von Autodesk Maya für das Scripten von Animationen verwendet. Prinzipiell ist es ein gutes System um schnell und einfach Spielmechaniken umzusetzen bei umfangreicheren Spielen können die Graphen aber gigantische Ausmaße annehmen und werden extrem unübersichtlich. Auch die Fehlersuche gestaltet sich als schwierig und der Funktionsumfang ist eingeschränkt.
Die Unreal Engine basiert auch heute noch auf einem hierarchischen Vererbungsmodell, um aber mit der Flexibilität mithalten zu können, wurde mit einem Update ein komponentenähnliches System eingebaut. Die Gameobjekte (Actors) können mit kleinen Klassen erweitert werden.
Die Unreal Community war schon zu Unreal Engine 3 Zeiten recht groß, da mit dem Unreal Development Kit (UDK) eine freie Version der Engine zur Verfügung stand. Aufgrund des attraktiven Lizenzmodels (5% vom Monatsumsatz ab einem Umsatz von über 3000$) sind die verfügbaren Tutorials und Ressourcen aber noch weiter gestiegen.

CryEngine

Wer kennt Crisis nicht, das Spiel, das zu seinem Release von der damals aktuellen Hardware nicht auf maximalen Settings gespielt werden konnte. Die CryEngine ist ein mächtiges Werkzeug, nachdem es bei CryTek spieletechnisch seit einigen Jahren stark bergab geht, hat sich der deutsche Entwickler stark auf seine Engine konzentriert um diese auch für Bereiche außerhalb der Spieleentwicklung attraktiv zu machen. Ja, die Engine liefert eine atemberaubende Grafik, aber die muss der Entwicklerrechner auch stemmen können. So umfangreich die Tools der CryEngine auch sein mögen, so komplex ist auch die Anwendung. Die CryEngine ist, verglichen mit anderen Engine nicht sehr Anwenderfreundlich. Der Lernaufwand ist sehr hoch und obwohl sie mittlerweile auch frei verfügbar ist, ist die Community nicht so groß wie die der Konkurrenz. Die CryEngine eignet sich daher nur bedingt als erste Wahl für Einsteiger. Eine weitere Schwachstelle der Engine: sie eignete sich sehr gut für Shooter, das war und ist ihr Hauptanwendungsgebiet, für andere Genres eignete sie sich weniger. Ein Shooter ließ sich schnell umsetzen, da viele vorgefertigte Gameobjekte und Scripte (Gegner-KI, Waffen, Fahrzeuge, etc.) vorhanden waren. Darüber hinaus musste vieles selbst Programmiert werden. Die Engine wird zwar mittlerweile auch für andere Spiele verwendet, die stärken liegen aber ganz klar woanders. Großer Pluspunkt der CryEngine ist das Lizenzmodell, für die Engine selbst gibt es nämlich keines. Die Engine ist komplett frei (auch keine umsatzabhängigen Gebühren) inklusive Sourcecode und aller Features. Bezahlmodelle gibt es nur für den Support, der laut CryTek auf sehr hohem Niveau liegt.

XNA Game Studio/MonoGame/SharpDX/Xenko

XNA ist ein Gamedevelopment-Framework von Microsoft, das das Entwickeln für Windows-PC aber auch die Xbox erlaubt. XNA ist eine .Net-API die Funktionen bereitstellt die speziell für das Entwickeln von Spielen benötigt werden (u.a. einfaches Erstellen und Manipulieren von 2D und 3D Grafiken). Darunter verbirgt sich DirectX und C++.  Das XNA Game Studio ist eine Erweiterung für Visual Studio die das einfache Erstellen von Spiele-Projekten erlaubt. Diese Projekte enthalten z.B. schon den Code der für das Erstellen eines Fensters unter Windows. Diesen sonst sehr aufwändigen Prozess muss man nicht mehr selbst programmieren und kann somit gleich loslegen. Im Jänner 2013 hab Microsoft bekannt XNA nicht mehr weiter zu entwickeln. Somit kann mit XNA nicht mehr für neuere Plattformen (Xbox one, Windows 8 aufwärts. Windows Phone 8 aufwärts) entwickelt werden. XNA kann aber immer noch heruntergeladen werden, die Verwendung erfordert aber ebenfalls Windows 7 und ein passendes Visual Studio. Wer noch so ein Setup hat und sich mehr mit dem Programmier-Aspekt der Spieleentwicklung interessiert, für den ist XNA durchaus ein guter Tipp, da das Internet immer noch voll mit XNA-Tutorials ist.
Auch wenn es keinen offiziellen Nachfolger für XNA gibt, so gibt es doch einige inoffizielle. Als direkter Nachfolger gilt MonoGame, ein OpenSource-Framework, das auf XNA 4.0 basiert. Es bietet die selbe Schnittstelle wie XNA an wird aber weiterhin aktiv weiterentwickelt und bietet auch mehrere Zielplattformen an. Als Wrapper für DirectX wird SharpDX benutzt. SharpDX setzt noch eine Ebene tiefer an und erlaubt das Entwickeln von DirectX-Anwendungen mit C#. Ältere Versionen enthielten ähnlich zu MonoGame diverse Hilfsfunktionen (das sogenannte Toolkit). Diese wurden aber mittlerweile entfernt. Die Entwickler (ein 1-2 Mann-Team) wollten SharpDX als reinen DirectX-Wrapper. Die Weiterentwicklung des Toolkits war nicht rentabel genug, da es nur wenige Anwender gab. Einige Monate davor wurde das Forum und einzige Informationsquelle geschlossen, da die einzige Person die Fragen beantworten konnte der Hauptentwickler selbst war. SharpDX ist daher alles andere als Einsteiger freundlich und eignet sich nur für Spezialfälle. Für C#-Entwickler die sich für DirectX interessieren, ist der Umweg über C++ allemal leichter, da hier weit mehr Quellen, Dokumentationen und Tutorials existieren. Aufgrund der spärlichen SharpDX-Dokumentation und dem geschlossenen Forum gestaltet sich das Erlernen ohne DirectX Kenntnisse als sehr schwierig. Wer sich dennoch für Spieleentwicklung mit C# interessiert, der könnte mit Xenko glücklich werden. Xenko ist neben MonoGame das zweite Projekt das SharpDX benutzt. Noch unter dem Namen Paradox stammte diese Engine vom SharpDX-Entwickler selbst. Die Engine wurde von einer japanischen Firma, dem Arbeitgeber des SharpDX-Entwicklers, übernommen und weiterentwickelt. Die Beta-Version ist frei erhältlich (inklusive Sourcecode) und wird ständig aktualisiert, einen offiziellen Release gibt es noch nicht, dieser wird aber ein Lizenzmodell aufweisen. Die Beta-Versionen sollen aber auch nach dem Release frei zugänglich bleiben. Vom Umfang der Engine und auch der Dokumentation und Tutorials kann sich Xenko noch nicht mit Unity messen dafür erlaubt Xenko im Gegensatz zu den anderen großen Engines das Enwickeln von Glücksspielen mit monetärem Hintergrund. Unity verlangt dafür eine teure Lizenz, alle anderen Engines verbieten Glücksspiele generell.

Frameworks

Die nachfolgenden Engines sind keine Komplettlösungen, sie beinhalten lediglich den Enginecode, Tools und Editoren müssen selbst erst geschrieben werden oder aber die Spiele werden direkt als Code geschaffen. Hier gibt es keine Echtzeitvorschau. Der Code muss zuerst kompiliert und gestartet werden, ehe man das Ergebnis betrachten kann. Diese Lösungen richten sich nicht an Programmieranfänger, sondern an erfahrenere Programmierer, die sich mit Spieleprogrammierung selbst beschäftigen möchten oder für Programmierer die sich für Teilbereiche einer Engine interessieren. Mit den Frameworks lassen sich selbst Subsysteme entwicklen, ohne die anderen Komponenten komplett selbst zu entwickeln; z.B. wenn man eine KI- oder Physik-Engine entwickeln möchte, für die Demonstration aber nur einfache grafische Elemente braucht und keinen Renderer schreiben möchte. Auch Programmierer die in für die Spieleentwicklung nicht so gebräuchlichen Sprachen beheimatet sind (Java, Python, …) werden hier fündig. Nachteil dieser Frameworks: Der hohe Programmieraufwand muss einem bewusst und Teil der Entscheidung für so ein Framework sein. Die fehlende Echtzeitvorschau macht die Gestaltung von Spielewelten schwieriger, da Objekte nicht per Maus platziert werden können. Der Code muss selbst kompiliert und in der Entwicklungsumgebund der Wahl konfiguriert werden und das kann auf den neuesten Betriebssystemversionen und IDE-Versionen zu Problemen führen, da es oft einige Zeit dauert bis der Sourcecode aktualisiert wird. Solche Frameworks haben oft Bugs und laufen nicht in allen Umgebungen einwandfrei. Da es sich meist um OpenSource-Projekte handelt die von nur wenigen bis hin zu einzelnen Personen gewartet werden, kann die Behebung solche Probleme einige Zeit dauern. Support beschränkt sich in den meisten Fällen nur auf eher kleine Communities bzw. dem Forum des Entwicklers.

Einige nennenswerte Vertreter:

Fazit

Das waren lange nicht alle Engines. Die Liste ist lange und es gibt Engines für die unterschiedlichsten Anwendungsfälle, Zielplattformen sowie Programmier- und Scriptsprachen. Die meisten der gelisteten Engines, vor allem der Open-Source-Varianten, fallen eher in die Kategorie Framework und kommen ohne Editor daher. Aber auch die Rundumpakete unterscheiden sich teils sehr stark vom Funktions- und Dokumentationsumfang. Die Engines die ich hier vorgestellt habe zählen zu den Bekanntesten und denen mit umfangreicher Dokumentation, außerdem sind sie frei für nicht-kommerzielle Projekte erhältlich. Das ist für den Einstieg wichtig, aber jeder muss selbst entscheiden welche Engine die richtige für ihn ist.

Im nächsten Artikel gebe ich euch noch nützliche Tipps für die ersten Schritte mit einer Engine mit auf den Weg.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.