İçeriğe geç / Skip to content / Zum Inhalt

Ein Mobile-Spiel mit KI-Agenten entwickeln: Kalecik

Ahmet Balaman

10 Min. Lesezeit

Vibe CodingKalecikGodotClaude CodeKIMobile Game
Ein Mobile-Spiel mit KI-Agenten entwickeln: Kalecik

Kalecik ist ein gemütliches Burgenbau-Spiel für iPhone und iPad: Sie ziehen einen Finger über die Wiese, und entlang der Linie wächst Stein für Stein eine Mauer. Führt ein Weg durch die Mauer, öffnet sich ein Torbogen; führt er über einen Teich, wird er zur Brücke. Schafe gehen zum Trinken ans Wasser, und nachts leuchten die Fenster.

Dieser Artikel erzählt ehrlich, wie das Spiel entstanden ist. Kurz gesagt: Den Code habe nicht ich getippt. Ich habe Kalecik gebaut, indem ich fünf gleichzeitig laufende Claude-Code-Sitzungen gesteuert habe. Ich habe beschrieben, was ich wollte, die Entscheidungen getroffen, jede Version auf meinem Telefon gespielt und zurückgemeldet, was mir auffiel; den Code haben die Agenten geschrieben. Vom leeren Ordner bis zur ersten Version auf dem iPhone vergingen etwa zweieinhalb Stunden. Dieser Artikel ist die Landkarte dieses Prozesses; die technischen Details stehen in den weiteren Artikeln der Reihe.

Die Idee: Warum gibt es Tiny Glade nicht fürs Telefon?

Alles begann mit einer Frage. Ich habe Claude gefragt, ob es Tiny Glade kennt, und um eine ehrliche Einschätzung gebeten. Tiny Glade ist das Computerspiel von Pounce Light: Man zeichnet Burgen und Dörfer, ganz ohne Ziel, und es sieht wunderschön aus. Eine offizielle Version für iPhone oder Android gibt es nicht.

Die Antwort war offener als erwartet. Claude wies darauf hin, dass das Spiel mit Rust und Bevy gebaut ist, globale Beleuchtung in Echtzeit nutzt und eine exakte Kopie sehr schwer wäre. Für Mobilgeräte schlug es etwas Schlichteres vor, das dasselbe Gefühl vermittelt. Daraus wurde der Plan: dieselbe Art Spiel, von Grund auf für Touchscreens entworfen, als eigenständiges Projekt. Kalecik ist von Tiny Glade inspiriert, hat aber keine Verbindung dazu; das steht auch auf der Produktseite.

Warum Godot?

Meine zweite Frage betraf die Engine. Die Geometrie sollte im Code entstehen, und das Spiel musste auf einem Telefon laufen. Claude empfahl Godot, mit einer interessanten Begründung: In Godot sind Szenen (.tscn), Skripte (.gd) und Shader (.gdshader) reine Textdateien. Ein KI-Agent kann das ganze Projekt über die Kommandozeile und Textdateien steuern, ohne im Editor zu klicken. Unity ist viel stärker auf die Editor-Oberfläche angewiesen.

Also: Godot 4.7.2, der Mobile-Renderer, alles in GDScript. Der einzige native Code ist eine kleine Objective-C++-Erweiterung, die Fotos in der Mediathek speichert. Alles andere, Steine, Häuser, Brücken, Bäume und Tiere, entsteht im Code. Im Projekt gibt es keine einzige 3D-Modelldatei.

Die ersten zweieinhalb Stunden: von der Linie zur Mauer aufs Telefon

Der zeitliche Ablauf, grob (am Abend des 24. September):

  • 20:36 Erste Nachricht in einem leeren Ordner.
  • 20:50 Erste Dateien: Szene, Linienwerkzeuge, Mauerpfad und Mauerwerk.
  • 21:06 Erste Demo auf dem Mac: Linie ziehen, Steinmauer bekommen, an den Ecken wachsen Türme von selbst.
  • 21:10 Ich bat darum, die Maus-Details zu lassen: Das würde von Anfang an ein Mobile-Spiel.
  • 21:58 Touch-Steuerung fertig.
  • 22:59 Häuser aus gezeichneten Flächen, Schornsteinrauch, Schafe, Vögel, synthetisierter Klang, Pflasterwege, die Tore in Mauern schneiden, Stein-, Ruinen- und Zaunmauern, Tag/Abend/Nacht und Fotomodus.
  • 23:02 Erste Installation auf meinem iPhone 15 Pro Max.

Kalecik bei Tag: ein ummauertes Dorf mit Türmen, einer Steinbrücke und einer Wiese

Ein Bild aus der Engine des Spiels: in einer Nacht von der Linie zur Mauer zum Dorf.

Sobald ich auf dem Telefon spielte, füllte sich die Liste schnell: Die Wind-Schleife klang wie Brandung, die Kamera war zu empfindlich und ruckartig, beim Kritzeln erschienen Türme an unsinnigen Stellen, im Fotomodus fehlte der Auslöser, und bei stumm geschaltetem Telefon blieb das Spiel komplett still (ich wollte, dass die Musik auch im Stumm-Modus läuft). Ich habe jeden Punkt notiert; der Agent hat ihn behoben und neu installiert. In derselben Nacht kamen Gelände, Teiche und Fische dazu. Irgendwann bemerkte ich, dass die Schafe zum Teich hinuntergehen und trinken, und war ehrlich überrascht; genau solche Details machen das Spiel aus.

Den ersten Commit habe ich um 0:08 Uhr gemacht: 62 Dateien, 5.770 Zeilen. Gegen 1 Uhr war auch die erste Android-APK fertig.

Wenn ein Agent nicht reicht: fünf parallele Sitzungen

Als das Spiel wuchs, wurde eine einzelne Sitzung zum Engpass. Nach Mitternacht öffnete ich eine zweite Claude-Code-Sitzung, dann eine dritte, und schließlich arbeiteten fünf Sitzungen gleichzeitig am selben Projekt, jede mit eigenem Bereich:

  • Leitung: Verknüpfungen, prozedurale Gebäude, Brücken, Bearbeitungsgriffe, Ich-Perspektive zum Spazierengehen und Installationen aufs Telefon.
  • Klang und Optik: Soundeffekte, Musik, Shader, Grün, Wetter, Innenräume.
  • Performance und Natur: das überhitzte Telefon, 20 Baumarten, Tiere, Gras.
  • Release: App-Store-Vorbereitung, Startbildschirm, Speicherplätze, Einstellungen, 20 Sprachen, die Foto-Erweiterung.
  • Qualitätssicherung: zuerst die Wahl des Icons, dann Tests, Fuzzing und die README.

Fünf parallele Claude-Code-Sitzungen, ein gemeinsamer Projektordner und ein Telefon bei der Entwicklung von Kalecik; Entscheidungen und Tests liegen bei Ahmet

Fünf Agenten, die dieselben Dateien anfassen, sorgen natürlich für Ärger. Geholfen hat, was auch in menschlichen Teams funktioniert: eine Tabelle in der README, wer für welche Datei zuständig ist, Nachrichten zwischen den Sitzungen und nur eine Sitzung, die aufs Telefon installieren darf. Damit kein Agent aus einer halb bearbeiteten Datei eines anderen baute, wurde der Projektordner vor jedem Build und Testlauf als Momentaufnahme kopiert.

Zu Beginn nahm auch Googles Antigravity einige Änderungen vor (das Zusammenschnappen von Hausflügeln und eine Korrektur an Hügeln stammen daher). Später holte ich eine externe Einschätzung von GPT ein, die echte Fehler fand, etwa einen Absturz beim Start und einen „Neues Dorf“-Knopf, der Daten löschte. Kalecik hat also keine einzelne KI gebaut; mehrere Werkzeuge arbeiteten unter meiner Steuerung zusammen.

Was war dann meine Aufgabe?

Wenn ich keinen Code geschrieben habe, was habe ich getan? Ein paar konkrete Dinge:

  • Richtung und Umfang. Ich habe entschieden, was gebaut wird und in welcher Reihenfolge. Als die erste Liste abgearbeitet war, setzte ich ein neues Ziel: daraus etwas wirklich Großartiges machen. Die zweite Runde verlangte bearbeitbare Brückenenden, Spaziergänge auf den Mauern, Innenräume, Jahreszeiten und viel mehr Baumarten.
  • Tests auf dem Telefon. Ich habe jede Version auf meinem iPhone gespielt und mit Screenshots und Bildschirmaufnahmen beschrieben, was ich sah. Der Agent sieht das Telefon nicht und spürt nicht, wie es warm wird; „das Telefon ist richtig heiß geworden“ kam von mir.
  • Produktentscheidungen. Der Name (Kalecik), der Preis (einmalig, ohne Werbung), das Icon. Die KI-generierten Icon-Entwürfe wirkten mir zu künstlich; das finale Icon ist ein Abendbild des Burghofs aus der Engine des Spiels.
  • Wissen, wann man anhält. Kurz nachdem die erste Version in App Store Connect hochgeladen war, habe ich entschieden: Veröffentlicht wird erst, wenn das Spiel fertig ist. Meine letzte Nachricht vor dem Schlafen lautete sinngemäß „Erledige alles, aber ordentlich“; die Agenten arbeiteten die Nacht durch, ich schlief.

Wie prüft ein Agent, was er nicht sehen kann?

Das ist die häufigste Frage. Der Agent kann das Spiel weder spielen noch hören, also wurden Testwerkzeuge direkt ins Spiel eingebaut:

  • Skriptgesteuerter Touch-Test. Mit --test gestartet, zeichnet das Spiel mit simulierten Berührungen Mauern, setzt Häuser, macht Screenshots und führt Prüfungen aus. Die Zahl der Prüfungen wuchs von 15 auf 50, und der Agent beurteilt das Ergebnis zusätzlich anhand der Screenshots aus der Engine.
  • Fuzz-Test. Er spielt zufällig und prüft nach jedem Schritt Invarianten: speichern, laden und erneut speichern ergibt dasselbe; kein Wert ist jemals NaN; alles rückgängig machen und wiederholen lässt das Dorf unverändert.
  • Klang messen. Weil der Agent nicht hört, wurde die Lautheit mit LUFS- und Spitzenwerten geprüft und der Charakter mit Spektrogrammen. Die Details stehen in Spielmusik und Sounds mit Code erzeugen.

Eine kleine, aber lehrreiche Anmerkung: Während die Tests liefen, kamen Spielgeräusche aus meinen Mac-Lautsprechern, und das hat mich gestört. Seitdem läuft jeder Test mit einem stummen Audiotreiber. Wer mit Agenten arbeitet, sollte auch den eigenen Komfort als Anforderung nennen; sonst kann ihn niemand kennen.

Wo es hakte

Nicht alles lief glatt. Die wichtigsten Punkte:

  • Das Telefon wurde heiß. Das Spiel zeichnete auf dem 120-Hz-Display des iPhones 120 Bilder pro Sekunde. Lösung und Messwerte stehen in Das Spiel, das mein iPhone überhitzte.
  • Schleifen klangen wie Brandung. Am Ende läuft im Spiel nichts mehr in Schleife; jeder Klang ist ein einzelnes Ereignis zu einem zufälligen Zeitpunkt.
  • Unsichtbare Fehler. In GDScript sind Arrays wie PackedVector3Array Werttypen. Ein aus einem Dictionary genommenes, verändertes und nie zurückgeschriebenes Array ließ alle 46 Grasabschnitte leer. Aufgefallen ist es, weil die Store-Screenshots kahlen Boden zeigten.
  • Speichern in der Mediathek. Der erste Ansatz wurde nie ausgelöst; am Ende entstand eine kleine native Erweiterung.
  • Die Store-API. Die App Store Connect API ließ das Anlegen des App-Eintrags nicht zu, dieser eine Schritt lief über die Weboberfläche. Alles andere ist automatisiert: App Store Connect per API automatisieren.

Keiner dieser Fehler entstand, weil der Agent etwas „nicht wusste“. Sie entstanden, weil diese Situation noch niemand gesehen hatte. Das Auge am Telefon fand, was die Tests übersahen.

Wo das Spiel heute steht

Als ich diesen Artikel schrieb, waren seit der ersten Nachricht etwa fünfzehneinhalb Stunden vergangen. Das Spiel umfasst über 17.000 Zeilen GDScript; zwei iOS-Builds sind in App Store Connect hochgeladen, der Store-Eintrag liegt in 50 Sprachen vor, der Preis steht fest. Veröffentlicht ist es aber noch nicht: Ich reiche es erst zur Prüfung ein, wenn es fertig ist. Kalecik kommt bald in den App Store, und eine Android-Version für Google Play ist in Arbeit.

Kalecik bei Nacht: dasselbe Dorf mit leuchtenden Fenstern

Dasselbe Dorf bei Nacht: Die Fenster gehen von selbst an.

Wenn Sie sehen möchten, wie die Mauern tatsächlich entstehen, lesen Sie mit den technischen Artikeln der Reihe weiter: prozedurale Steinmauern, Tore und Brücken.

Wenn Sie denselben Weg gehen möchten

  • Wählen Sie die Engine danach, womit der Agent gut arbeitet. Ein Werkzeug, das sich über Textdateien und die Kommandozeile steuern lässt, bestimmt das Tempo.
  • Testen Sie vom ersten Tag an auf einem echten Gerät. Ein Spiel, das auf dem Mac perfekt aussieht, kann das Telefon überhitzen, zu nervös reagieren oder im Stumm-Modus völlig still bleiben.
  • Legen Sie für parallele Agenten eine Arbeitsteilung schriftlich fest. Wer ist für welche Datei zuständig, wer installiert aufs Gerät; halten Sie es in einer Tabelle fest.
  • Automatisieren Sie die Überprüfung. Skriptgesteuerte Tests, Fuzzing und Messungen machen messbar, was der Agent nicht sieht.
  • Treffen Sie die Entscheidungen selbst. Name, Preis, Veröffentlichungszeitpunkt und das Urteil „das ist noch nicht gut genug“ bleiben Ihre Aufgabe.

Über die Veröffentlichung einer App mit Vibe Coding habe ich bereits im Artikel zu LevelUpStudy geschrieben. Kalecik war anders: fünf Agenten statt einem, ein 3D-Spiel statt einer App und eine Nacht statt Monaten.

Häufige Fragen

Kann man mit KI wirklich ein Spiel entwickeln?

Ja, aber es ist nicht so einfach wie „der KI sagen, und sie macht es“. Bei Kalecik haben die Claude-Code-Agenten den Code geschrieben; Richtung, Entscheidungen, Tests auf dem Telefon und das Urteil „das passt nicht“ lagen bei mir. Am meisten halfen Tests, die messbar machen, was die Agenten nicht sehen.

Haben Sie wirklich keinen Code geschrieben?

Richtig, in diesem Projekt habe ich keine Zeile Code geschrieben. Mein Software-Hintergrund war trotzdem in jeder Phase wichtig: um technisch präzise zu beschreiben, was ich will, um einzuschätzen, woher ein Fehler kommen könnte, und um zu beurteilen, ob ein vorgeschlagener Fix sinnvoll ist.

Warum Godot und nicht Unity?

In Godot sind Szenen, Skripte und Shader reine Textdateien, sodass ein Agent das Projekt komplett über die Kommandozeile steuern kann. Kalecik brauchte im Code erzeugte Geometrie statt importierter Modelle, und dafür reicht Godot mühelos.

Wann erscheint Kalecik?

Der App-Store-Build ist bereit, aber ich reiche ihn erst zur Prüfung ein, wenn das Spiel fertig ist. Eine Android-Version für Google Play ist ebenfalls in Arbeit. Sobald es so weit ist, führen die Store-Knöpfe auf der Kalecik-Seite direkt dorthin.

Ist Kalecik die Mobilversion von Tiny Glade?

Nein. Tiny Glade ist das Spiel von Pounce Light für Windows, Linux und macOS und hat keine offizielle Mobilversion. Kalecik ist ein unabhängiges iPhone- und iPad-Spiel, das davon inspiriert ist; Geometrie, Klang und Musik erzeugt es vollständig mit eigenem Code.

Kommentare