hrxdev
Deutsch

Wie es entsteht

Ein Entwickler, ein KI-Programmierassistent und viele maschinell geprüfte Regeln.

Von Nick

Prison Life schreibe ich zusammen mit Claude Code (dem Programmieragenten von Anthropic). Ich entscheide, was das Spiel ist und welche Wege wir gehen; der Assistent übernimmt das meiste Tippen. Weil niemand außer mir und einem KI-Agenten für Reviews den Code prüft, setze ich auf Automatisierung: Regeln werden von automatischen Prüfungen und vom Build durchgesetzt, nicht von guten Absichten.

Delegation

Die Haupt-Session von Claude Code plant die Arbeit und führt den Aufgaben-Tracker, die schriftlichen Designentscheidungen und die Änderungshistorie. Code schreibt sie nicht: Jede Änderung, auch die kleinste, gibt sie an einen spezialisierten KI-Agenten weiter. Jeder hat eine eigene schriftliche Definition, die seine Rolle und sein Modell festlegt.

RolleModellstufeAufgabe
ArchitekturOpusDatenmodell, Tick, Threads, Wegfindung, Entscheidungen
SimulationscodeOpusSimulationssysteme, KI der Figuren, heiße Schleifen
PerformanceOpusProfiling, Benchmark-Regressionen
Review (nur lesend)Opusprüft einen Diff; kann keine Dateien bearbeiten
Client und WerkzeugeSonnetGodot-Client, UI, Werkzeuge
TestsSonnetTests nach Abnahmekriterien
InhaltsdatenSonnetJSON-Definitionen nach einem Schema
Suche, Prüfungen ausführenHaikuCodesuche; Prüfungen ausführen und Fehler zusammenfassen

Schwere Arbeit geht an das stärkste Modell, Routinearbeit an günstigere. Scheitert ein günstigerer KI-Agent zweimal an den Prüfungen, wandert die Aufgabe eine Stufe höher; scheitert die oberste Stufe zweimal, hält sie an und fragt mich.

Hooks, die Nein sagen

Hooks in Claude Code sind Skripte, die rund um die Aktionen des Assistenten laufen. Meine setzen drei Regeln durch:

Sie schützen vor Fehlern, nicht vor absichtlichem Umgehen: Ein entschlossener Shell-Trick kommt an ihnen vorbei, und einer der Hooks sieht eine rote Prüfung bei einem KI-Agenten, kann ihn aber nicht aufhalten (der Stop-Hook der Haupt-Session fängt es trotzdem ab). Das sage ich lieber offen.

Schriftliche Entscheidungen und Prüfungen

Der deterministische Kern

Die Simulation lebt in einer reinen .NET-Bibliothek ohne Godot-Referenzen; der Godot-Client liest nur ihren Zustand und sendet Befehle. Der Kern folgt festen Regeln: Die Welt ändert sich nur durch Befehle, Zeit sind ganzzahlige Ticks, Zufall kommt nur aus den geseedeten Generatoren der Welt. Derselbe Seed und dasselbe Befehlsprotokoll müssen dieselbe Welt ergeben. Diese Regeln prüfen der Compiler und Tests, nicht nur Reviews; wie, steht in Devlog #1, und zu Welt, Spielständen und Replays in Devlog #2.

Architektur des SimulationskernsBefehle kommen in eine Warteschlange. Jeder Tick führt Phase 0 (Befehle, die ins Befehlsprotokoll geschrieben werden), Phase 1 (Systeme in fester Reihenfolge) und Phase 2 (Ende des Ticks) aus. Das Befehlsprotokoll und der Weltzustand mit seiner Kachelkarte und den geseedeten Zufallsströmen fließen in den Zustands-Hash. Eingehende Befehle Spieler, Tests, Szenarien Befehlswarteschlange Einreihen ist threadsicher Tick T (ein Thread, ganzzahlige Zeit) Phase 0: Befehle serialisieren, stempeln (Tick, Nr.) Validate, ins Protokoll, Apply auch abgelehnte werden protokolliert Phase 1: Systeme in fester Reihenfolge aus dem Code (noch keine registriert) Phase 2: Ende des Ticks Strukturänderungen (noch ungenutzt) dann Tick-Zähler + 1 Befehlsprotokoll jeder Befehl mit seinem Ergebnis Bytes + Prüfsumme Replay = Seed + Protokoll Weltzustand Seed, Tick Kachelkarte (Ebenen) 4 RNG-Ströme aus dem Seed: Commands, Needs, Ai, Events Zustands-Hash Seed, Tick, Karte, RNG-Ströme, Protokoll
Der Simulationskern, wie er heute existiert. Es gibt noch keine Systeme und keine Figuren; die Welt enthält eine Kachelkarte mit Ebenen, und der Hash deckt die Karte ebenso ab wie das Gezeichnete.

Das Designziel sind bis zu 1.000 Insassen und Mitarbeiter bei 20 Ticks pro Sekunde. Es ist ein Ziel: Figuren gibt es noch nicht, also existiert der Benchmark-Runner, aber in dieser Größenordnung wurde noch nichts gemessen.