
Codex, con GPT-6 Astra, ha creato un clone giocabile di Dune 2000 in HTML, CSS e JavaScript in 46 turni, cioè 11 h 16 min di lavoro dell'agente. Il gioco include sprite generati, 34 annunci vocali in francese e 122 test, al prezzo di 54 messaggi e 12 screenshot per correggerne gli errori. La sessione corrisponde a circa 196 $ a tariffa API, qui coperta da un abbonamento ChatGPT.
Su Google, la risposta generata per «creare un videogioco con l’IA» propone di far scrivere un minigioco in HTML a ChatGPT o a Claude. Ho voluto vedere cosa succede con un progetto più impegnativo, un clone di Dune 2000 affidato per tre giorni a un agente di codice.
Dune 2000 è il gioco di strategia in tempo reale sviluppato da Westwood Studios e uscito nel 1998, remake di Dune II. L’agente è l’applicazione desktop di Codex, con il modello GPT-6 Astra impostato sullo sforzo di ragionamento xhigh. I numeri che seguono vengono dal suo log di sessione, un file JSONL da 1,3 GB, e dai test del progetto rilanciati il 14 settembre 2026.
Il prototipo finale si avvia qui sotto, nel tuo browser. I suoi 51,6 MB si caricano solo quando clicchi su «Prova».
Clone de Dune 2000 : le prototype de Codex et GPT-6 Astra
Le prototype tel que Codex l'a laissé le 9 septembre 2026 : une escarmouche Atréides contre Harkonnen, à la souris et au clavier. Rien ne se charge avant votre clic.
Protocollo
Construit avec l'application Codex et le modèle gpt-6-astra en effort xhigh, du 6 au 9 septembre 2026 : 46 tours, 54 messages, 11 h 16 min de travail de l'agent. Compilé par Vite sans modifier le code du jeu, chemins des ressources rendus relatifs pour l'hébergement.

Il progetto gira in una sandbox isolata (iframe sandbox e CSP): nessun accesso al sito, ai cookie o alla tua sessione. Nulla viene caricato prima del tuo clic.
Il prompt iniziale
Il primo messaggio contava 66 parole. Eccolo tradotto dal francese, ripulito dai soli errori di battitura.
Voglio che tu crei un clone di Dune 2000 in HTML CSS e JavaScript basandoti sul progetto OpenRA come aiuto, sei libero di generare gli sprite che vuoi e di cui hai bisogno, comprese le animazioni legate a questi ultimi. Voglio un prototipo giocabile di una partita 1v1 Atreides contro Harkonnen. Il progetto OpenRA si trova nella cartella /Projets/OpenRA-bleed.
OpenRA è un motore open source per giochi di strategia in tempo reale, scritto in C#, che fa girare Dune 2000 e i primi Command & Conquer. Astra non ne ha portato il codice. Ne ha ricavato le regole della mod d2k, costi, economia e catene di prerequisiti, poi ha scritto una simulazione JavaScript indipendente dal rendering, testabile in Node, visualizzata con Phaser 3.90.
Non ho dato nessuna indicazione su come organizzare il lavoro. Astra ha letto di sua iniziativa gli skill del plugin Game Studio pubblicato da OpenAI (web-game-foundations, phaser-2d-game, sprite-pipeline, game-ui-frontend, game-playtest) e lo skill imagegen, che genera le immagini in Codex. Sono file SKILL.md che l’agente carica prima di agire, secondo il principio descritto nella nostra guida agli Agent Skills.
La sessione si è svolta senza sandbox e senza richieste di approvazione (danger-full-access, approvazioni su never). Astra poteva avviare Chrome, installare pacchetti npm e scrivere ovunque sul disco, senza nessuna delle protezioni descritte nel nostro articolo su cosa blocca la sandbox di Codex.
Trentuno minuti per una prima partita
Il primo turno è durato 31 min 30 s per 25 chiamate agli strumenti. Astra ha generato gli sprite degli edifici, dell’harvester, dei carri armati e della fanteria, poi ha programmato la raccolta della spezia, l’energia, le code di produzione, il combattimento e un’IA Harkonnen che attacca a ondate. La nebbia di guerra, la minimappa, la selezione a riquadro e l’attacco in movimento con il tasto A erano presenti fin da questo turno.
Ha chiuso con undici test di simulazione, prove in Chrome guidate da Playwright e una partita automatizzata che vince al livello di difficoltà «Découverte» (Scoperta). Il turno è costato l’equivalente di 5,96 $ a tariffa API.
La partita girava, ma non somigliava ancora a Dune 2000. Il mio secondo messaggio elencava cosa mancava: animazioni, cannoni dei carri che ruotano, più texture del terreno, unità proprie degli Harkonnen e una costruzione più rapida. In 32 minuti, Astra ha separato scafi e torrette per mirare a 360°, disegnato un esercito Harkonnen nero e rosso con quad e Devastator a due cannoni, e fatto sorgere ogni edificio in 4-6 secondi, con fondamenta, impalcatura e gru. Il progetto contava allora 17 test.
Quarantasei turni in tre giornate
Un turno inizia con il mio messaggio e finisce con la risposta di Astra. Nel mezzo, l’agente concatena da solo comandi, generazioni di immagini, screenshot del browser e test. Ho inviato 54 messaggi, allegato 12 screenshot, spesso annotati direttamente sulla pagina del gioco nel browser di Codex, e interrotto 4 turni.
| Giornata | Turni | Lavoro dell’agente | Richieste principali | Test a fine giornata | Costo a tariffa API |
|---|---|---|---|---|---|
| 6 settembre | 20 | 5 h 01 min | animazioni, 157 tile di terreno, otto direzioni per la fanteria, vermi delle sabbie, cursori, primi suoni ElevenLabs | 56 | 83,86 $ |
| 8 settembre | 23 | 5 h 51 min | interfaccia del gioco originale, voci in francese, Carryall, sei edifici e le loro unità, texture, decorazioni, lastre di cemento | 119 | 100,53 $ |
| 9 settembre | 3 | 24 min | lastre da una casella piazzate trascinando | 122 | 11,62 $ |
Astra ha aggiunto test a ogni funzionalità senza che ne chiedessi nemmeno uno. Il contatore è passato da 11 a 17, 24, 29, 33, 41, 44, 51, 56, 67, 69, 75, 85, 90, 106, 111, 119, poi 122 il 9 settembre. Rilanciati il 14, i 122 test Node passano in 2,1 secondi. Il progetto contiene anche 24 percorsi nel browser, uno per ogni funzionalità principale, e 16 script che preparano immagini e suoni.
Dove Astra ha sbagliato
Una correzione che rompe gli spostamenti
Al turno 12 segnalavo dei carri i cui sprite si sovrapponevano. Astra ha misurato veicoli che si avvicinavano fino a 30 pixel quando il loro scafo ne misura più di 60, poi ha dato a ciascuno uno spazio di collisione su misura. Un assalto di dodici veicoli Harkonnen, visto con lo zoom al 165%, ha convalidato la correzione, e i 51 test passavano.
Cinque turni dopo, le unità si distanziavano decisamente troppo e alcune si rifiutavano di passare tra due edifici lontani quanto basta. Astra ha trovato due cause, tra cui la sua stessa correzione. Le collisioni coprivano tutta la diagonale degli sprite, e la griglia di navigazione nascondeva dei passaggi. La riparazione ha richiesto 24 min 54 s e 32 chiamate agli strumenti, con una griglia da 16 pixel, un’impronta a terra per ogni veicolo e unità che si scostano per lasciar passare. Il test del turno 12 misurava la sovrapposizione degli scafi e nient’altro, non poteva vedere questa regressione.
Cosa si perde con un’interruzione
L’8 settembre, uno stesso messaggio chiedeva harvester diversi per ogni casata, un Carryall che li riportasse alla raffineria, raffinerie che scaricassero un solo harvester alla volta, sei edifici del gioco originale e le loro unità. Dopo sei minuti ho interrotto quel turno per inviare uno screenshot dell’harvester originale. Astra ha ridisegnato l’harvester in otto orientamenti, e nient’altro.
Nel messaggio successivo ho dovuto scrivere «Non hai fatto», seguito dal Carryall e dalle banchine dimenticate. La risposta di Astra sta in una frase, «Hai ragione, ho finito gli sprite senza aggiungere la logistica richiesta». Lo stesso giorno, un’annotazione su alcune piccole montagne riutilizzate come sassi nella sabbia è andata persa allo stesso modo con un turno interrotto, e l’ho ricopiata tre turni dopo. La logistica, invece, ha richiesto 35 minuti e 40 chiamate agli strumenti, e il progetto è passato a 85 test.
Immagini da rifare
Diversi lotti di immagini sono andati rifatti. Al turno 36, le icone dei sei nuovi edifici si somigliavano tutte e non avevano la resa della trappola a vento disegnata due giorni prima. Rifarle una per una, insieme all’integrazione delle nuove unità, ha richiesto 47 min 54 s e 67 chiamate agli strumenti, per 16,16 $ a tariffa API, il turno più caro della sessione.
Astra individuava anche difetti prima di me. Le sue prime tavole di fanteria in otto direzioni mostravano viste troppo simili tra loro, e le ha rifatte prima di integrarle. Al turno 41, due generazioni di texture, la roccia e i detriti, sono tornate senza immagine, e le ha rilanciate.
Quando Astra ha verificato il gioco originale
Più volte Astra è andato a leggere il manuale di Dune 2000 prima di applicare una richiesta. Volevo sapere se il gioco originale associava un Carryall a ogni raffineria. Astra ha risposto di no, citando le pagine 16, 17 e 45 del manuale del 1998. Ogni raffineria consegna un harvester, portato da un Carryall, e i Carryall da trasporto si costruiscono a parte, nella fabbrica ad alta tecnologia. Ho riletto quelle pagine, e dicono proprio questo.
La sera dell’8 settembre chiedevo di poter costruire sulla sabbia posando lastre di cemento. Astra ha prima ricordato che il gioco originale riserva le costruzioni alla roccia, dove le lastre proteggono gli edifici dall’usura, poi ha applicato la mia variante. Un edificio piazzato sulla roccia nuda parte danneggiato, una posizione interamente cementata gli dà tutti i punti vita, e il cantiere iniziale poggia su nove lastre. I vermi delle sabbie aggirano questo cemento, anche se posato sulla sabbia, e il giorno dopo ho ridotto la lastra a una casella, piazzata con un clic o trascinando, per 5 crediti a casella.
Effetti sonori e voci generati con ElevenLabs
I primi suoni erano sintetizzati dal codice. Al turno 13 ho chiesto di passare a ElevenLabs con uno skill. Astra ha installato lo skill ufficiale sound-effects di ElevenLabs e preparato un file .env.local escluso da Git per la chiave. La prima chiave è stata rifiutata (401 invalid_api_key). La seconda, valida 24 ore, ha prodotto 20 effetti con il modello eleven_text_to_sound_v2, convertiti in WAV mono da FFmpeg.
L’8 settembre sono arrivati 34 annunci vocali in francese, da «Alerte ! Notre base est attaquée» (Allarme! La nostra base è sotto attacco) a «Commandant, votre base est opérationnelle» (Comandante, la vostra base è operativa). Poiché la voce francese della libreria di ElevenLabs è riservata ai piani a pagamento, Astra ha scelto una voce multilingue standard con eleven_multilingual_v2, poi ha fatto trascrivere i 34 file da Scribe v2 per verificare ogni frase. Gli annunci passano da una coda di priorità, abbassano la musica e compaiono come sottotitoli. Al turno 39 sono seguiti dodici effetti sonori per i veicoli.
La musica non è stata generata. Command of the Scorched Plain è un file MP3 che ho fornito io, riprodotto in loop con un volume proprio. Tutti i suoni sono serviti dal progetto, senza chiamate API durante la partita, e la scadenza della chiave non cambia nulla nella loro riproduzione.
Tempo, token e costo
Ogni risposta del modello lascia una riga token_usage_record nel log di sessione, salvato in ~/.codex/sessions/. Questo comando ne calcola il totale senza caricare tutto il log in memoria:
jq -c 'select(.type == "token_usage_record") | .payload.usage' \
~/.codex/sessions/2026/09/06/rollout-2026-09-06T13-20-25-01a07672-bb68-7500-b23a-db1fc7ccbe3e.jsonl \
| jq -s '{reponses: length, entree: (map(.input_tokens) | add), cache: (map(.cached_input_tokens) | add), sortie: (map(.output_tokens) | add)}'{
"reponses": 856,
"entree": 120107006,
"cache": 116244736,
"sortie": 822700
}| Misura | Clone di Dune 2000 |
|---|---|
| Periodo | dal 6 settembre alle 13:23 al 9 settembre alle 11:26 (ora di Parigi) |
| Lavoro dell’agente | 11 h 16 min su 46 turni |
| Risposte del modello | 856 |
| Chiamate agli strumenti | 800 |
| Compattazioni del contesto | 15 |
| Token in ingresso | 120.107.006, di cui 116.244.736 letti dalla cache (96,8%) |
| Token in uscita | 822.700, di cui 264.688 di ragionamento |
| Costo a tariffa API | 196,00 $ |
Il calcolo segue il listino di GPT-6 Astra pubblicato su OpenRouter e rilevato il 14 settembre 2026, cioè 10 $ per milione di token in ingresso, 1 $ in lettura dalla cache e 50 $ in uscita sotto i 272.000 token di contesto. La finestra di Codex arrivava al massimo a 258.400 token, quindi tutte le richieste restano in questa fascia. Ne risultano 38,62 $ di ingresso non in cache, 116,24 $ di cache e 41,14 $ di uscita.
Non ho pagato nulla a consumo. Codex girava con il mio abbonamento ChatGPT, che conteggia l’uso in quota, e questo importo serve da riferimento. Senza cache, i soli token in ingresso sarebbero costati 1.201 $, quasi otto volte i 154,87 $ conteggiati. Una correzione del cursore, al turno 4, ha richiesto 1 min 24 s e 0,86 $. Per collocare GPT-6 Astra rispetto a Claude Fable 5.1 su un esercizio più breve, vedi il nostro confronto in three.js.
Cosa contiene la cartella
Il progetto finale conta 41 file sorgente (3.261 righe, 332 KB), 956 righe di test e 2.172 righe di script. La cartella public/ serve 227 immagini PNG, 57 WebP, 32 file WAV e 35 MP3, e undici file JSON conservano i prompt delle immagini generate. Il prototipo non usa nessun file di Dune 2000, i suoi sprite, artwork e suoni sono stati prodotti apposta.
Si tratta di una schermaglia in solitario contro l’IA, senza campagna, senza multigiocatore e senza salvataggi. Le regole di OpenRA sono state adattate quando lo chiedevo, come il cemento sulla sabbia o la produzione parallela, dove due fabbriche dimezzano il tempo di produzione di un carro e tre lo riducono a un terzo. Lo stesso agente ha poi costruito un RPG in una serata con un metodo del tutto diverso, descritto in creare un gioco con ChatGPT, un RPG in stile EarthBound.
Cosa ricordare
- Codex e GPT-6 Astra hanno prodotto un gioco di strategia in tempo reale giocabile in 46 turni e 11 h 16 min di lavoro dell’agente, con 54 messaggi da parte mia per correggere il tiro.
- OpenRA ha fornito le regole di partenza, e il manuale del 1998 ha risolto la questione del Carryall e quella delle lastre di cemento.
- Un’interruzione cancella le richieste del turno in corso. Per due volte è stato necessario reinviarle.
- I test sono passati da 11 a 122 senza che li chiedessi, e nessuno ha visto arrivare la regressione negli spostamenti del turno 17.
- È la cache a determinare il conto. Il 96,8% dei token in ingresso è stato riletto a 1 $ al milione invece di 10 $, per 196 $ in totale a tariffa API.
Errori frequenti
npm run test:pathfinding qui, prima di convalidare.~/.codex/sessions/…/rollout-….jsonl. Mettila in .env.local, escluso da Git, e dai all'agente solo il nome della variabile.danger-full-access, senza approvazioni. Riserva questa impostazione a una cartella usa e getta, senza chiavi di produzione a portata di mano.

