Créer un jeu vidéo avec l’IA : un clone de Dune 2000 par Codex

Du 6 au 9 septembre 2026, j'ai fait construire par Codex et GPT-6 Astra un clone jouable de Dune 2000 en HTML, CSS et JavaScript. Quarante-six tours plus tard, le prototype passe 122 tests et parle français, pour l'équivalent de 196 $ au tarif de l'API.

Créer un jeu vidéo avec l’IA : un clone de Dune 2000 par Codex
Réponse rapide

Codex, avec GPT-6 Astra, a créé un clone jouable de Dune 2000 en HTML, CSS et JavaScript en 46 tours, soit 11 h 16 min de travail de l'agent. Le jeu compte des sprites générés, 34 annonces vocales en français et 122 tests, au prix de 54 messages et 12 captures d'écran pour corriger ses erreurs. La session revient à environ 196 $ au tarif de l'API, couverte ici par un abonnement ChatGPT.

Sur Google, la réponse générée pour « créer un jeu avec l’IA » propose de faire écrire un mini-jeu en HTML par ChatGPT ou Claude. J’ai voulu voir ce que donne un projet plus lourd, un clone de Dune 2000 confié pendant trois jours à un agent de code.

Dune 2000 est le jeu de stratégie en temps réel développé par Westwood Studios et sorti en 1998, remake de Dune II. L’agent est l’application de bureau Codex, avec le modèle GPT-6 Astra réglé sur l’effort de raisonnement xhigh. Les chiffres qui suivent viennent de son journal de session, un fichier JSONL de 1,3 Go, et des tests du projet relancés le 14 septembre 2026.

Le prototype final se lance ci-dessous, dans votre navigateur. Ses 51,6 Mo ne se chargent qu’au clic sur « Tester ».

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.

Protocole

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.

ACodex · GPT-6 Astragpt-6-astra (xhigh)

Le projet s’exécute dans une sandbox isolée (iframe sandbox et CSP) : aucun accès au site, aux cookies ni à votre session. Rien ne se charge avant votre clic.

Ouvrir à part
Éditeur
OpenAI
Modèle
gpt-6-astra (xhigh)
Outil
Codex, application de bureau
Date
2026-09-09
Durée
11 h 16 min de travail sur 46 tours
Tokens en entrée
120 107 006, dont 116 244 736 lus en cache
Tokens en sortie
822 700, dont 264 688 de raisonnement
Coût
abonnement ChatGPT (≈ 196 $ au tarif API)
Poids du projet
51,6 Mo, 393 fichiers
Notes
Clic gauche pour sélectionner, clic droit pour donner un ordre, A pour attaquer en se déplaçant, Espace pour la pause, ? pour l'aide. 122 tests Node au 14 septembre 2026.

Le prompt de départ

Le premier message faisait 66 mots. Le voici, corrigé de ses seules fautes de frappe.

Je veux que tu crées un clone de Dune 2000 en HTML CSS et JavaScript en te basant sur le projet OpenRA comme aide, tu es libre de générer les sprites que tu veux et dont tu as besoin, incluant les animations liées à ces derniers. Je veux un prototype jouable d’une partie en 1v1 Atréides contre Harkonnen. Le projet OpenRA est présent dans le dossier /Projets/OpenRA-bleed.

OpenRA est un moteur libre de jeux de stratégie en temps réel, écrit en C#, qui fait tourner Dune 2000 et les premiers Command & Conquer. Astra n’en a pas porté le code. Il y a puisé les règles du mod d2k, coûts, économie et chaînes de prérequis, puis écrit une simulation JavaScript indépendante du rendu, testable dans Node, affichée avec Phaser 3.90.

Je n’ai donné aucune consigne d’organisation. Astra a lu de lui-même les skills du plugin Game Studio publié par OpenAI (web-game-foundations, phaser-2d-game, sprite-pipeline, game-ui-frontend, game-playtest) et le skill imagegen, qui génère les images dans Codex. Ce sont des fichiers SKILL.md que l’agent charge avant d’agir, sur le principe détaillé dans notre guide des Agent Skills.

La session a tourné sans sandbox et sans demande d’approbation (danger-full-access, approbations sur never). Astra pouvait lancer Chrome, installer des paquets npm et écrire partout sur le disque, sans aucun des garde-fous décrits dans notre article sur ce que la sandbox de Codex bloque.

Trente et une minutes pour une première partie

Le premier tour a duré 31 min 30 s pour 25 appels d’outils. Astra a généré les sprites des bâtiments, de la moissonneuse, des chars et de l’infanterie, puis codé la récolte d’épice, l’énergie, les files de production, le combat et une IA harkonnen qui attaque par vagues. Le brouillard de guerre, la minicarte, la sélection au rectangle et le déplacement offensif sur la touche A étaient là dès ce tour.

Il a terminé par onze tests de simulation, des essais dans Chrome pilotés par Playwright et une partie automatisée qui gagne en difficulté Découverte. Le tour a coûté l’équivalent de 5,96 $ au tarif de l’API.

La partie tournait, sans ressembler encore à Dune 2000. Mon deuxième message listait ce qui manquait : des animations, des canons de char qui s’orientent, plus de textures de sol, des unités propres aux Harkonnens et une construction accélérée. En 32 minutes, Astra a séparé châssis et tourelles pour viser à 360°, dessiné une armée harkonnen noir et rouge avec quad et Dévastator à deux canons, et fait monter chaque bâtiment en 4 à 6 secondes avec fondations, échafaudage et grue. Le projet comptait alors 17 tests.

Quarante-six tours en trois journées

Un tour commence avec mon message et finit avec la réponse d’Astra. Entre les deux, l’agent enchaîne seul commandes, générations d’images, captures du navigateur et tests. J’ai envoyé 54 messages, joint 12 captures d’écran, souvent annotées directement sur la page du jeu dans le navigateur de Codex, et interrompu 4 tours.

Journée Tours Travail de l’agent Principales demandes Tests en fin de journée Coût au tarif de l’API
6 septembre 20 5 h 01 animations, 157 tuiles de terrain, huit directions pour l’infanterie, vers des sables, curseurs, premiers sons ElevenLabs 56 83,86 $
8 septembre 23 5 h 51 interface du jeu d’origine, voix françaises, Carryall, six bâtiments et leurs unités, textures, décors, dalles de béton 119 100,53 $
9 septembre 3 24 min dalles d’une case posées au glisser 122 11,62 $

Astra a ajouté des tests à chaque fonctionnalité sans que j’en demande un seul. Le compteur est passé de 11 à 17, 24, 29, 33, 41, 44, 51, 56, 67, 69, 75, 85, 90, 106, 111, 119, puis 122 le 9 septembre. Relancés le 14, les 122 tests Node passent en 2,1 secondes. Le projet contient aussi 24 parcours de navigateur, un par grande fonctionnalité, et 16 scripts qui préparent les images et les sons.

Là où Astra s’est trompé

Une correction qui casse les déplacements

Au tour 12, je signalais des chars dont les sprites se chevauchaient. Astra a mesuré des véhicules qui s’approchaient à 30 pixels alors que leur châssis en mesure plus de 60, puis donné à chacun un espace de collision à sa taille. Un assaut de douze véhicules harkonnens, zoomé à 165 %, a validé la correction, et les 51 tests passaient.

Cinq tours plus loin, les unités s’espaçaient beaucoup trop et certaines refusaient de passer entre deux bâtiments bien assez éloignés. Astra a trouvé deux causes, dont sa propre correction. Les collisions couvraient toute la diagonale des sprites, et la grille de navigation masquait des passages. La réparation a pris 24 min 54 s et 32 appels d’outils, avec une grille de 16 pixels, une empreinte au sol par véhicule et des unités qui s’écartent pour laisser passer. Le test du tour 12 mesurait le chevauchement des châssis et rien d’autre, il ne pouvait pas voir cette régression.

Ce qu’une interruption fait perdre

Le 8 septembre, un même message demandait des moissonneuses différentes pour chaque maison, un Carryall qui les ramène à la raffinerie, des raffineries qui ne déchargent qu’une moissonneuse à la fois, six bâtiments du jeu d’origine et leurs unités. Au bout de six minutes, j’ai interrompu ce tour pour envoyer une capture de la moissonneuse d’origine. Astra a redessiné la moissonneuse en huit orientations, et rien d’autre.

Au message suivant, j’ai dû écrire « Tu n’as pas fait », suivi du Carryall et des quais oubliés. La réponse d’Astra tient en une phrase, « Tu as raison, j’ai terminé les sprites sans ajouter la logistique demandée ». Le même jour, une annotation sur des petites montagnes réutilisées en cailloux dans le sable s’est perdue de la même façon avec un tour interrompu, et je l’ai recopiée trois tours plus tard. La logistique, elle, a demandé 35 minutes et 40 appels d’outils, et le projet est passé à 85 tests.

Des images à refaire

Plusieurs lots d’images ont dû être refaits. Au tour 36, les vignettes des six nouveaux bâtiments se ressemblaient toutes et n’avaient pas le rendu du piège à vent dessiné deux jours plus tôt. Les refaire une par une, en même temps que l’intégration des nouvelles unités, a pris 47 min 54 s et 67 appels d’outils, pour 16,16 $ au tarif de l’API, le tour le plus cher de la session.

Astra repérait aussi des défauts avant moi. Ses premières planches d’infanterie en huit directions montraient des vues trop proches les unes des autres, et il les a refaites avant de les intégrer. Au tour 41, deux générations de textures, la roche et les éboulis, sont revenues sans image, et il les a relancées.

Quand Astra a vérifié le jeu d’origine

Plusieurs fois, Astra est allé lire le manuel de Dune 2000 avant d’appliquer une demande. Je voulais savoir si le jeu d’origine associait un Carryall à chaque raffinerie. Astra a répondu non, en citant les pages 16, 17 et 45 du manuel de 1998. Chaque raffinerie livre une moissonneuse, apportée par un Carryall, et les Carryalls de transport se construisent à part, à l’usine haute technologie. J’ai relu ces pages, elles disent bien cela.

Le soir du 8 septembre, je demandais de pouvoir bâtir sur le sable en posant des dalles de béton. Astra a d’abord rappelé que le jeu d’origine réserve les constructions à la roche, où les dalles protègent les bâtiments de l’usure, puis a appliqué ma variante. Un bâtiment posé sur la roche nue démarre endommagé, un emplacement entièrement bétonné lui donne tous ses points de vie, et le chantier de départ repose sur neuf dalles. Les vers des sables contournent ce béton, même posé sur le sable, et le lendemain j’ai ramené la dalle à une case, posée au clic ou au glisser pour 5 crédits la case.

Bruitages et voix générés avec ElevenLabs

Les premiers sons étaient synthétisés par le code. Au tour 13, j’ai demandé à passer par ElevenLabs avec un skill. Astra a installé le skill officiel sound-effects d’ElevenLabs et préparé un fichier .env.local exclu de Git pour la clé. La première clé a été refusée (401 invalid_api_key). La seconde, valable 24 heures, a produit 20 effets avec le modèle eleven_text_to_sound_v2, convertis en WAV mono par FFmpeg.

Le 8 septembre sont arrivées 34 annonces vocales en français, de « Alerte ! Notre base est attaquée » à « Commandant, votre base est opérationnelle ». La voix française de la bibliothèque d’ElevenLabs étant réservée aux formules payantes, Astra a pris une voix multilingue standard avec eleven_multilingual_v2, puis a fait transcrire les 34 fichiers par Scribe v2 pour vérifier chaque phrase. Les annonces passent par une file de priorité, baissent la musique et s’affichent en sous-titres. Douze bruitages de véhicules ont suivi au tour 39.

La musique n’a pas été générée. Command of the Scorched Plain est un fichier MP3 que j’ai fourni, joué en boucle avec son propre volume. Tous les sons sont servis depuis le projet, sans appel d’API pendant la partie, et l’expiration de la clé ne change rien à leur lecture.

Temps, tokens et coût

Chaque réponse du modèle laisse une ligne token_usage_record dans le journal de session, rangé sous ~/.codex/sessions/. Cette commande en fait le total sans charger tout le journal en mémoire :

bash
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)}'
json
{
  "reponses": 856,
  "entree": 120107006,
  "cache": 116244736,
  "sortie": 822700
}
Mesure Clone de Dune 2000
Période du 6 septembre, 13 h 23, au 9 septembre, 11 h 26 (heure de Paris)
Travail de l’agent 11 h 16 min sur 46 tours
Réponses du modèle 856
Appels d’outils 800
Compactions du contexte 15
Tokens en entrée 120 107 006, dont 116 244 736 lus en cache (96,8 %)
Tokens en sortie 822 700, dont 264 688 de raisonnement
Coût au tarif de l’API 196,00 $

Le calcul suit la grille de GPT-6 Astra publiée sur OpenRouter et relevée le 14 septembre 2026, soit 10 $ par million de tokens en entrée, 1 $ en lecture de cache et 50 $ en sortie sous 272 000 tokens de contexte. La fenêtre de Codex plafonnait à 258 400 tokens, toutes les requêtes restent donc dans cette tranche. Cela donne 38,62 $ d’entrée non mise en cache, 116,24 $ de cache et 41,14 $ de sortie.

Je n’ai rien payé à l’unité. Codex tournait avec mon abonnement ChatGPT, qui décompte l’usage en quota, et ce montant sert de repère. Sans cache, les seuls tokens d’entrée auraient coûté 1 201 $, près de huit fois les 154,87 $ comptés. Une correction de curseur, au tour 4, a pris 1 min 24 s et 0,86 $. Pour situer GPT-6 Astra face à Claude Fable 5.1 sur un exercice plus court, voir notre comparatif en three.js.

Ce que contient le dossier

Le projet final compte 41 fichiers source (3 261 lignes, 332 Ko), 956 lignes de tests et 2 172 lignes de scripts. Le dossier public/ sert 227 images PNG, 57 WebP, 32 fichiers WAV et 35 MP3, et onze fichiers JSON conservent les prompts des images générées. Le prototype n’utilise aucun fichier de Dune 2000, ses sprites, artworks et sons ont été produits pour lui.

Il s’agit d’une escarmouche en solo contre l’IA, sans campagne, sans multijoueur et sans sauvegarde. Les règles d’OpenRA ont été adaptées quand je le demandais, comme le béton sur le sable ou la production parallèle, où deux usines divisent par deux le temps de fabrication d’un char et trois le divisent par trois. Le même agent a ensuite construit un RPG en une soirée avec une tout autre méthode, décrite dans créer un jeu avec ChatGPT, un RPG façon EarthBound.

Ce qu’il faut retenir

  • Codex et GPT-6 Astra ont produit un jeu de stratégie en temps réel jouable en 46 tours et 11 h 16 de travail de l’agent, avec 54 messages de ma part pour corriger le tir.
  • OpenRA a fourni les règles de départ, et le manuel de 1998 a tranché la question du Carryall et celle des dalles de béton.
  • Une interruption efface les demandes du tour en cours. Deux fois, il a fallu les renvoyer.
  • Les tests sont passés de 11 à 122 sans que je les demande, et aucun n’a vu venir la régression de déplacement du tour 17.
  • Le cache fait la facture. 96,8 % des tokens d’entrée ont été relus à 1 $ le million au lieu de 10 $, pour 196 $ au total au tarif de l’API.

Erreurs fréquentes

Interrompre un tour sans renvoyer sa demande Les demandes d'un tour interrompu ne sont pas reprises. Le Carryall et une annotation sur le décor se sont perdus ainsi. Recopiez la demande dans le message qui suit l'interruption.
Valider une correction de collisions sans parcours de passage Élargir les collisions des chars a bloqué l'infanterie entre deux bâtiments. Faites écrire un parcours qui traverse un passage étroit, comme npm run test:pathfinding ici, avant de valider.
Coller une clé d'API dans la conversation Elle reste en clair dans le journal ~/.codex/sessions/…/rollout-….jsonl. Placez-la dans .env.local, exclu de Git, et ne donnez à l'agent que le nom de la variable.
Accepter un lot d'images générées sans référence de style Six vignettes de bâtiments produites d'un coup se ressemblaient et ne suivaient plus le style des premières. Donnez une image déjà validée comme modèle, ici le piège à vent.
Laisser l'agent sans sandbox sur un vrai projet Cette session tournait en danger-full-access, sans approbation. Réservez ce réglage à un dossier jetable, sans clé de production à portée.

CodexGPT-6 AstraJavaScriptJeu vidéoPhaser

Damien Flandrin Développeur web depuis 2010, créateur de Gekkode et d’Email Impact. Chaque article est testé sur un projet réel avant publication. Contact
Newsletter

Les nouveaux tests, tutoriels et projets, par e-mail.

Tests reproductibles, code versionné, résultats datés. Jamais de spam.