Roland on the Ropes (KI-unterstützte Turbo-Edition)

Hallo zusammen.

Nachdem ich ein bisschen mit Sultan’s Maze herumgespielt habe, dachte ich, ich versuche mich mal an Roland on the Ropes.

Ich habe Claude gefragt, ob es das Scrolling von den großen horizontalen Sprüngen in etwas Angenehmeres ändern könnte.
Und das hat es geklappt. Das horizontale Scrolling bewegt sich jetzt in Mode-1-Zeichenblöcken statt in Mode-0-Zeichenblöcken, was viel schöner aussieht.

Das führte allerdings zu einem unschönen Flimmern bei Roland selbst, was einiges an Hin und Her erforderte, um es zu beheben.

Als Nächstes wollte ich eine Beschleunigung ausprobieren.
Das ging durch einige Iterationen und Ideen, aber wie ihr sehen werdet, ist es jetzt verdammt viel schneller.

Schließlich das Flimmern an den vier Bildschirmrändern beim Scrollen.
Das passiert durch die Nutzung von Hardware-Scrolling, und ich wollte sehen, ob Claude etwas tun könnte, um es zu minimieren.
Es ist zwar nicht völlig verschwunden (selbst nach mehreren Verbesserungen), aber es ist viel besser geworden.

Unterwegs gab es einige Fehler, aber mit genug Testen und Iterieren hat es ein ziemlich gutes Ergebnis geliefert!
Bitte beachtet, dass ich noch nicht alle Gameplay-Aspekte getestet habe, aber es scheint gut zu funktionieren.

[EDIT] Hmmm, das ist merkwürdig. Im RVM-Player im Browser läuft es super langsam!

[EDIT2] Es scheint irgendetwas mit der ausgewählten Steuerungsmethode zu tun zu haben. Ich entferne die DSK-Datei vorerst.

10 „Gefällt mir“

(ok, ich bin verwirrt; wie bist du beim Posten hier am KI-Formular vorbeigekommen? :grin:)

Ich habe versucht herauszufinden, wie ich den ganzen geschriebenen Text zu dem Beitrag hinzufügen kann, und konnte ihn schließlich in „Projektnotizen & Prompts“ einfügen.

Es kam mir seltsam vor, dass ich nichts über das Spiel im Thema posten konnte.

Ist es Absicht, dass Beiträge über Vibe-Code-Kram Einschränkungen unterliegen, was gepostet werden darf?

Außerdem würde mich interessieren, warum der Thread zu „Sultan’s Maze“ geschlossen wurde. (Ich möchte wissen, ob ich etwas falsch gemacht habe und worauf ich in Zukunft achten sollte). :slightly_smiling_face:

Ich frage mich, ob es meine Infos genutzt hat, um das Flimmern an den Seiten zu verhindern…

Ich habe ChatGPT neulich gefragt, wie man etwas mit Scrolling macht (war neugierig, ob es aus bestehenden Infos was Neues entwickeln könnte, aber nein), habe es gefragt, woher es seine Infos hatte, und es hat mich aus dem alten cpcwiki-Forum zitiert. Nun ja, ich habe es dort ja veröffentlicht, damit die Leute es nutzen können…

Ok, nicht das Flimmern von R3, an das ich gedacht hatte.

Es ist das übliche Hardware-Scrolling, ohne R3 zu nutzen, und es ist kein Double Buffering, was interessant ist. Ok, sieht so aus, als hätte es das Zeichnen der Tiles in LDIs ausgerollt.

Bezüglich der Verwendung von LDI war einer meiner ersten Prompts dieser:

ich würde mir gerne das Patchen des In-Game-Codes ansehen, um das Scrolling zu verbessern. Und wenn das möglich ist, soll eine neue .bin erstellt werden, die wieder auf die dsk passt. Im Moment ist das Scrolling sehr ruckelig und bewegt sich scheinbar immer um 1 Mode-0-Zeichen. Ich möchte, dass es sich in Sprüngen von der Größe eines Mode-1-Zeichens bewegt

und Claude antwortete mit:

Es ist machbar, und die gepatchten Dateien ROLANDC.BIN und ROLANDD.BIN können direkt unter demselben Namen auf die dsk gespielt werden. Ich habe sie nur in meiner eigenen Testumgebung laufen lassen (ein Z80-Core mit gemockten Firmware-Aufrufen), nicht auf einem CPC oder einem echten Emulator, sie müssen also in deiner Umgebung getestet werden.

Wie das Spiel scrollt

  • Das Spiel läuft in Mode 0, aufgebaut aus 4×8-Byte-Tiles (ein Mode-0-Zeichen), mit einem 20×23-Tile-Fenster plus einer 2-zeiligen Statusleiste.
  • Das Scrolling ist ein Firmware-Hardware-Scroll (SCR SET OFFSET): ±4 Bytes horizontal, ±80 vertikal, danach wird eine neue Spalte oder Zeile von Tiles gezeichnet.
  • Vertikale Schritte betragen 8 Scanlines, was bereits der Höhe eines Mode-1-Zeichens entspricht, daher habe ich die vertikale Richtung nicht verändert.
  • Das gesamte Zeichnen läuft über einen einzigen Tile-Blitter bei &2AF8, was den Patch so klein gehalten hat.

Was der Patch macht

  • Jeder horizontale Schritt besteht nun aus zwei 2-Byte-Schritten. Die Spiellogik bleibt unberührt und bewegt sich weiterhin um ein Tile pro Schleife.
  • Erster Halbschritt (Hook bei &A1DA, direkt nach dem Neuaufbau des Tile-Puffers): Verschiebt den Offset um 2, zeichnet die Hälfte der eingehenden Spalte und zeichnet den Spieler sowie die Statusleiste neu.
  • Zweiter Halbschritt (Hook bei &34EF, dem ursprünglichen Scroll-Punkt): Verschiebt um die anderen 2 Bytes, zeichnet die vollständige Spalte und stellt die Tiles unter dem Spieler wieder her.
  • Schnellerer Blitter: Ich habe außerdem &2AF8 durch eine unrollte LDI-Version ersetzt, um das zusätzliche Zeichnen zu kompensieren. Das betrifft das gesamte Spiel, nicht nur das Scrolling.
  • Wo er liegt: 397 Bytes bei &A900 im Zero-Padding am Ende von ROLANDC und 118 Bytes bei &2A79 im Padding unter dem alten Blitter. Dateilängen und Header bleiben unverändert.
2 „Gefällt mir“

Und später, als Claude versuchte, das durch den Hardware-Scroll verursachte Flimmern zu reduzieren, meinte er dazu:

Was geändert wurde

  • Panel-Verschiebung über den Umbruch: Die Laufenlängen werden einmal pro Bewegung berechnet (bis zu drei gerade Läufe pro Scanlinie, aufgeteilt dort, wo Quelle oder Ziel auf das Ende ihrer 2K treffen), dann wird jede Zeile mit LDIR/LDDR kopiert. Wenn kein Umbruch im Weg ist, wird weiterhin die entrollte Kopie verwendet.
  • Fallback für den ersten Halbschritt entfernt: Die Panel-Neuzeichnung des Halbzustands ist gestrichen, da die Verschiebung beim Umbruch nicht mehr fehlschlägt.
  • Seilschritte: Die Verschiebung funktioniert jetzt in der Zone auch bei vertikalen Schritten.
2 „Gefällt mir“

Es ist beeindruckend, was es kann – und das so schnell.

Ich nutze es bei der Arbeit, und neulich habe ich mir den generierten Code angesehen: Es hatte eine schnelle Lookup-Methode verwendet, die ich vorher noch nicht kannte. Also habe ich mich darüber schlau gemacht und etwas Neues gelernt.

Das Gute an der Methode in dieser Version ist, dass das horizontale Scrollen flüssiger sein kann als das vertikale, weil im gesamten Spiel kein diagonales Scrollen vorkommt.

2 „Gefällt mir“

Einfach genial! Wegen des Scrollens hat mir das Spiel nie wirklich gefallen. Das hier ist für mich jetzt „gut genug“, um meinen Spaß damit zu haben. Besseres Scrollen brauche ich gar nicht.

Absolut fantastisch und eine tolle Möglichkeit, KI einzusetzen.

1 „Gefällt mir“

Tja, ich war beim Thema KI-Nutzung irgendwie noch etwas hin- und hergerissen, aber ich muss zugeben, dass es hier in Roland On The Ropes viele der „Probleme“ gelöst hat.

Nachdem ich es jetzt mal angespielt habe, muss ich allerdings sagen, dass die wirklich extrem schnelle „Gameplay“-Geschwindigkeit – auch wenn sie beeindruckend ist – das allgemeine Spielgefühl irgendwie ruiniert. Wenn man das Spiel jahrelang und immer noch halbwegs regelmäßig gespielt hat, wird es dadurch viel zu schwer, das Timing für Sprünge über die Ratten hinzubekommen, um nur ein offensichtliches Beispiel zu nennen. In späteren Levels mit mehreren Gegnern wie Fledermäusen usw. wird das einfach nur ein frustrierender Albtraum.

Gibt es irgendeine Möglichkeit, die Verbesserungen beizubehalten, aber einfach das Tempo etwas zu drosseln?

1 „Gefällt mir“

Ich stimme dir vollkommen zu und habe auch darüber nachgedacht, dass das Spiel deutlich verändert werden würde, wenn man es zu schnell macht.

Es lässt sich auf jeden Fall verlangsamen. Bleib dran! :smiling_face_with_sunglasses:

4 „Gefällt mir“

Ok, hier ist eine verlangsamte Version.

Ich bin mir nicht sicher, ob es immer noch ein bisschen zu schnell ist, aber es ist auf jeden Fall besser machbar. :slightly_smiling_face:

roland_on_the_ropes_classic_speed.dsk (190,3 KB)

5 „Gefällt mir“

Mit dieser Geschwindigkeit ist es perfekt, habe Roland OTR noch nie so gut spielbar gesehen. Vielleicht das erste Spiel, das ich je auf dem CPC gespielt habe.

Macht es nicht Spaß, mit KI zu spielen, um CPC-Spiele zu verbessern? :wink:

1 „Gefällt mir“

Es macht tatsächlich eine Menge Spaß.

Jetzt frage ich mich, welches Spiel wohl als Nächstes dran sein könnte…

Galivan oder Kick Off 2 oder Space Harrier 2 mit einem größeren Spielfeld? :grin:

Ja, Galivan war schrecklich.

Galivan hat ein sehr kleines Zeitfenster fürs Gameplay, also würde es das Spiel zu schwer machen, wenn man es schneller macht.

Dieses Spiel braucht wirklich ein größeres Fenster.

1 „Gefällt mir“

Das ist eine schöne Verbesserung und ein guter Einsatz von KI, um gezielte kleine Änderungen zur Optimierung bestehender Codebasen vorzunehmen, ohne die ganze Zeit für manuelle Analysen und Patches aufwenden zu müssen. Ich denke, das unterscheidet sich angemessen von der Nutzung generativer KI, um Spiele ohne großen Entwickler- oder Grafikaufwand komplett neu zu erschaffen.

Was noch schön wäre, wäre ein transparentes Blitting des Geist-Sprites, wenn er durch Wände geht, anstelle der großen, blockartigen Bewegung.

2 „Gefällt mir“

Hi,

ich weiß gar nicht, was ich sagen soll. Du hast das gesamte Spielerlebnis komplett verändert. Ich hatte das damals in meinem Willkommenspaket, als ich den CPC bekommen habe. Ich mochte es eigentlich ganz gerne, aber das Ruckeln beim Scrollen war etwas gewöhnungsbedürftig – aber jetzt? Es ist so gut und flüssig – klasse gemacht!

Glaubst du, dass das Zeichnen der Sprites mithilfe von KI verbessert werden könnte? Man sieht, dass es keine Transparenz gibt, da alle Sprites einen schwarzen Hintergrund haben. Wäre super, wenn man das noch verbessern könnte.

Trotzdem eine fantastische Arbeit!

1 „Gefällt mir“

Entschuldige @ervin, ich hatte deine erste Antwort übersehen.

Welcher Thread wurde geschlossen?

Und außerdem, nein, es gibt kein Limit für das, was du in dieser Kategorie posten kannst. Die einzige Voraussetzung ist das Formular (wobei ich mir immer noch nicht sicher bin, wie du daran vorbeigekommen bist :grin:)

Kein Problem @Gryzor

Es ging um den „Sultan’s Maze“-Thread.

Ich hatte ihn ursprünglich im falschen Unterforum erstellt, und nachdem du meintest, dass ich ihn in einem passenden KI-Unterforum erstellen sollte, habe ich ihn nach „Vibe-coded games“ verschoben.

Der Thread wurde dann geschlossen, und erst später habe ich gemerkt, dass du vielleicht meintest, ich solle ihn im passenden Forum neu erstellen. :slightly_smiling_face:

Mein Fehler war also, ihn einfach nach „Vibe-coded“ zu verschieben, anstatt ihn dort neu zu erstellen.