Retrospective: Ein Monat Hardcore Vibe Coding mit Claude für In-Game Local Storage
0
12. April 2026
Ein ehrlicher Real Talk über meine Erfahrungen mit intensivem "Vibe Coding" mit Claude Opus 4.6 im letzten Monat. Ich breche die Honeymoon-Phase und den Reality Check beim Bau eines Texture2D Cache Reference Counting Systems herunter und erkläre, warum das Bauchgefühl eines menschlichen Architekten die einzige Rettung vor Spaghetti-Code ist.
Kategorien:AI、Spieleentwicklung
Letzten Monat habe ich mich auf der Arbeit voll ins Thema "Vibe Coding" mit Claude reingehängt (normalerweise nutze ich für meine eigenen Projekte Gemini). Die Firma hat uns diesen Monat eine massive API-Quota gegönnt, und ich war dafür verantwortlich, ein brandneues lokales Fotoalbum-Feature für unser Game zu bauen. Also habe ich meinen Workflow auf den Kopf gestellt: Ich spiele den Architekten für das Big Picture, und Claude Opus 4.6 darf den Code Monkey machen.
Nach einem ganzen Monat in diesem Setup hier der Real Talk: Wenn du genau weißt, was du willst, ist die KI ein absolutes Biest. Aber in der Sekunde, in der du anfängst, Requirements anzupassen oder Bugs zu fixen, ist menschliche Erfahrung immer noch zu 100 % unersetzlich.
Wenn du weißt, was du willst, liefert sie komplett ab
Während der initialen Scaffolding-Phase, solange ich strikte Grenzen gesetzt habe, hat Claude exakt das rausgehauen, was ich brauchte.
Um zum Beispiel zu verhindern, dass die lokalen Album-Files korrumpieren, habe ich eine Datensicherheits-Funktion verlangt. Claude hat sofort gecheckt, worum es geht, und ein makelloses WAL-Pattern (Write-Ahead Logging) direkt aus dem Playbook von SQLite kopiert. Die Logik für Temp-Files, atomare Swaps und Crash Recovery war perfekt. An diesem Punkt gilt: Wenn deine Specs glasklar sind, macht die KI die Drecksarbeit perfekt und spart dir Stunden beim Schreiben von Boilerplate-Code.
Der Reality Check: Tunnelblick beim Bugfixing
Aber die Honeymoon-Phase war vorbei, sobald wir anfingen, Features zu tweaken und Bugs zu fixen. Da traten Claudes Limits extrem deutlich zutage.
Der größte Blind Spot der KI ist, dass sie null globales Systemverständnis hat. Wenn Logik crasht, ist ihre erste Reaktion, einfach ein Pflaster draufzukleben (Workaround). Sie liebt es, irgendwelche Boolean-Flags reinzuwerfen oder neue if-else Branches aufzumachen, anstatt mal einen Schritt zurückzutreten und den Fix sauber in das Gesamtsystem zu integrieren. Wenn du der KI hier blind vertraust, wird deine Codebase in Rekordzeit ein unwartbarer Albtraum.
Ein Textbook-Fail: Texture2D Cache Ref Counting
Ein absolutes Textbook-Beispiel dafür hatte ich beim Bau eines Texture2D Cache Reference Counting Systems in C#.
Der Sinn der Sache war das Memory Management für die Album-Seiten. Ich habe den Cache in zwei Zonen aufgeteilt: Active und Inactive. Wenn eine Textur Referenzen hat, bleibt sie aktiv; wenn die Referenzen auf null droppen, fliegt sie in den Inactive Pool und ist bereit für den Garbage Collector.
Es ging komplett schief, als wir Async Callbacks mit den Cache-Refs gemixt haben. Claude hat eine völlig kaputte Timing-Logik geschrieben: Er hat die Page in den Inactive Pool gepusht, bevor die Referenz markiert wurde. Das gab eine massive Race Condition. Wenn der Cache schon voll war, hat der Push in den Inactive Pool sofort das Cleanup getriggert – die Page wurde also zerstört, bevor der Async Callback überhaupt die Chance hatte, die Referenz zu setzen.
Claudes glorreiche Idee, um diesen Bug zu fixen? Ein super dreckiges is_early_marked Flag in die Datenstruktur klatschen, um das Lifecycle-Problem einfach zu umgehen.
Das habe ich sofort abgeblockt. Da ich wusste, wie der Lifecycle der Komponente wirklich funktioniert, habe ich eine harte Regel aufgestellt: Das gesamte Inactive-Page-Cleanup wird verzögert, bis nachdem die Async-Operation die Referenz markiert hat. Indem das Timing auf Architektur-Level angepasst wurde, war der Bug komplett erledigt – ganz ohne schmutzige Extra-Flags.
Fazit
Die ganze Story beweist: KI macht dich beim Coden zwar extrem schnell, aber sie versteckt auch wahnsinnig gern Architectural Tech Debt.
Wenn ein Junior Dev auf diesen Async-Bug gestoßen wäre, hätte er wahrscheinlich einfach Claudes Workaround gemerged. Ein paar Wochen später hast du dann ein Dutzend nutzlose Flags und Branches, und das Modul ist absolut nicht mehr zu retten. Beim Vibe Coding musst du zwar nicht mehr jede Zeile selbst schreiben, aber das Big Picture im Auge zu behalten und Spaghetti-Code zu verhindern, ist ein Job, den nur Menschen machen können.