Pac-Man in 140 Bytes

Geschrieben von Thiemo

Ich kann ein weiteres kleines Spiel in die Liste meiner Kreationen aufnehmen: Pac-Man im Webbrowser. Es gibt Gegner, die man anders als im Original aber nicht auffressen kann, und sechs Levels, von denen der letzte absichtlich so schwierig ist, dass ich ihn selbst nur mit viel Geduld schaffe. Eine Zeitanzeige oder gar Bestenliste gibt es nicht. Das Spiel soll für sich selbst stehen. Spielt es, habt Spaß, und das soll auch reichen.

Entstanden ist das Spiel im Rahmen von 140byt.es, einer Art Wettbewerb, bei dem es darum geht, nützliche JavaScript-Funktionen auf Tweet-Größe, also auf maximal 140 Bytes zu schrumpfen. Das Ganze erinnert sehr an meinen 256b.htm-Wettbewerb von 2002, hat aber nicht direkt etwas damit zu tun, auch wenn p01 bei beidem zu den Führenden gehört.

Zwei Dinge haben mich an meinem kleinen Pac-Man-Projekt fasziniert:

  • Das Spiel besteht fast ausschließlich aus Elementen, die 140 Bytes oder kleiner sind. Das betrifft die GIF-Grafiken, vor allem aber den JavaScript-Quelltext. Es klingt vielleicht seltsam, aber aus Sicht des Programmierers steht hier tatsächlich die Schönheit des Quelltextes im Vordergrund.
  • Aus Sicht des Spieleentwicklers war die Entwicklung der Gegner-KI (selbstverständlich auch in 140 Bytes) am interessantesten. Ich hatte mit zufälligen Bewegungen experimentiert und war damit sehr unzufrieden. War die Bewegung komplett zufallsgesteuert, zappelten die Gegner nur wild auf der Stelle herum. Konstante Vorwärtsbewegung mit zufälligem Abbiegen an Kreuzungen war auch nicht viel besser. Die Gegner sprangen viel zu häufig zwischen zwei Kreuzungen hin und her und bewegten sich zu selten von dort weg. Es war einerseits zu leicht, ihnen aus den Weg zu gehen, andererseits entstand schnell Frust, wenn sich ein Gegner unerwartet plötzlich doch umentscheidet und die Spielfigur tötet. Die Lösung: Gar kein Zufall. Jede Bewegung ist streng deterministisch: Die Gegner bewegen sich stur geradeaus, bis es nicht mehr geht, und dann biegen sie links ab. Das ist alles, und das macht erstaunlicherweise am meisten Spaß, sowohl beim Spielen als auch beim Konstruieren der Levels. Denn man kann dank dessen Levels konstruieren, in denen jede Gegnerbewegung genau festgelegt ist. Man kann Ruhezonen konstruieren, in die sich garantiert nie ein Gegner verläuft. Man kann mehrere Gegner auf verschiedenen Pfaden durcheinander laufen lassen, so dass alles völlig chaotisch wirkt, obwohl es das in Wirklichkeit nicht ist. Der Spieler kann Tastenkombinationen einüben und wird dafür belohnt, da sich der Level auch beim nächsten Versuch mit den selben Handgriffen lösen lässt.

Bei der Weiterentwicklung von Glow 1.5 zu Glow 1.666 habe ich dieses erstaunlich wirkungsvolle Prinzip ein wenig missachtet: Die Gegner laufen verschieden schnell und drehen auch mal um. Allerdings ist Glow auch wesentlich komplexer als Pac-Man und kann etwas mehr Komplexität gut vertragen. Zumindest, wenn sie nicht zu Frust führt. Deshalb ist das zufällige Umdrehen inzwischen auch wesentlich entschärft: Es passiert nur noch sehr selten und wird dem Spieler klar angekündigt. Der Gegner wird sichtbar langsamer, bleibt stehen, dreht um, wartet noch kurz und läuft erst eine Sekunde später wieder los. Und so sind die Gegner am Ende doch wieder genauso deterministisch und vorhersehbar wie die Geister in Pac-Man. Hauptsache, es macht Spaß.

Hinterlasse eine Antwort