Entwicklertagebuch #13
Datum: 18.02.2010

Die Nebula-Engine von „Drakensang: Am Fluss der Zeit“ oder Was eine Game-Engine mit dem Kölner Dom gemein hat

Stellt euch ein Rollenspiel als eine Art Lego-Burg vor, die aus Hunderten von kleinen Bausteinen besteht. Die Bausteine ganz oben etwa sind das Inventar oder das Kampfsystem. Darunter steckt die gesamte Technik, die Engine, die alles zum Laufen bringt. Der Clou an unserer Nebula-Engine ist nun, dass die einzelnen Technik-Bausteine flexibel sind, dass man Einzelteile aus der Engine lösen kann, ohne viel an den anderen Bausteinen verändern zu müssen. Warum das so toll ist und inwiefern sich das positiv auf die Arbeit von „Drakensang: Am Fluss der Zeit“ auswirkt, erläutern wir euch im dreizehnten von insgesamt 15 Entwicklertagebüchern.

Mit Engine bezeichnen wir kein bestimmtes Programm-Modul, sondern die gesamte Technologie, die sich hinter unseren Computerspielen verbirgt. Unsere Nebula-Engine setzt sich also aus vielen kleineren Engines wie der Grafik-, Physics- oder Sound-Engine zusammen. Häufig funktionieren Game-Engines nur wirklich gut mit einem bestimmten Spielgenre, etwa einem 1st-Person-Shooter oder einem Rennspiel. Da unsere Engine aber aus vielen Modulen besteht und dadurch flexibler ist, sind wir nicht auf ein Genre festgelegt. Anwenderfreundlichkeit steht bei uns also auf derselben Stufe wie Performance.

Hierzu gehört auch, dass die Engine Arbeitsprozesse automatisiert und zu deren reibungslosem Ablauf beisteuert. So wird jede Nacht ein sogenannter „Build“ vom Spiel erstellt, der uns mit den neuesten Daten versorgt. „Ein Build“, fragt ihr euch? Das ist im Prinzip nichts anderes als der aktuelle Stand des Spiels – inklusive aller Texturen, 3D-Objekte usw. Er wird gemacht, um sofort feststellen zu können, ob sich irgendwo ein Fehler eingeschlichen hat. Schließlich arbeitet jede Abteilung bei uns erst einmal für sich, sodass nicht gleich ersehbar ist, ob das Spiel tatsächlich so läuft, wie es laufen sollte. Erst wenn alles buchstäblich zusammenfließt und wir die aktuelle Version als Ganzes zu sehen bekommen, können wir mögliche Fehler entdecken und beheben.

Die Nebula-Engine gibt es seit rund zehn Jahren, und seitdem wird sie kontinuierlich weiterentwickelt. Für „Drakensang“ hatten wir damals die Nebula 2 programmiert. Diese speziell für PCs zugeschnittene Engine wird nun für das Prequel „Drakensang: Am Fluss der Zeit“ noch einmal ordentlich überarbeitet und – der Flexibilität sei Dank – mit Bestandteilen aus der noch in der Entwicklung befindlichen Nebula 3 versehen. Unter anderem haben wir die lizenzpflichtige Speedtree-Software gegen unsere eigene Vegetations-Rendering-Engine ausgetauscht. Dadurch ist es uns endlich möglich, echte Fichtenwälder darzustellen – wovon wir euch ja bereits schon ausführlich im siebten Entwicklertagebuch vorgeschwärmt haben.

Natürlich sind wir auch permanent dabei, die Engine zu optimieren und zu schauen, wo wir noch etwas an Geschwindigkeit rausholen oder den Speicherverbrauch reduzieren könnten. Bemerkbar macht sich das dann beispielsweise in den Textur-Auflösungen oder im erhöhten Detailgrad bei Gesichtern. Außerdem bekommen wir mit unserem neuen Gegenlicht nun wunderschöne Sonnenuntergänge hin. Bei allen technischen Neuerungen und Fortschritten ist uns allerdings sehr daran gelegen, dass diese sich zweckdienlich in das Gameplay einfügen und nicht vom eigentlichen Spielgeschehen ablenken. Sie sollen etwa eine besondere Stimmung unterstreichen und nicht zur reinen Effekthascherei werden.

Warum aber eine eigene Engine? Warum verwenden wir nicht z.B. die zweifelsohne sehr gute Unreal-Engine, wie es viele andere Studios auch tun? Neben der bereits erwähnten Flexibilität, auf die wir großen Wert legen, gibt es noch einen anderen, weitaus simpleren Grund. Als wir vor zehn Jahren mit der Entwicklung von „Project Nomads“ begannen, gab es erstens nur wenige Engines zum Lizenzieren, die zweitens vor allem auf 1st-Person-Shooter ausgerichtet waren. „Project Nomads“ war aber mehr als ein reiner Shooter, weshalb wir beschlossen, unsere eigene Engine zu programmieren.

Dies wiederum gibt uns die Möglichkeit, die Engine Open Source zu stellen, also den Quellcode frei zugänglich zu machen. In regelmäßigen Abständen veröffentlichen wir einen aktuellen Build unserer Nebula-Engine, den sich dann interessierte Studios oder auch Hobbyentwickler runterladen können. Schön ist daran vor allem, dass eine Kommunikationsplattform entsteht und sich Programmierer aus aller Herren Länder über bestimmte Schwierigkeiten austauschen und oft auch Lösungen erarbeiten können.

Stichwort Austausch: Dank euch hat „Drakensang“ eine sehr lebendige Community – und obendrein eine sehr erfindungsreiche. So hat eine Spielerin, die an Arachnophobie leidet, sich also sehr vor Spinnen fürchtet, einen Tipp aus der Community erhalten, wie sie durch einen kleinen Kniff in der Datenbank aus den zugegebenermaßen häufig anzutreffenden Spinnen kurzerhand Wölfe machen kann. Auch solche kleinen Modifications, auch Mods genannt, wollen wir natürlich unterstützen, indem wir die Quellcodes zur Verfügung stellen.

Wer schon einmal an einer solchen Mod mitgearbeitet hat, weiß ungefähr, wie viel Disziplin und Organisation bei der Entwicklung eines Computerspiels erforderlich sind. Das zeigt sich besonders gut bei der Programmierung der Engine. Da insbesondere Rollenspiele in programmiertechnischer Hinsicht zu den aufwendigsten Spielen überhaupt gehören, ist es wichtig, dass der Programmcode von Anfang an eine klare und saubere Struktur aufweist.

Bleibt am Ende nur eins zu sagen: Die Gesamtarchitektur der Engine muss stimmen. Nehmt beispielsweise eine Kathedrale wie den Kölner Dom. Obwohl architektonisch eine Meisterleistung, ist der Dom nie ganz fertig. Ständig wird an ihm gebaut, an ihm rumgewerkelt, damit er noch beeindruckender und schöner wird. Dasselbe gilt auch für unsere Nebula-Engine. Die Arbeiten an ihr sind eigentlich nie ganz abgeschlossen. Wir entwickeln sie stetig weiter, um sie noch besser und zeitgemäßer zu machen. Und vielleicht wird unsere Welt am Fluss der Zeit ein schöpferisches Kleinod, ein wenig so wie es dem Bauwerk am Rhein erging.

zurück zur Übersicht

geschrieben von Torgan