Tetris
AktivDieses Projekt ist ein Experiment mit OpenAIs Coding Agent (Codex). Ich wollte herausfinden, wie gut KI inzwischen wirklich coden kann, und habe gemeinsam mit dem Agenten eine moderne Web-Version von Tetris gebaut.
- Erstellt
- 2025-09-09
- Aktualisiert
- 2026-06-25
Hintergrund & Motivation
Die Motivation hinter diesem Projekt war meine Neugier. Ich wollte wissen, wie weit und wie gut ich vorankomme, wenn ich einen KI-Coding-Agenten (in diesem Fall OpenAI Codex) nicht nur für Snippets, sondern für eine komplette App-Architektur nutze.
Ich habe mich entschieden, Tetris zu bauen, damit ein klares Ziel ohne lange Konzeptionsphase vor Augen ist und ich den Fortschritt anhand der bekannten Spielmechanik gut verfolgen kann.
Programmieren durch Delegieren
Normalerweise initialisiere ich ein Projekt selbst, lege die Ordnerstruktur an und mache mir Pläne, wie ich vorgehe. Ich mache mich mit dem Tech Stack vertraut und verbringe viel Zeit in Dokumentationen und Foren.
Bei diesem Projekt war das anders. Ich habe angefangen, indem ich dem Agenten im Planungsmodus einfach geschrieben habe: “Ich will Tetris programmieren”. Darauf folgte eine Planungsphase, in welcher sich durch ein Hin und Her mit dem Agenten ein Plan herauskristallisierte. Diesen ließ ich dann vom Agenten in einer Markdown-Datei festhalten. Es wurden Ziel und Scope, der Tech Stack, ein Architekturüberblick, Spielmechaniken sowie Meilensteine und Abschlusskriterien festgelegt. All das hat super funktioniert, ohne dass viel Input von meiner Seite aus notwendig war.
Um den Agenten besser kontrollieren zu können und um zu verhindern, dass Features implementiert werden, die nicht geplant waren, ist mir klar geworden, dass der Agent Regeln braucht. Diese habe ich ihm in Form einer AGENTS.md-Datei gegeben und im Laufe des Projektes immer wieder ergänzt.
Aus meiner AGENTS.md:
- Only do one task at a time.
- If a task is too big, don’t implement it. Instead break it down…
- Always try to implement a modular- and component-based structure.
- If files are too big, split them into multiple files…
Meine Arbeit bestand zu 90 % aus Reviewen und “Prompt Engineering” – also dem Versuch, mich so präzise wie möglich auszudrücken, damit das Ergebnis auch das Gewünschte ist. Wenn der Agent vom Weg abkam, habe ich ihn nicht durch Code-Korrekturen, sondern durch präzisere Anweisungen zurückgeholt.
Architektur & Tech Stack
Das Spannende war zu sehen, ob der Agent abstrakte Anweisungen wie “modular structure” (Regel 5) wirklich umsetzen kann.
Und wie sich herausgestellt hat, konnte er dies. Ohne dass ich die Ordnerstruktur vorgegeben habe, hat der Agent (auf Basis meiner Prompts) ein sauberes Monorepo mit pnpm kreiert:
@tetris/core: Die reine Logik. Getrennt, testbar, ohne UI-Abhängigkeiten.@tetris/web: Der Visual Layer. Nutzt Canvas und React und konsumiert nur den Core.
Der Code ist erstaunlich “hygienisch”. Die Regel 7 (“split files if too big”) wurde konsequent befolgt. Statt einer riesigen Game.ts gibt es dedizierte Module für Piece, Board, Scoring und Audio.
Ergebnis
Das Ziel war kein einfaches “Hello World”, sondern ein Spiel, das sich echt anfühlt. Durch die strikte Einhaltung von Regel 2 (“Add Tests”) konnte ich sicherstellen, dass komplexe Mechaniken wie das Super Rotation System (SRS) oder der 7-Bag-Randomizer korrekt funktionieren, bevor überhaupt ein Pixel auf den Bildschirm gezeichnet wurde.
Ein besonderes Highlight sind die Assets. Ich wollte keine Standard-Sounds herunterladen, sondern habe den Agenten beauftragt, 8-bit-Sounds per Skript zu generieren. Er lieferte prompt ein Shell-Skript, das mittels ffmpeg mathematische Wellenformen zu einem stimmigen Chiptune-Soundtrack mischt. Das Ergebnis passte ohne nennenswerte Iterationen sofort perfekt zum Vibe.
Auch technisch ist das Audio-System sauber gelöst, indem eine Abstraktionsschicht die Engine-Events (wie Line Clear) auf die Web Audio API mappt. Das macht das System extrem reaktionsschnell und vermeidet Latenzen.
Dazu kommen Features wie Local Storage Highscores, anpassbare Steuerungen (DAS, ARR) und ein Ghost-Piece, die das Spielgefühl abrunden.
Fazit
Das Projekt hat mir gezeigt, dass KI ein extrem mächtiger Co-Pilot ist, welcher allerdings möglichst präzise Anweisungen, einen Plan sowie Regeln braucht. Je besser diese sind, desto besser ist auch das Ergebnis. Die persönlichen Anforderungen an so ein Projekt sind daher andere als bei einem herkömmlichen Softwareprojekt. Es geht mehr um Planungsfähigkeit, klare Ausdrucksweise und darum, zu wissen, was man will. Das Praktische ist, dass der Agent einen auch bei diesen Sachen unterstützt, wenn man ihn denn damit beauftragt.
Ich konnte aus dem Projekt sehr viel über das Prompten und Managen von Projekten aus einer abstrakteren Ebene heraus lernen und war überwältigt von dem Ergebnis und dem relativ geringen zeitlichen Aufwand.
Das Spiel ist voll funktionsfähig und ich liebe es, hin und wieder in ihm und vor allem der stimmigen 8-bit-Musik zu versinken. Ich habe noch ein paar Ideen für Extras und Ergänzungen, die in Zukunft hoffentlich bald implementiert sein werden.


