DIY Projekt: Pong Visualisierung

Aus irgendeinem Grund bin ich auf die Idee gekommen Pong zu visualisieren…

Ich besitze eine kleine Sammlung alter Spielekonsolen von vor 1980. Viele davon basieren auf dem AY-3-8500 Chip. Das bekannteste Spiel, das dieser Chip ermöglicht, ist Pong.

Recherche

Nun könnte man natürlich zig Spiele machen, aufzeichnen, digitalisieren und dann visualisieren, aber das würde lange dauern, zumal man auch zwei Personen brauchen würde, das die alten Systeme kein Spiel gegen den Computer erlauben. Daher brauchte es eine automatisierbare Simulation. Folgende interessanten Projekte und Seiten sind mir bei der Recherche begegnet:

Implementierung

Das Bild wurde auf Basis von typescript-pong generiert. Dieses Projekt ist ein Fork (bzw. TypeScript Port) von javascript-pong ist. Die Dokumentation für das Projekt ist sehr ausführlich, aber die TypeScript Variante ist einfacher anzupassen. Grundsätzlich waren nur infrastrukturelle Änderungen, z.B. ein nicht-interaktiven Modus, notwendig.

Dazu war ein einfacher Test auf Basis Playwright notwendig. Dadurch ließt sich das Aufzeichnen der Spiele im Browser und der jeweils Download des Mitschnitts automatisieren.

Nachbearbeitung

Zur Erzeugung des Bildes auf Basis der Aufzeichnungen sind einige Nachverarbeitungsschritte notwendig:

  • Videoeinzelbilder zusammen addieren, inspiriert von python-image-averaging
  • statische und dynamisch Bildanteile trennen
  • Gammakorrektur der dynamischen Bereiche, um Unterschiede hervorzuheben, weichzeichnen, dann einfärben
  • Bereiche wieder zusammenführen

Dabei kommen für die Bildoperationen OpenCV und NumPy zum Einsatz, für das Einfärben Matplotlib

Visualisierung

Auf dem Bild sind die statischen Bereiche weiß, wie auf dem Spielfeld, die farbigen Flächen zeigen, wie häufig in welchem Bereich des Bildes etwas passiert.

Die Verteilung folgt dieser Skala: Auf der linken Seite (Cyan) wenig Aktivität, rechts (Magenta) viel Aktivität.

Statistik

Das Bild besteht aus 1777136 Einzelbildern, bzw. 2:42 Stunden Spieldauer, bzw. 333 Runden.

Update 9.9.2024

Ich bin nicht der einzige, der auf die Idee gekommen ist Pong für die Visualisierung einzusetzen: Song Pong.

Vorschau

Externer Inhalt

An dieser Stelle wird ein externer Inhalt eingebunden. Damit können personenbezogene Daten an Drittplattformen übermittelt werden.

Externe Inhalte zulassen