Contra kehrt mit stufenlosem Scrolling auf den Amstrad CPC 6128 zurück

Code- & Logik-Anteil

Reiner Vibe-Code (KI hat fast den gesamten Spielcode generiert)

Assets- & Pipeline-Anteil

Build-Tools / Asset-Konvertierungsskripte

Projekt-Notizen & Prompts

Claude

Gryzor (Ocean / Konami, 1987) ist die Amstrad-CPC-Anpassung von Contra. Das Spiel sieht zwar super aus, aber der Hintergrund scrollte nie wirklich flüssig; stattdessen rückte er in Halbbildschirmsprüngen vor und pausierte jedes Mal kurz.

CONTRA 6128 ist eine überarbeitete Version des Originalspiels für den Amstrad CPC 6128, die echtes, flüssiges Hintergrund-Scrolling bietet.

Was sich geändert hat

Flüssiges Scrolling im Dschungel und im letzten Level: Der Hintergrund folgt dem Spieler, anstatt in Halbbildschirmsprüngen zu springen.
Flüssiger Wasserfall-Aufstieg: Der ursprüngliche Sprung um ein Drittel des Bildschirms wurde durch eine animierte Aufwärtsbewegung ersetzt.
Kein Pausieren mehr bei Bildschirmübergängen.
Saubere Darstellung: Jeder Frame wird außerhalb des sichtbaren Bereichs (off-screen) vorbereitet und dann sofort angezeigt.
Neuer Titelbildschirm und Titel: CONTRA.

Was gleich geblieben ist

Grafik, Gegner, Regeln und das Spieltempo sind identisch mit dem Original.
Die Bildschirme mit fester Ansicht (Basis-Korridore) entsprechen genau dem Spiel von 1987.
Die originale Musik der 128KB-Version ist enthalten: Drücke im Titelbildschirm ESC, um zwischen Soundeffekten und Musik zu wechseln.

5 „Gefällt mir“

Wahnsinn, Gryzor ist wirklich ein absoluter Meilenstein in der CPC-Welt. Dass eine KI das allein durch Prompting anpasst, ist eine gewaltige Demonstration ihres Fortschritts.

Keine Pause mehr bei Bildschirmübergängen.

Es gab natürlich große Sprünge, aber meiner Meinung nach gab es nie eine echte „Pause“: Das Gameplay blieb für mich trotzdem „flüssig“ (im Sinne von: kein Warten). Klar bedeutete der große Sprung bei jedem Bildschirmwechsel, dass man irgendwie im Voraus wissen musste, wo man landet, aber die Bildbereiche überschnitten sich ja und das war genau die Art von Einschränkung, die man damals einfach akzeptiert hat – besonders wenn man bedenkt, dass das Spiel ansonsten im Grunde makellos war.

Eindrucksvolle Leistung von Claude Fable. Danke an M. Louvet fürs Ausprobieren und das Teilen mit der ganzen Welt!

2 „Gefällt mir“

Heilige Makrele, das ist beeindruckend!

Was ist eigentlich aus dieser alten Tech-Demo von Gryzor geworden, die vor etlichen Monden aufgetaucht ist?

Du meinst Gryzor Reloaded?

Hm, ich glaube schon?

Was ist neu in Version 1.1

Dieses Update behebt Gameplay-Probleme aus Version 1.0 und fügt eine Sprung-Taste hinzu.

Gameplay-Korrekturen

  • Gegner erscheinen pünktlich. In Version 1.0 erschienen einige Gegner durch das neue, flüssige Scrolling zu spät – besonders die in die Landschaft eingebauten Geschütztürme und die Bonus-Kapseln, die man zerstören muss. Jeder Gegner erscheint jetzt genau in dem Moment, in dem sein Landschaftsteil sichtbar wird, und zwar an derselben Stelle wie im Originalspiel.
  • Die fliegende Waffen-Kapsel ist zurück. Die Kapsel mit der Spread Gun, die zu Beginn der ersten Phase von hinten herangeflogen kommt, wurde zuvor durch das Scrolling entfernt, bevor sie den Bildschirm erreichen konnte. Sie überquert den Bildschirm jetzt wieder so wie 1987.
  • Der Basis-Eingang öffnet sich wieder. Am Ende der ersten Phase wird die zerstörte Tür nun ordnungsgemäß durch das Loch ersetzt, anstatt dass die geschlossene Tür wieder auftaucht.
  • Keine verschwundenen Gegner mehr. Das Spiel hat gleichzeitig nur Platz für sieben Gegner. In der letzten Phase konnte Version 1.0 einen davon verlieren, wenn dieser Platz voll war; ein Gegner wartet jetzt auf einen freien Platz, anstatt einfach verworfen zu werden.

Neuheiten

  • Springen mit dem zweiten Knopf. Der zweite Feuerknopf des Joysticks lässt den Spieler jetzt springen, selbst während geschossen wird. Das Drücken nach oben führt weiterhin zum Sprung wie bisher, und oben + Feuer zielt weiterhin nach oben.
  • Versionsnummer wird jetzt unten links auf dem Titelbildschirm angezeigt.
1 „Gefällt mir“

das was bitte? :smiley:

Jaaaa… dieses Scrollen ist DEFINITIV NICHT flüssig, ganz im Gegenteil sogar. Das Scrollen ist schrecklich.

Und wenn der Bildschirm voll mit Sprites und Kugeln ist (besonders wenn du deine Fächerwaffe abgefeuert hast), bricht die Framerate absolut ein. Ganz im Gegensatz zur Originalversion, bei der die FPS fest eingestellt waren.

Aber netter Versuch.

2 „Gefällt mir“

In der nächsten Version hat er bestimmt den Dreh raus, hehe :laughing:

Ich finde stattdessen, dass das Scrollen gut ist, das Spiel lässt sich so besser spielen.

Gut gemacht!

Der viel interessantere Teil daran ist, wie schnell sie in der Lage waren, einen Großteil der Spiellogik sowie der Assets zu extrahieren und zu abstrahieren. Es auf einem CPC zum Scrollen zu bringen, war vermutlich schon immer eine Nummer zu groß (es hat schließlich seinen Grund, warum das Original das nicht tut), aber so schnell an diesen Punkt zu gelangen bedeutet, dass es ohne riesigen Reimplementierungsaufwand eher möglich sein könnte, die Plus-Hardware anzusteuern, die dazu mehr als in der Lage ist.

1 „Gefällt mir“

Der Sprite des Helden scheint zu ruckeln, wenn gescrollt wird. Davon kriege ich ja Kopfschmerzen.
Vielleicht wäre ein Push-Scrolling besser, wie bei Ghosts ’n Goblins? Ich bin mir nicht sicher.

Beim CPC ist es die Frame-Rate, die dem Ganzen Grenzen setzt (bei Software ist die schnellste Methode, die ich untersucht habe, die von Ocean, wie sie in Batman verwendet wird: 2 Pixel horizontal, 2 Zeilen vertikal), und das Zeichnen der Tiles dauert etwa 2 Frames. Sprites und Gameplay erhöhen dann die CPU-Zeit für ein Update zusätzlich. Der Scroll von Shinobi ist ähnlich, aber nicht so schnell; Extreme ist gut, aber ebenfalls nicht so schnell, und andere Spiele sind entweder meist langsamer und/oder verkleinern den Bildschirmausschnitt, um zu versuchen, eine gewisse FPS-Zahl zu halten.

Software-Scrolls scheinen alle Byte für Byte vorzugehen, und einige – wie Golden Axe – nutzen sogar zeichenbasiertes Scrolling.

Die Lösung von Ocean deckt oft auch mehr Bildschirmfläche ab. Die Größe des Statusfelds ist ebenfalls so gewählt, dass die Zeit zum Zeichnen der Tiles begrenzt wird und alles in 2 Frames passt :wink:

Ich werde hier nicht erklären, wie Ocean das macht, weil die KI nicht weiß, wie es geht, und ich es nicht verraten will. Es ist cleverer menschlicher Code (aber durch ihre Methode können sie kein Statusfeld in einem anderen Modus als den Hauptspielbereich haben…). Damit meine ich Oceans eigenes Team, nicht eines, das sie als Drittanbieter beauftragt haben.

Bei Software-Scrolls kann man Sprites über die Tiles zeichnen und muss sich keine Gedanken darüber machen, den Hintergrund dahinter wiederherzustellen, wie man es bei Hardware-Scrolls tun muss.

Es sieht so aus, als würde diese Version von Gryzor Hardware-Scrolling nutzen, aber bei diesem Tempo ist es viel zu schnell für die Sprite-Bewegung, die Pixel für Pixel erfolgt. Daher wird es immer ruckeln. Wenn man dieses Ruckeln vermeiden will, macht man es wie Ghosts 'n Goblins: Wenn man sich dem Rand nähert, scrollt man einen großen Abschnitt auf einmal, um zu minimieren, wie oft der Bildschirm springt.

Die klassische KI-Antwort lautet: Beweg dich Pixel für Pixel wie hier und lass es ruckeln, das sei akzeptabel und kaum wahrnehmbar – genau wie wir es hier sehen… Auf dem MSX1 und bei kontinuierlichem Scrollen wie in Salamander ist das zwar völlig in Ordnung, weil die Sprites gut damit harmonieren, aber nicht auf diese Weise.

Bei Software-Scrolling könnte es ebenfalls ein wenig springen, da es horizontal oft Byte für Byte geht. Man könnte einen Software-Scroll Pixel für Pixel bauen, aber nur sehr wenige Spiele machen das, und ich bin mir sicher, dass es nicht schnell wäre. (Eigentlich habe ich das noch nicht ausprobiert – das kommt auf meine Liste der Dinge, die ich testen möchte).

Beim horizontalen Hardware-Scrolling liefert das CRTC-Register R3 dieselbe Rate wie Software (aber dann hat man Flackern an den Seiten), und das ist immer noch nicht flüssig genug, wenn sich Sprites Pixel für Pixel bewegen. Man kann Hardware-Scrolling zwar Pixel für Pixel und mit Double Buffering (um Flackern zu vermeiden) umsetzen, aber dafür muss man die Bildschirmgröße reduzieren, damit alle Bildschirme in den Hauptspeicher passen – es sei denn, man entwickelt exklusiv für den Plus.

Bei Gryzor haben sie sich damals also für die beste Option entschieden, um eine passable FPS-Zahl, pixelgenaue Bewegung und ein spielenswertes Spiel zu erreichen.

(Ja, ich habe viele verschiedene Scrolling-Methoden ausprobiert, sowohl per Software als auch per Hardware. Wenn die Bewegung der Figur der Hardware-Scrolling-Rate entspricht [inklusive R3], gibt es keine Sprünge und der Scroll verläuft kontinuierlich und nicht wie bei Ghosts 'n Goblins. Sobald man die Figur jedoch langsamer als die Hardware-Scrolling-Rate macht, muss man Kompromisse eingehen, genau wie G&G es tut).

8 „Gefällt mir“

Das hat mich zum Nachdenken gebracht: Wenn Interesse besteht, könnten wir eine geschlossene Kategorie einrichten, auf die Bots keinen Zugriff haben, um genau solche Diskussionen dort zu führen.

Wahnsinn, was @Arnoldemu alles weiß, ich bin wirklich beeindruckt! Was man nicht alles lernt :distorted_face::distorted_face::distorted_face::distorted_face: