Abenteuer Spieleentwicklung – Teil 8: Die Remaster-Baustelle

Mit Keen Dreams: Definitive Edition sind gleich zwei Dinge eingetreten, mit denen ich niemals gerechnet hätte. Einerseits wäre da der Umstand, dass ich an einem Remaster arbeiten würde, obwohl ich selbst üblicherweise kein Freund von Remastern bin. Andererseits konnte ich an einer Spielmarke arbeiten, die ich selbst als Kind sehr gemocht habe und sogar neue Spielinhalte hinzufügen. In dieser Ausgabe von Abenteuer Spieleentwicklung möchte ich euch durch den Portierungs- und Modifikationsprozess führen.

Zu Beginn des Projekts stand zunächst einmal die Portierung des Original-Quellcodes in die Unity-Engine. Keen Dreams wurde im Original in C++ geschrieben und grundsätzlich erlauben die Systeme, für die ich entwickle, native C++-Entwicklung, allerdings sollte Keen Dreams Definitive Edition ja nicht nur für ein System erscheinen: Neben der Wii U sollte in jedem Fall auch eine Portierung auf den New Nintendo 3DS und die Xbox One geprüft werden. Für Multiplattform-Entwicklung ist Unity wie bereits in der Vergangenheit besprochen eine sehr günstige Wahl, da Unity von Konsolen-spezifischen Besonderheiten weitgehend abstrahiert. Darüber hinaus habe ich für verschiedene Teilaufgaben bereits modulare Lösungen für Regina & Mac programmiert, die in Keen Dreams Definitive Edition direkt wieder verwendet werden konnten.

Die leicht helleren Wände halten Keen nicht auf. Unten sieht man außerdem einen Sammelgegenstand, der über Plattformen, die außerhalb des sichtbaren Bereichs sind, erreicht werden muss.

Allerdings hat das natürlich zur Folge, dass ein Großteil des Originalcodes nachprogrammiert werden musste. Für die Spielphysik und die Gegner-KI war das auch in der Tat sehr direkt möglich, allerdings wurden einige Funktionen in Assembler geschrieben, was von C# schon deutlich weiter weg ist und wesentlich weniger gut lesbar ist. Insbesondere im Hinblick auf die Leveldaten und deren Interpretation haben Cormack und Co. ziemlich dünn dokumentierten Code produziert, der zudem ein von Cormack erdachtes Codierungsverfahren umsetzt, was den Zugriff auf die Leveldaten zusätzlich erhöht hat. Im Endeffekt hat es sich als leichter herausgestellt, Tilesheets zum Spiel herunterzuladen und die Kollisionsdaten für jedes Tile anhand des Spiels zu ermitteln.

Als nächstes sollte es daran gehen, die Darstellung des Spiels auf 16:9-Bildschirme anzupassen. Zum Glück waren alle Level, die es ins finale Spiel geschafft hatten, breit genug, um in der Widescreendarstellung keine Fehler zu produzieren. Allerdings war Keen Dreams in Sachen Gegnerverhalten sehr sparsam und hat Gegner, die aus dem sichtbaren Bereich herausgingen, sehr schnell betäubt. Eine Beibehaltung der Aktivitätsfenster der Gegner hätte dazu geführt, dass jeder Gegner den Spieler erst einmal betäubt begrüßt und erst nach einigen Schritten des Spielers anfängt, sich zu bewegen. Das wäre natürlich ein wenig unglücklich und würde geradewegs wie ein Fehler wirken. Daher habe ich den Aktivitätsradius der Gegner erhöht, musste aber auch einige Gegnerpositionen leicht anpassen, damit Szenarien, die im Leveldesign eindeutig vorgesehen sind, nicht durch voreilige Gegneraktionen verhindert werden. Stellenweise ist es allerdings leider so, dass etwas unglückliches Verhalten nicht zu vermeiden ist, ohne sichtbare Gegner inaktiv zu halten. An zwei Stellen im Spiel kann es daher passieren, dass man zwei Gegner, denen man normalerweise in einem etwas größeren Abstand begegnen würde, etwa zeitgleich treffen kann – abhängig von der Route die man wählt.

Commander Keen als Lorenfahrer

In Sachen Gegnerdesign hat sich zudem noch ein anderes, weniger mechanisches Problem ergeben. Im Spiel gibt es einen Gegner namens Melon Lips. Dabei handelt es sich um eine Wassermelone mit markant dicken Lippen, die den Gegner mit Melonenkernen beschießt. Als ich diesen Gegner gesehen habe, habe ich ein wenig geschaudert, denn er kombiniert gleich zwei Stereotype über schwarze Menschen (besonders in den USA, dem Herkunftsland von Commander Keen): Dicke Lippen als stereotype Überzeichnung schwarzer Menschen sollten jedem ein Begriff sein, zudem ist es aber so, dass Schwarzen in den USA in Text und Bild oft eine besonders starke Vorliebe für Wassermelonen nachgesagt wird, was in rassistischen Argumentationsmustern gegen Schwarze gelegentlich einfließt. Nach Rücksprache mit einigen Bekannten, die für dieses Thema besonders sensibilisiert sind – namentlich insbesondere meine Frau Tosha, „Bufko“-Timo und „Homer“-Matthias habe ich mich entschieden diesen Gegner durch eine Honigmelone zu ersetzen und die Lippen etwas dezenter zu gestalten. Mein Auftraggeber hat sich zwischenzeitlich auch mit Keen-Vater Tom Hall ausgetauscht, der die Änderung guthieß und dem dieser Zusammenhang gar nicht bewusst war.

Die nächste eher moderate Änderung betrifft die Kommunikation des Spiels mit dem Spieler. In den frühen 90er Jahren war es sehr beliebt, Gegenstände hinter falschen Wänden zu verstecken und Keen Dreams hat in dieser Hinsicht zwei Level in denen es geradewegs notorisch nervig ist, weil man sich lange Zeit hinter falschen Wänden bewegt, die kein bisschen von realen Wänden zu unterscheiden sind. Um diese Level etwas unterhaltsamer zu gestalten, habe ich die Farbe der Wände, die falsch sind, dezent heller gemacht, so dass man als Spieler wenigstens erkennen kann, wo es langgehen könnte, ohne wie wild herumprobieren zu müssen. Da man Keen hinter den falschen Wänden weiterhin nicht sehen kann, sind die Stellen mit Sicherheit weiterhin fummelig genug, dass der Charakter des Originals nicht total verfälscht wird. Ich muss allerdings auch gestehen, dass ich in den neuen Levels von falschen Wänden absolut gar keinen Gebrauch gemacht habe, obgleich das natürlich einen gewissen Stilbruch darstellt. In einem Level muss man zudem in blindem Vertrauen über mehrere unsichtbare Plattformen zu einem Sammelgegenstand hüpfen. An dieser Stelle habe ich mir die Freiheit genommen, die unsichtbaren Plattformen mit Items zu markieren.

Die gelbe Honigmelone (neuer Name: Honey Lips) verhält sich wie der alte Gegnertyp Melon Lips.

Eine wesentlich zentralere Änderung betrifft allerdings die Spielstruktur. Im Original konnte man jedes Level nur ein Mal spielen und konnte in manchen Levels Boobus Bomben sammeln. Am Ende des Spiels benötigt man zwölf Boobus Bomben, um dem Endgegner entgegentreten zu können. Im Remaster habe ich die Boobus Bomben entfernt und stattdessen Boobus Bomben für drei verschiedene Dinge gegeben: Das Schlagen der Bestzeit in einem Level, das Sammeln aller Sammelgegenstände in einem Level und das erfolgreiche Abschließen eines der zwölf neuen Level im Spiel. Die alten zwölf Level hingegen geben dem Spieler Schlüssel, um zum ersten Mal Boobus Tuber entgegentreten zu können. Diese Struktur gibt dem Spieler meines Erachtens mehr Freiheiten, ohne den erfolgreichen Spielabschluss zu verschenken und sorgt zudem dafür, dass der Spieler noch einige Zusatzaufgaben erledigen kann, wenn er den Hauptweg durch das Spiel bereits abgeschlossen hat. Das Sammeln aller Sammelgegenstände ist in Keen Dreams ohnehin beinahe eine Notwendigkeit, um die Level angemessen zu würdigen.

Im Gegensatz zum Original kann man in der Definitive Edition nicht mehr jederzeit einen Savestate anlegen, sondern das Spiel speichert automatisch nach Levelabschluss. Allerdings kann man auch keine Munition mehr aus einem Level in das nächste mitnehmen. Keen startet jedes Level mit zehn Schuss, so dass für die vorgegebenen Abschlusszeiten kein Vorab-Farming in anderen Levels notwendig oder möglich ist. Gleichzeitig hat Keen keine Leben mehr und die sammelbaren Leben sind durch Sammelgegenstände, die Punkte geben, ersetzt worden. Da die Level keine Checkpoints haben, würden Leben keinen Sinn ergeben. Die Schwierigkeitsgrade des Originals unterschieden sich darin, wie hoch Keen springen kann und wie lange Gegner nach einem Schuss betäubt sind. Das Leveldesign scheint an die Physik des einfachen Schwierigkeitsgrades angepasst zu sein, so dass ich die Verhaltensweisen des einfachen Schwierigkeitsgrades für das Spiel übernommen habe. Die Skalierung des Schwierigkeitsgrades kann nun durch den Spieler selbst vorgenommen werden, indem er sich entscheidet, die Zusatzaufgaben in den Levels anzugehen oder es bleiben zu lassen.

Fallende Pflaumen verbieten Verschnaufpausen.

Die wichtigste Änderung ist aber natürlich die, die auch den größten zeitlichen Rahmen in der Entwicklung eingenommen hat: Das Design von zwölf zusätzlichen Levels. Ich habe mich schnell entschieden, diese neuen Level als „zweiten Gang“ zu konzipieren, da die Level so natürlich in die Spielwelt eingebunden werden können. In manchen Fällen handelt es sich tatsächlich um (deutlich veränderte) Variationen der ersten Gänge, in der Regel sind es aber unabhängige Level mit teilweise etwas ausgefalleneren Konzepten. So gibt es ein Level, in dem man die ganze Zeit vor fallenden Pflaumen fliehen muss und ein anderes, in dem man sich nur über Loren fortbewegt.

Ich habe grundsätzlich versucht, die Wage zu halten zwischen etwas verspielteren Levelideen und solchen, die den Geist des Original Keen Dreams gut einfangen. Im Ergebnis habe ich für das Design von gerade einmal 12 Levels mehrere Monate gebraucht, da einige Konzepte mehrere Iterationen gebraucht haben, bis sie wirklich gut funktioniert haben und andere Levelideen auch wieder verworfen wurden. Dabei ist vor allem die geringe Zahl verschiedener Bauelemente in Keen Dreams limitierend, hat aber gleichzeitig zu einigen kreativen Levelideen gesorgt. In Sachen Schwierigkeitsgrad habe ich mich an der schwereren Hälfte der Keen Dreams Level orientiert, aber sichergestellt, deutlich unter dem Niveau von Regina & Mac zu bleiben, das doch einigen Spielern deutlich zu schwer war.

Im Level-Auswahlbildschirm sieht man, welche Punkt- und Zeitmedaillen man bereits erhalten hat.

In der nächsten Ausgabe von Abenteuer Spieleentwicklung werde ich über den steinigen Portierungsprozess auf den New Nintendo 3DS berichten.