Spieleprogrammierung mit ChatGPT ist nichts neues, aber das neue Modell o3mini soll dahingehend noch einige Verbesserungen erfahren haben. Das wollte ich unbedingt mal ausprobieren und habe zwei sehr bekannte Spiele „nachprogrammiert“.
Voraussetzung HTML und Javascript
Damit die Spiele möglichst Plattform unabhängig sind, habe ich mich entschieden HTML und Javascript-Code zu verwenden. Damit laufen alle Spiele im Browser und lassen sich auch (unter gewissen Voraussetzungen) auf dem iPad spielen. Außerdem wurde durch die Verwendung von HTML-Dateien das Testen wesentlich erleichtert. Denn es musste nicht jedesmal der Code neu kompiliert werden. Ein einfaches Reload der Seite im Browser reicht.
Ein Klassiker: Asteroids
Zunächst ging es mir um das Spiel Asteroids. Das Spiel hat eine lange Geschichte und war eines der ersten kommerziellen Arcade-Spiele, die mit einer echten Vektorgrafik arbeiteten. Dabei wird der Elektronenstrahl der Bildröhre nicht zeilenweise abgelenkt, wie es bei einem normalen TV-Bild der Fall war. Sondern die Objekte auf dem Screen werden direkt mit dem Elektronenstrahl „gezeichnet“. Das verlieh die Spiel eine besondere Ästhetik.
Der richtige Prompt
Um überhaupt einen Anfang zu haben, ist der richtige Prompt wichtig. Dieser sollte zunächst das Spiel erstellen. Darauf aufbauend habe ich dann weitere Verbesserungen vorgenommen. Der erste Prompt an das Modell o3mini lautete:
programmiere ein einfaches Spiel in HTML und Javascript, dass dem bekannten „Asteroids“ ähnlich ist.
Das daraus resultierende Spiel war wirklich schon spielbar, aber auch sehr rudimentär. Asteroiden waren Kugeln. Das Raumschiff sah zwar aus wie im Original, es gab aber keine Kollisionserkennung mit den Asteroiden. Auch ein Score und und eine begrenzte Anzahl von Leben war nicht vorhanden. Das alles habe ich mich nachfolgenden Prompts eingebaut.
Der Asteroids-Bot
Zum Schluss wollte ich noch eine Automatik haben, die das Spiel ohne mein Zutun spielt. Der Bot berücksichtig ein paar Faktoren. Seine Priorität liegt auf der Vermeidung von Kollisionen mit den Asteroiden. Außerdem sollte das Raumschiff die Bewegung der Ziele vorhersehen und entsprechend vorhalten. So wird die Wahrscheinlichkeit für einen Treffer erhöht. Das Ergebnis ist ein Spiel, dass dem Original in fast nichts nachsteht. Auch wenn der Bot nicht perfekt ist, denn Asteroids ist ein durchaus sehr chaotisches System. Es ging ja auch nur um das Prinzip.
Was noch fehlt
Asteroids fehlt noch einiges. Zum Beispiel die im Original auftretenden Raumschiffe. Diese könnte ich noch nachrüsten. Vielleicht in einer späteren Version. Vielleicht kann man auch noch andere Ideen umsetzen und das Ganze vielleicht bunter gestalten. Hier gibt es noch viele Möglichkeiten.
Ausprobieren
Das Spiel, also die HTML-Datei, habe ich hier als ZIP-File zum Download bereitgestellt. Über diesen Link (öffnet sich in einem neuen Tab), könnt ihr es direkt im Browser starten. Viel Spaß bei der Asteroiden-Jagd.
Das Game von Woz: Breakout
Breakout hat eine gewisse Verbindung zu Apple, denn in ihrer Zeit bei Atari waren Steve Jobs und Steve Wozniak an der Entwicklung beteiligt. Da lag es also nahe, einen abgewandelte Version dieses Spiels mit ChatGPT o3mini zu erstellen. Auch hier war der erste Prompt recht einfach gehalten.
Erstelle eine HTML-Datei mit Javascript, die ein Spiel im Stil von Klassiker Breakout enthält.
Auch hier kamen schnell Erweiterungen hinzu, die vielleicht allesamt nicht neu sind aber das Spiel aufwerten. Multiball, Explosionsblöcke und Blöcke, die mehrfach getroffen werden müssen. Alles ist dabei.
Der Breakout-Bot
Auch bei Breakout sollte ein Bot dabei sein, der das Spiel autonom übernimmt. Dieser soll auch rudimentär mit der Multiball-Situation zurechtkommen. Auch das ist einigermaßen gelungen. Das Spiel könnt ihr euch hier als ZIP-Datei laden oder über diesen Link (öffnet sich in einem neuen Tab) direkt im Browser spielen.
Fazit
Natürlich sind Asteroids und Breakout wirklich einfache Spiele. Sie zeigen aber zwei Dinge. Erstens, dass man mit heutigen KI-Systemen durchaus schnell und gut zu Ergebnissen kommt und zweitens, dass die aktuellen Browser in der Lage sind, nette Animationen zu zeigen und durchaus komplexe Spiellogiken zu verarbeiten. Die besagten Bots sind nur einfache Logiken. Hier könnte man wesentlich bessere Algorithmen erfinden und die Programme vielleicht sogar lernfähig machen.