Ein bisschen Retro-Feeling für unser Retro-Spiel

Ungefähr 35 Jahre ist es hier, dass der Atari 1040ST(F) auf den Markt kam: An diesem Rechner durfte ich damals als kleiner Junge meine ersten Tasten drücken und Mausklicks machen.

Die grafische Oberfläche des Systems (GEM) war zu diesem Zeitpunkt (frühe Anfangszeit der 90er Jahre) noch keine Selbstverständlichkeit: Windows 3.1, mit dem ich darauffolgend meine weiteren Erfahrungen sammelte, kam erst im Jahr 1992 auf den Markt.

Das Spiel Ballerburg war das einzige (neben einem Schachprogramm), das mein Vater damals auf der (nicht-serienmäßigen) 50 MB (!) Festplatte installiert hatte.

Der Atari 1040STF (ab 1986) war mit einem 8 MHz 16-bit-Prozessor (Motorola MC68000), 1 MB RAM und einem 3½ Zoll Floppylaufwerk (720 kB) ausgestattet. Das Betriebssystem TOS war unveränderlich in einem ROM-Speicher untergebracht

Trotz des damals monochromen Bildschirms fasziniert mich diese Technik bis heute: Ein Computer in einem größeren Tastaturgehäuse, der lautlos (bis auf das Diskettenlaufwerk) arbeitet und einfach an einen Bildschirm (oder sogar einen Fernseher) angeschlossen werden kann.

Übrigens: Der damalige Textprozessor Signum! war seiner Zeit weit voraus und konnte noch lange bevor es überhaupt Windows und das entsprechende Word für Windows gab bereits komplexe mathematische Formeln in einem WYSIWYG Editor setzen.

Heutzutage sind wir da etwas verwöhnter: Speicherplatz (sowohl der Festplatte als auch des Arbeitsspeichers) ist kein rares Gut mehr. Auch die Grafik- und Rechenleistung reichen aus um komplexe 3D-Welten in Echtzeit in HD-, 4K oder sogar 8K-Auflösung zu berechnen und darzustellen (der Atari hatte eine Monochromauflösung von 640×400 Bildpunkten bei aber immerhin 70 Hz).

Der Tastaturrechner in Neu

Als ich Anfang dieses Monats erfuhr, dass der Raspberry Pi integriert in einem Tastaturgehäuse erscheinen würde, erweckte dies sämtliche der alten Erinnerungen an die Zeit mit dem Atari ST in mir: Das Einschalten des Systems, der lautlose Bootvorgang in die grafische Oberfläche und das oftmals wahllose Herumklicken und Tastendrücken meiner frühen Kindheit.

Und trotz der tollen, und nicht mit der GEM-Oberfläche des Atari ST vergleichbaren, Desktopoberfläche vom Raspberry Pi OS, löst dieser neue Rechner dennoch ein gewisses Retrogefühl in mir aus.

Der Raspberry Pi 400 (2020) basiert auf dem Raspberry Pi 4 und ist ein SoC mit einem Cortex-A72 ARM v8 (Broadcom BCM2711) mit vier Kernen bei einer Taktrate von 1,8 GHz . 4 GB RAM und ein micro SDHC Slot dienen (neben den USB-Schnittstellen) als Speicher

Da ich die Game-Engine für unser 2D-Zelda-Like aber sowieso auf einen Raspberry zum Laufen bringen wollten, kam die heutige Zustellung des Paketdienstes natürlich mehr als gelegen: Eine microSD-Karte hervorgekramt, mit Raspberry Pi OS geflasht, den Pi an Spannungsversorgung und Bildschirm angeschlossen und …. voilà: die Desktopoberfläche erscheint auf dem Bildschirm.

Gibt es die SDL2 für das OS? Ja.
Sind Freepascal und Lazarus verfügbar? Ja.
Den Quelltext vom GitHub Repository geklont. Okay.
Compilieren. Schlägt fehl.. Wieso? Achso, ja, SDL2 Header für Pascal noch auf das System schaffen. Okay.
Zweites Compilieren. Okay.

Und dann … Die Starteranwendung für die Game-Engine startet. Nach drei weiteren Klicks wird der Splashscreen ebenfalls angezeigt.

Fantastisch! Unser Spiel wird es also auch als ARM-Variante für die Raspberry-Familie geben. Vielleicht sogar auch für die Konsole ohne X11. Aber das wird sich zeigen …

Der Splashscreen der Game-Engine nach erfolgreichem Kompilieren auf der ARM-Architektur in Raspberry Pi OS

Eine gemeinsame Game-Engine in Game Boy Spielen?

Kaeru no Tame ni Kane wa Naru (Game Boy, Japan-exklusiv) gilt als Vorgänger von The Legend of Zelda: Link’s Awakening (ebenfalls Game Boy).

In meinem Video Let’s Play und Analyse: Kaeru no Tame ni Kane wa Naru bin ich der Frage nachgegangen, ob die beiden Spiele, wie oft behauptet (Wikipedia, Hardcore Gaming 101, RomHacking.net …), dieselbe Game-Engine nutzen.

Diese Behauptung liegt ja auf der Hand. Schon alleine wegen des verblüffend ähnlichen Grafikstils und des Wechsels der Perspektiven. Wie auch Mats (SuperKreuzBurg) in seinem Video über das Spiel aber richtig feststellt: Belege gibt es für diese These kaum.

Ich habe mir hierzu beide Spiele für mein Video einmal angeschaut und bin dabei auf viele Gemeinsamkeiten und einige Unterschiede gestoßen.

Im Folgenden Liste ich zunächst die Gemeinsamkeiten und Unterschiede auf und gehe im Fazit auf deren Relevanz ein:

Gemeinsamkeit 1: Dieselbe Bildschirmaufteilung

Side-By-Side Darstellung von Kaeru no Tame ni Kane wa Naru und The Legend of Zelda: Link's Awakening
Fügt man die Bildschirme beider Spiele zusammen, ist dieselbe Aufteilung erkennbar

Gemeinsamkeit 2: Gleiche Maße von Dialogboxen und ähnliche Gestaltung

Side-By-Side Darstellung der Dialoge von Kaeru no Tame ni Kane wa Naru und The Legend of Zelda: Link's Awakening
In einem direkten Vergleich sehen die Bildschirme mit Dialogen zwar ähnlich aus …
Side-By-Side Darstellung der Dialoge von Kaeru no Tame ni Kane wa Naru und The Legend of Zelda: Link's Awakening (Angepasst, sodass die Gleichheit der Höhe erkennbar ist)
… gleicht man jedoch die unterschiedliche Höhe aus, erkennt man jedoch, dass die Dialoge exakt gleich hoch sind
Die Dialoge ähneln sich auch beim Aufsammeln von Herzen bzw. Herzteilen
Die Auch der Stil der Dialogboxen (hier am Beispiel von Herzen bzw. Herzteilen) ist sehr ähnlich

Gemeinsamkeit 3: Identische Ausmaße der Maps

Überblendung der beiden Maps von Kaeru no Tame ni Kane wa Naru und The Legend of Zelda: Link's Awakening
Isolieren wir das Raster der Map von The Legend of Zelda: Link’s Awakening, legen es dann über die Map von Kaeru no Tame ni Kane wa Naru und blenden dann die Eckpunkte der Map ein, wird eine deutliche Übereinstimmung sichtbar

Gemeinsamkeit 4: Ähnliche Rätsel

Kaeru no Tame ni Kane wa Naru: Vor dem Labyrinth ist ein Schild mit Anweisungen aufgestellt
In Kaeru no Tame ni Kane wa Naru befindet sich direkt vor dem Labyrinth die Anweisung …
Kaeru no Tame ni Kane wa Naru: Befolgt man die Anweisungen auf dem Schild, gelangt man zum Ausgang des Labyrinth-Rätsels
… zum korrekten Durchqueren

Die Darstellung aus The Legend of Zelda: Link’s Awakening zeige ich hier aufgrund von Spoilergefahr nicht (im Video gibt es ebenfalls nichts zu sehen, aber etwas mehr Detailinformationen zum Hören).

Unterschied 1: Steuerungsverhalten nach Szenenwechsel

Visualisierung der unterschiedlichen Verhaltensweisen beim Verlassen von Gebäuden (Taste wird gedrückt gehalten)
Verlässt der Spieler ein Haus und lässt dabei die Taste gedrückt, bleibt der Charakter bei Kaeru no Tame ni Kane wa Naru stehen, währenddessen er bei The Legend of Zelda: Link’s Awakening weitergeht

Unterschied 2: Gegner tauchen (nicht) sofort wieder auf

Die vormals besiegten Gegner tauchen nach einem Bildschirmwechsel in Kaeru no Tame ni Kane wa Naru sofort wieder auf
In Kaeru no Tame ni Kane wa Naru tauchen die (vormals) besiegten Gegner wieder auf, sobald man kurz den Bildschirm verlässt

Für eine Darstellung und Erklärung, wie das Spawning-Verhalten von The Lengend of Zelda: Link’s Awakening gelöst ist, empfehle ich ein Besuch des Blogs Disassembling Link’s Awakening (Part 10 erklärt hier die Lösung der Implementierung, wie das Spiel sich merkt, welche Gegner bereits besiegt wurden).

Unterschied 3: Sichtbarkeit von Sprites während Screen-Transitions

Die Sichtbarkeit von Sprites während Screen-Transitions ist unterschiedlich
Während in The Legend of Zelda. Link’s Awakening die Sprites bei einer Screen-Transition sichtbar bleiben, sind sie bei Kaeru no Tame ni Kane wa Naru nicht dargestellt

Fazit

Die Listen von Gemeinsamkeiten und Unterschieden ließen sich sicherlich noch um einige weitere Punkte ergänzen. Allerdings sind manche Gemeinsamkeiten alleine der Hardware des Game Boys geschuldet und daher keine Indizien für eine gemeinsame Game-Engine oder Code-Basis.

Die identischen Ausmaße von HUD, Dialogen und Map sind eher auf das Rendering-Raster des Game Boys zurückzuführen: Die Grafiken des Game Boys bestehen aus 8×8 Pixel großen Tiles (oder 8×16, 16×16, 32×32). Legen wir dieses Raster über die Darstellungen, wird ersichtlich, dass die Übereinstimmungen bei HUD, Dialogen und Map alleine auf diesem kleinstmöglichen Raster basieren.

Side-By-Side Darstellung der Spiele und Überblendung mit dem Game Boy Rendering-Raster
Wird das 8×8 Pixel große Renderingraster des Game Boys über die einzelnen Ausschnitte gelegt, wird deutlich, dass es sich bei den vermeintlichen Gemeinsamkeiten um Hardware-Restriktionen handelt

Nehmen wir dann noch das unterschiedliche Spawning-Verhalten der Gegner, die verschiedene Handhabung der Sprites bei einem Bildschirmwechsel sowie das Input-Handling dazu, muss ich davon ausgehen, dass diese Code-Basis nicht die gleiche ist.

Insbesondere das Verhalten der Sprites beim Wechsel der Bildschirme zeigt für mich, dass es sich hierbei um zwei differente Methoden handelt.

Zu guter Letzt zeigt ein Blick auf die Hardware und Entwicklungsmethoden für den Game Boy: In der Konsole schlägt als Herz ein angepasster Z80 Prozesser (genauer: ein Sharp LR35902). Dieser 8-Bit-Prozessor wurde zur damaligen Zeit primär mit Assembly programmiert, um möglichst performant genutzt werden zu können: Hier läuft keine klassische Game-Engine im Hintergrund, wie wir sie heutzutage kennen, und verwaltet die einzelnen Teilaufgaben. Alles wird nacheinander in einer (großen) Game-Loop abgearbeitet.

Endgültig würde aber sicherlich nur ein Vergleich des Sourcecodes bzw. des Assembly-Codes der beiden Spiele klären, wie viel Quelltext von Kaeru no Tame ni Kane wa Naru tatsächlich in The Legend of Zelda: Link’s Awakening eingeflossen ist.

„Nichts ist beständiger als die Veränderung“

In den letzten Wochen hatte ich einige Zeit, mir über den weiteren Projektablauf Gedanken zu machen.
Insbesondere die Tutorials zu den einzelnen Entwicklungswerkzeugen, die noch fehlen, in Verbindung mit dem aktuellen Demo-Programm haben mir einiges Kopfzerbrechen bereitet: Wie sollte ich das Programm so verändern, dass es Sinn ergab, diese Werkzeuge gewinnbringend einzusetzen?

Ich kam auf keinen Schluss – außerdem ist da auch noch die nächste Stufe: Das Textadventure … Eigentlich wollte ich ja ein Top-Down Adventure à la The Legend of Zelda: Link’s Awakening (GB) entwerfen.

Daher steht nun der Entschluss fest: Das Textadventure wird ersatzlos gestrichen! Ich fange direkt mit der Game Engine für das Top-Down Adventure an und werde die fehlenden Werkzeuge erläutern, sobald hierfür im laufenden Projekt der Zeitpunkt gekommen ist.

Die neue Website ist online

Hallo zusammen,

nachdem nun viele Monate vergangen sind, seit dem es diese Domain gibt und es auch schon einige YouTube Videos ins www geschafft haben, habe ich mich dazu entschlossen, die Website etwas aufzuhübschen und mit ein wenig mehr Inhalt zu versehen.

In Zukunft werdet Ihr hier gelegentliche Updates, Dokumente und Links zu (meiner Meinung nach) lesens-, hörens- oder sehenswerten Inhalten bezüglich Spiele und/oder Spieleentwicklung finden.

Ich freue mich auf die kommende, spannende Zeit und wünsche Euch alles Gute!

Euer tiberius