Zu Inhalt springen

Erstellen eines Javascript-Spiels mit ChatGPT

Einmal im Jahr starten wir bei getDigital unser berühmt-berüchtigtes getDigital Osterrätsel: Wir stellen darin über 50 nerdige Fragen, deren Schwierigkeitsgrad immer weiter ansteigt: Für die letzte Frage muss man mit dem Einsatz mehrerer Tage rechnen, um sie lösen zu können. Allerdings kann man auch schon mit den einfacheren Fragen viel Spaß haben und am Ende werden unter allen Teilnehmern tolle Preise verlost.

Für das Rätsel basteln wir schon lange im Voraus und mit sehr viel Aufwand die Fragen: Das Erstellen einer Frage kostet meist mehr Aufwand als diese zu lösen, wir sitzen da also jedes Jahr über 100 Stunden dran. Für eine Frage wollten wir dieses Jahr unbedingt ChatGPT nutzen. Die Idee war, ein einfaches Javascript-Jump-and-Run zu erstellen, bei dem man aber zusätzlich zu Geschicklichkeit auch Nerdwissen brauchte. Wir haben dafür erstmal eine ganz allgemeine Anfrage an ChatGPT (Version 4) gestellt:

Das Ergebnis überzeugt noch nicht so gut: Das hier kam dabei raus (durch Klicken mit der Maus springt der Block in die Luft, aber man kann sonst nicht viel machen).  Ich war also etwas verwirrt:

Jetzt wurde es wirklich faszinierend: Daraufhin hat mit ChatGPT den Code generiert, um den blauen Block mit den Pfeiltasten zu bewegen und springen zu lassen! So sah das Spiel danach aus.

Weiter gehts:

Daraus wurde diese Version.

In den nächsten Schritten habe ich noch einen Countdown-Timer und Plattformen, auf die der Spieler springen kann, hinzufügen lassen. So sah es danach aus.

Wie man sieht, funktioniert das nicht richtig: Der Spieler-Block schwebt über den Plattformen und berührt diese nicht. Ich habe also ChatGPT gebeten, den Bug zu beheben und jetzt wurde es interessant. ChatGPT hat ziemlich wahllos versucht, irgendetwas an der Funktion checkPlatformCollision() zu ändern, um den Bug zu beheben, hat es dadurch aber nur schlimmer gemacht:

Jede weitere Änderung, die ChatGPT hinzugefügt, machte es nur schlimmer. Am Ende habe ich es gebeten, den Code vor den Bugfixes zurückzuspielen und habe mich selbst auf die Suche nach dem Fehler gemacht: Es gab einfach einen Logikfehler in dem Code der Funktion checkPlatformCollision(), der feststellt, ob der Spieler den oberen Rand der Plattform erreicht hat. Um diesen Fehler zu finden, musste ich mir aber die Logik genau anschauen und überlegen, welche Prüfungen korrekt wären: Dazu war ChatGPT offenbar nicht in der Lage. Stattdessen hat es relativ hilflos irgendwelche Dinge verändert, die mehr wie wildes Ausprobieren wirkten als echtes Nachdenken.

Im weiteren Prozess ging es dann auch so weiter: Es funktionierte faszinierend gut, weitere Funktionalitäten in das Spiel zu integrieren, aber immer dann, wenn es Bugs gab, die eine detaillierte Beschäftigung mit der Logik erforderten, versagte ChatGPT. Ein weiteres Beispiel war ein Bug in der Kollissionsdetektierung mit den Feindblöcken: ChatGPTs Code prüfte dort nur auf die Kollision der obersten Kante des Blocks, die untere Kante konnte der Spieler dagegen gefahrlos berühren. Erneut habe ich das nur durch genaues Prüfen der Kollisionslogik herausbekommen, ChatGPT hat es bei jedem Lösungsversuch nur schlimmer gemacht. Selbst wenn ich genau geschrieben habe, an welcher Stelle der Bug liegt.

Ich denke, dass die von mir beobachteten Einschränkungen wesentlich sind: ChatGPT ist nicht in der Lage, wirklich zu verstehen, was es produziert. Es gibt "einfach" nur das aus, was gut zu dem passt, was in der Anfrage und den bisher produzierten Antworten steht. Das funktioniert erstaunlich gut, aber man sollte nicht den Fehler machen, zu denken, dass ChatGPT ein echtes Verständnis dafür entwickelt, was es schreibt.

Das finale Spiel mit allen Bugfixes von mir nutzen wir im Osterrätsel 2023. Es sieht so aus.

 

Vorheriger Artikel Das Osterrätsel 2023
Nächster Artikel Unsere Lager- und Büroräume wurden gekündigt, wir mussten umziehen.