Analysebericht

Hinter den Kulissen: Die 10 kritischsten Probleme und unsere Lösungsstrategie

Im Laufe der Entwicklung der Godot-Projekte (Labyrinth & Museum) wurden auf GitHub über 150 Änderungen und Problembehebungs-Commits aufgezeichnet. Diese Übersicht zeigt ehrlich und ungeschönt, an welchen Stellen die KI fundamental scheiterte.

Wichtig dabei: Wenn die KI festsaß, habe ich nicht einfach selbst den Code korrigiert. Stattdessen sind wir in eine tiefe Interaktion getreten. Die KI bot oft mehrere (teils völlig unpassende) Lösungswege an. Ich ließ mir das zugrundeliegende Problem von ihr detailliert erklären. Darauf basierend haben wir gemeinsam neue Lösungsarchitekturen erarbeitet, Optionen abgewogen und diese dann in iterativen Testläufen erprobt. Es war ein echtes und herausforderndes Pair-Programming zwischen Mensch und Maschine.

1. Draw-Call Bottleneck (15 FPS Drop)

Das Problem: Tausende einzeln instanziierte Wände überlasteten die GPU-Schnittstelle extrem (Draw-Calls), was die Bildrate auf unspielbare 15 FPS drückte.
Die Interaktion: Die KI schlug anfänglich komplexe Multithreading-Ansätze vor. Ich ließ mir die genaue GPU-Kommunikation der Engine erklären. Gemeinsam analysierten wir, dass die Übertragungsfrequenz das Limit war und arbeiteten zusammen das Hardware-Batching aus. Sie setzte dieses nach meinen architektonischen Spezifikationen mit `MultiMeshInstance3D` um, wodurch wir sofort wieder stabile 60+ FPS erreichten.

2. Theora Video-Macroblock Fehler

Das Problem: MP4-Videos froren im Spielverlauf immer wieder mit massiven grünen Blockartefakten ein.
Die Interaktion: Die KI vermutete fälschlicherweise fehlerhaften Render-Code und schlug vor, die Core-Updateschleife umzuschreiben. Wir testeten diese Ansätze erfolglos, bis ich vorschlug, das externe Asset-Encoding zu hinterfragen. Durch Dialog erarbeiteten wir, dass B-Frames und Metadaten die Theora-Decoder der Engine stören. Ich testete einen FFmpeg-Konvertierungs-Ansatz, womit wir das Problem dauerhaft eliminierten.

3. VR Input-Kollision (Motion Sickness)

Das Problem: Das blinde Addieren von herkömmlichen Mauseingaben und physischer Headset-Drehung führte beim VR-Start zu unkontrollierbaren Kamera-Achsen.
Die Interaktion: Erste Lösungsansätze der KI waren pure Mathematik (Vektoren künstlich verkleinern), was die Ursache ignorierte. Wir tauschten uns über die Funktionsweise des OpenXR-Treibers aus. Zusammen entwarfen wir die Architektur für eine isolierte Zustandsmaschine, die den Input konsequent anhand der laufenden Systemumgebung filtert anstatt ihn zu summieren.

4. 2D UI-Rendering in Virtual Reality

Das Problem: Die HUDs und Menüs "klebten" bei VR physisch vor den Linsen und zerstörten damit sofort die Tiefenwahrnehmung.
Die Interaktion: Die von der KI gelisteten Optionen beschränkten sich auf 2D-Skalierungen der Canvas-Ebene. Da dies nicht zum Ziel führte, stieg ich mit ihr in ein Architektur-Brainstorming ein: Interface-Visualisierung außerhalb des Main-Viewports. Ich definierte die Lösung eines 3D-Schildes im physischen Raum, welches die KI anschließend programmierte und relativ zur Headset-Kamera anbrachte.

5. A* Pathfinding CPU Stillstand

Das Problem: Godots A*-Pathfinding überlastete bei 900 generierten Räumen komplett die CPU, was zu Mikrorucklern führte.
Die Interaktion: Als der Vorschlag aufkam, Frame-Verzögerungen für die Analyseberechnungen einzubauen, lehnte ich das wegen Gameplay-Mängeln ab. Wir wägten prozedurale Alternativen ab. Ich gab ihr eine komplett neue Denkrichtung: Vektorpfeil-Caching auf dem Grid, um konstante Zugriffszeiten (O(1)) zu erzielen, woraufhin wir diesen neuartigen Ansatz erfolgreich als System umsetzten.

6. Defekte Prozedurale Geometrie

Das Problem: Im Museum generierte der Code offene Decken und fehlerhaft invertierte Normalen zwischen den Fluren.
Die Interaktion: Ich ließ mir von der KI alle verfügbaren Booleschen Operationen (CSG) in Godot listen. Ihre vorgeschlagenen Raumadditionen verursachten Endlosschleifen. Im Dialog legten wir gemeinsam eine Master-Regel fest, anstatt blind zu raten: Wir arbeiten nun rein subtraktiv. Darauf basierend passten wir den Algorithmus an, was die fehlerfreien Wände und Dächer produzierte.

7. Performance-Exitus durch Dynamisches Licht

Das Problem: Bei aktiviertem Raytracing (SDFGI) brachten die zahlreichen Galerie-Spotlights das Bildausgabe-Limit massiv ins Wanken.
Die Interaktion: Die Basisvorschläge der KI umfassten lediglich den Verzicht auf weiche Schatten. Das wollte ich visuell nicht hinnehmen. Also erarbeiteten wir eine dynamische Culling-Struktur: Nach mehreren Diskussionen über Performance entwarf die KI einen Trigger, der die Lichter erst einschaltet, wenn sich meine Spielfigur wirklich auf Sichtweise des Flurs bewegt.

8. OpenXR Action Map Registry Fehler

Das Problem: Der Headset-Start schlug permanent fehl, da die Treiber-Inputs (Controllertasten) nicht registriert wurden.
Die Interaktion: Die KI wies immer wieder auf Skriptausführungen hin und gab an, den Fehler nicht zu "sehen". Wir gingen die Hierarchie der Applikation systematisch durch und ermittelten, dass das Mapping gar nicht zum Code gehörte, sondern in der Engine-Registry fehlte. Ein Musterbeispiel, wie ich über Dialog und Analyse den Tellerrand der KI-Sichtweise durchbrach.

9. Speicherleck (Memory Leak) bei API-Ladezyklen

Das Problem: Beim Nachladen von APIs (hochaufgelöste Weltraumbilder) füllte sich unkontrolliert der Grafikspeicher des Systems.
Die Interaktion: Auf Anraten der KI versuchten wir Garbage-Collection zu erzwingen – der Speicher wuchs trotzdem. Nach genauerem Hinterfragen ihrer API-Struktur kamen wir auf den Kern: Bilder wurden neu referenziert aber nie physikalisch gelöscht. So bauten wir einen interaktiven Cache-Manager als Singleton, der nicht verknüpfte Texturen hart im Speicher aufräumt.

10. Teleport-Logik und Fehlendes UX-Design

Das Problem: Der unsichtbare Teleporter-Trigger war anfangs mitten im Gang, was zu ständigen versehentlichen Gebietswechseln führte.
Die Interaktion: Die KI bot an, Countdowns für das Betreten zu nutzen, was als Spielgefühl fatal wäre. Hier zeigte ich ihr klar auf, warum Architektur UX-Funktionen übernehmen muss: Gemeinsam integrierten wir eine abgetrennte Säule am Rand als optischen Fokus, die dediziert als physischer Teleporter programmiert wurde statt als bloße Codebereich-Kollision.