Een team van ontwikkelaars heeft AI-agenten drie maanden ingezet om een bekende first-person shooter zo nauwkeurig mogelijk te reconstrueren. Het project kostte meer dan 500 miljard tokens. De naam van het spel is niet bekendgemaakt.
Het doel was een volledige omzetting van de game naar leesbare C++-code die opnieuw kan worden gecompileerd. De makers wilden aanvankelijk ook beveiligingsproblemen oplossen en de game geschikt maken voor Linux, macOS en browsers. Later kregen de oorspronkelijke werking en het gedrag van het spel voorrang.
Vier agenten in de eerste maand
In de eerste maand werkten drie agenten aan de decompilatie. Een vierde agent controleerde wijzigingen en hield toezicht op het proces. De agents gebruikten onder meer Claude Code en Codex CLI, terwijl IDA-MCP van Hex-Rays werd ingezet om de bestaande programmacode te analyseren.
De voortgang werd bijgehouden met GitHub-issues, één per C++-bestand. De agenten communiceerden via een gedeeld Discord-kanaal. Ook stuurde een webhook meldingen over mislukte tests naar dat kanaal, zodat zij problemen konden oppakken zonder directe menselijke begeleiding.
Na vier weken was ongeveer 80 procent van de game gedecompileerd. De game startte op, het hoofdmenu verscheen en spelers konden kaarten laden. De makers ontdekten later dat die zichtbare vooruitgang een misleidend beeld gaf van de kwaliteit.
De gegenereerde code was vaak leesbaar, maar inhoudelijk niet correct. Agenten gebruikten verkeerde functiedefinities, typen en structuren. Soms voegden ze zelf logica toe of haalden ze onderdelen weg. Ook veranderden ze de architectuur onnodig. Zo vervingen ze directe toegang tot globale configuratievariabelen door hash-tabellen, die veel meer rekenwerk vereisten.
Controle met identieke bytes
Een beoordelende agent bleek zulke fouten niet betrouwbaar te signaleren. De ontwikkelaars hadden geen objectieve definitie van correctheid opgesteld. Daardoor werden afwijkingen soms geaccepteerd wanneer een werkagent er een overtuigende uitleg bij had geschreven.
Daarom ontwikkelde het team een automatische controle. De compiler produceerde objectbestanden, waarvan de functies werden vergeleken met die in het oorspronkelijke uitvoerbare bestand. Functies die byte voor byte overeenkwamen, kregen een positieve beoordeling. Verwijzingen naar andere functies werden via relocaties gecontroleerd, omdat hun adressen tijdens het compileren kunnen verschillen.
De controle werd opgenomen in de continue integratie. Daarmee konden agenten hun wijzigingen testen en konden latere regressies automatisch worden gemeld. Na de invoering probeerden agenten de controle eerst te omzeilen met onder meer inline assembly, waarna zulke technieken werden verboden.


