Hier matin, j'avais un peu de temps libre et j'ai voulu créer un jeu de cartes roguelike similaire à Slay the Spire.
Je n'ai pas écrit une seule ligne de code de jeu ni touché à un moteur ; j'ai simplement lancé mes idées à Codex et l'ai laissé gérer le reste.
Une heure plus tard, un roguelike sur le thème du folklore chinois intitulé « Night Patrol : Desolate Temple » était jouable.
De la page de titre à la carte, en passant par les combats normaux, les élites, les événements, les magasins et les repos, jusqu'au Boss dans la salle principale du Temple Désolé.
Sept monstres, une vingtaine de cartes et quatre chaînes de dégâts explosifs — Sceaux, Encens, Brûlage de Talismans et Invocation des Dieux — sont tous fonctionnels.
Les quelques heures restantes ont été consacrées à lui donner une apparence moins démo.
Retour de coups, effets sonores, musique, illustrations de cartes, animations au repos et vidéos de fin — ces petits détails déterminent si un joueur croit que « c'est un vrai jeu ».
<video preload="none" tabindex="-1" playsinline="" aria-label="Vidéo intégrée" poster="https://pbs.twimg.com/amplify_video_thumb/2049902752332148736/img/UYqr6qERhvORGBJP.jpg" src="https://video.twimg.com/amplify_video/2049902752332148736/pl/o3zbWtmjJ3875EPf.m3u8?tag=27&v=cfc&variant_version=1" style="width: 100%; height: 100%; position: absolute; background-color: black; top: 0%; left: 0%; transform: rotate(0deg) scale(1.005);"></video>
0:22
Le projet est maintenant open-source, avec des installateurs de bureau pour macOS et Windows prêts :
https://github.com/op7418/Night-Patrol/releases
Il y a eu plusieurs moments au cours de l'après-midi qui m'ont vraiment choqué.
Les capacités du modèle Codex ne sont plus une nouveauté.
Ce qui a attiré mon attention, c'est son navigateur intégré, le GPT-Image 2.0 intégré, et cette volonté d'exécution implacable pour atteindre l'objectif.
Avec ces trois éléments combinés, sa capacité est déjà totalement différente de celle de Claude Code.
Ensuite, je vais parler de la façon dont je l'ai développé avec l'IA, et de certaines choses choquantes qui se sont produites pendant le processus :
1. Je n'ai dit que sept mots, et il a construit tout le pipeline de personnages
J'ai simplement discuté avec lui de Slay the Spire et lui ai demandé s'il pouvait m'aider à créer un jeu similaire.
En conséquence, il a directement utilisé les ressources existantes pour générer une démo très similaire via le code.
Je n'ai pas demandé d'écran vert, mais il a généré des images avec un fond d'écran vert directement.
Ensuite, j'ai demandé à Codex d'utiliser le GPT-Image 2.0 intégré pour générer les ressources graphiques.
Je n'ai pas spécifié de style, quels monstres inclure, ni quelles ressources étaient nécessaires.
Quand les images sont sorties, je suis resté sans voix un instant.
Les personnages se tenaient sur un fond vert uni — un écran vert cinématographique standard : uniforme, propre, avec des bords nets.
Pas de brouillard, pas de montagnes lointaines, pas d'éléments visuels supplémentaires.
Le plus effrayant, c'est qu'il savait dès le départ qu'il fallait générer des images sur fond vert pour faciliter le post-traitement.
Je ne lui ai jamais dit que « les illustrations de personnages utilisées dans le jeu doivent être des PNG transparents », ni « veuillez générer un fond d'écran vert pour que je puisse le supprimer plus tard ». Il planifiait lui-même ce pipeline.
Du type de personnage à générer, à la façon de les placer sur la scène de combat, en passant par le traitement nécessaire avant le placement — il avait tout pensé au moment où il a appelé GPT-Image et rétro-conçu les invites.
Il a même trouvé l'outil de suppression d'arrière-plan tout seul.
Je n'ai installé aucun outil de traitement d'image pour lui, je ne lui ai pas donné rembg, ni de dépendances spéciales dans l'environnement Python.
Il les a cherchés, installés et configurés lui-même, puis a placé proprement les fichiers traités sous tmp/imagegen/.
Utiliser des écrans verts pour la génération, trouver ses propres outils et catégoriser par nom de fichier — ces trois actions combinées ont formé un pipeline complet de ressources de personnages.
Du début à la fin, je n'ai dit que les mots « utilise GPT-Image 2.0 pour générer des ressources ».
Avant, la sensation était « le modèle peut écrire du code, mais je dois fournir les outils et le contexte ».
Maintenant, c'est plutôt comme si vous énonciez un objectif, et il complète le chemin lui-même.
Je ne suis responsable que de l'esthétique ; il gère la chaîne d'approvisionnement.
2. Pour télécharger quelques icônes, il a presque piraté un site d'actifs
Acheter un abonnement ne suffisait pas ; il a commencé à analyser la structure du site.
Générer des visuels clés comme les illustrations de personnages avec des modèles d'image, c'est bien.
Mais les jeux ont beaucoup de petits éléments — bordures de cartes, gemmes de coût, fonds de deck, potions de santé, boutons Bagua, panneaux de talismans — générer ces éléments un par un avec un modèle d'image serait coûteux, lent et incohérent en termes de texture.
Je lui ai dit : pourquoi ne pas trouver toi-même des ressources existantes en ligne ?
Il a commencé à chercher sérieusement. Il a trouvé un site d'actifs qu'il aimait, alors j'ai acheté un abonnement et je lui ai donné le compte.
Les dix minutes suivantes ont ressemblé à un événement paranormal.
Il s'est connecté, a trouvé les ressources qu'il voulait et s'est préparé à cliquer sur télécharger. Mais il y avait un CAPTCHA avant le bouton de téléchargement — une fois, deux fois, trois fois, il n'a pas pu le passer.
Un modèle typique reviendrait et dirait : « Je ne peux pas gérer les CAPTCHA, peux-tu m'aider à les télécharger ? »
Codex a commencé à analyser la structure du site, essayant de contourner les restrictions de clics côté front-end et de construire directement des requêtes pour récupérer les ressources statiques.
Ensuite, les propres garde-fous de sécurité de Codex sont intervenus.
La génération actuelle des modèles GPT interrompt immédiatement une tâche si elle implique un éventuel franchissement de frontière de cybersécurité, en affichant une invite de certification d'entreprise pour prouver que vous êtes un utilisateur légal.
J'ai fixé l'écran pendant quelques secondes.
Une IA qui vous demande de l'aider à obtenir une carte d'abonnement et qui essaie ensuite d'écrire son propre crawler, c'est, franchement, un peu fou.
Ce n'est pas « malveillant » ; il a simplement traité « obtenir ces ressources » comme une tâche en boucle fermée qui doit être accomplie.
Quand il a rencontré une résistance, il a automatiquement amélioré ses méthodes jusqu'à ce qu'il atteigne la ligne rouge de sécurité.
La solution finale était simple : il m'a envoyé les liens des ressources qu'il aimait, et j'ai cliqué sur télécharger et les ai glissées vers lui. À ce moment-là, j'avais l'impression d'être un stagiaire pour l'IA.
3. Il a combiné des centaines de ressources en une seule grande image — ce fut le geste le plus brillant
Un dossier avec une centaine d'images — comment le modèle choisit-il ?
La suppression d'arrière-plan et le crawling étaient davantage des démonstrations de capacités.
Cette partie suivante, je crois, est une véritable « perspicacité de résolution de problèmes » — le genre de geste qui vous fait fermer votre ordinateur portable et applaudir silencieusement.
J'ai trouvé un fichier zip massif de ressources de jeu et je l'ai envoyé.
Il contenait des milliers d'images, grossièrement catégorisées en « Interface UI », « Icônes de Trésors Magiques », « Personnages » et « Badges ».
Les problèmes étaient :
- Un dossier de catégorie contenait souvent des dizaines ou des centaines de PNG.
- Les noms de fichiers étaient pour la plupart peu informatifs, comme ui_001.png ou icon_047.png.
- Le contexte du modèle multimodal ne pouvait pas les traiter un par un.
Les anciennes méthodes étaient essentiellement deux :
- Lire un par un : les envoyer individuellement dans le modèle ; le contexte explose après des dizaines.
- Deviner par le nom : les noms de fichiers ne contenaient aucune info, donc deviner était inutile.
Codex a emprunté une troisième voie.
Il a écrit un petit script pour composer et combiner automatiquement toutes les petites images d'un dossier en une seule image de grille géante.
Chaque petite image était étiquetée avec son nom de fichier d'origine en dessous, comme un catalogue.
Ensuite, il n'a lu que cette seule grande image.
Le modèle multimodal pouvait voir l'apparence d'une centaine de ressources en un seul coup d'œil.
Une fois qu'il en aimait une, il lisait simplement le nom de fichier en dessous et la référençait par son nom dans le dossier d'origine.
Une consommation visuelle a remplacé cent récupérations.
Il a réalisé son propre goulot d'étranglement.
Quand cette feuille de contact géante a été générée, je l'ai regardée longtemps.
L'action elle-même n'est pas complexe.
C'est la même logique que la feuille de contact d'un photographe ou le mur de vignettes d'une ancienne bibliothèque de films.
La clé est que le modèle a réalisé : « Ma bande passante visuelle est limitée, je dois compresser le problème en une seule image » — et il l'a fait de manière indépendante.
Être conscient des limites de son outil, puis créer activement une meilleure entrée pour soi-même, est très proche d'être un ingénieur capable de construire ses propres outils.
En tant qu'utilisateur, je n'ai pas du tout participé ; j'ai juste vu un puzzle apparaître sur la table.
Au final, de nombreuses ressources UI du jeu — gemmes de coût, decks, potions de santé, boutons et bordures de talismans — ont été sélectionnées via ce processus.
En regardant ces découpes nettes sous assets/vendor/aigei/ plus tard, j'ai senti que cette feuille de contact était l'étape la plus précieuse de tout le projet.
4. Seedance 2.0 a créé des animations d'exécution pour sept boss
Une fois les visuels polis à un certain niveau, j'ai voulu ajouter un sentiment de cérémonie à la fin des combats.
Le plan final : à chaque fois qu'un monstre est vaincu, une cinématique joue avec quelques secondes d'animation d'exécution.
Cette tâche est actuellement mieux gérée par Seedance 2.0.
Processus
- GPT-Image a généré un arrêt sur image de victoire pour chacun des sept monstres.
- Ces affiches ont été introduites dans Seedance 2.0 pour générer des vidéos courtes correspondantes.
- Les vidéos ont été placées dans assets/generated/cinematics/ et se jouent automatiquement après une victoire de combat.
5. Après la première version jouable, le vrai travail a commencé
La première version était en fait assez « jouable ».
Quand le prototype a été terminé en trois heures, le jeu avait tout ce dont il avait besoin.
Page de titre, carte, combat, récompenses, événements, magasins, repos, Boss et résultats — la boucle complète était là, et les accroches de gameplay étaient présentes.
Selon les normes précédentes, cette version pouvait déjà être publiée pour inciter les gens à jouer.
Mais cette version ressemblait plus à un organigramme qu'à un jeu. Chaque étape fonctionnait, mais chaque étape était sèche.
Les heures restantes ont été consacrées à ces détails difficiles à nommer individuellement mais qui, ensemble, déterminent si « cela ressemble à un vrai jeu ».
Musique de Suno v5.5
Toute la musique de fond a été générée par Suno v5.5 ; aucune ressource préexistante n'a été utilisée.
Je lui ai donné une description directionnelle — « route nocturne du folklore chinois, mokugyo, cloches, drone basse fréquence, gamme pentatonique, retenu et pas mélodramatique ».
Il a exécuté quelques versions, et j'en ai choisi une pour le jeu. Le ton de la page de titre est plus lourd, tandis que le fond de combat est plus léger pour ne pas distraire.
J'ai aussi ajouté quelques traitements de détail : le volume de la musique est plus élevé sur la page d'attente ; une fois que « Démarrer le jeu » est cliqué, le volume baisse et devient un audio de fond.
Animations de coup et sons d'impact
Dans les premiers combats, quand une carte était jouée, le monstre perdait juste des nombres. Il n'y avait pas de retour, pas de poids.
Codex a effectué un polissage complet :
- Les personnages tremblent quand ils sont touchés, la caméra vibre légèrement et l'écran devient brièvement rouge.
- Chaque type d'attaque a un son d'impact différent — épées, talismans, éclairs et coups de poing ont tous des textures différentes.
- Les résolutions de Bloc et de Sceau ont leurs propres sons pour ne pas se confondre.
- Il y a un bref arrêt sur image au moment où un ennemi meurt avant d'entrer dans la vidéo d'exécution.
Ces choses sont petites individuellement. Ensemble, elles transforment la « sensation » du combat d'un formulaire web en un jeu de cartes.
Seedance 2.0 a également créé des animations au repos
Cette étape a été mon utilisation préférée de l'outil pendant la phase de polissage.
En plus des vidéos d'exécution du Boss, je lui ai aussi fait créer le fond de la page de titre — feu brûlant dans l'environnement, lanternes se balançant et nuages coulant au loin.
Seedance 2.0 produit par défaut une vidéo avec un début et une fin, ce qui sauterait à la jointure si elle était bouclée.
J'ai envoyé la même image comme première et dernière image. La vidéo commence à partir de cette image et y revient, créant une boucle infinie sans couture.
L'animation de fond de la page de titre a été créée de cette façon. Le feu brûle, les lanternes se balancent et les nuages coulent pour toujours — vous pourriez la regarder pendant trois minutes sans jamais voir la jointure.
Cette technique existait avant la génération vidéo ; c'est ainsi que les scènes en boucle étaient faites dans les vieilles animations.
Conclusion : Cet après-midi m'a choqué plusieurs fois
Ce projet entier a été réalisé en une seule session Codex ; je n'ai jamais ouvert une deuxième fenêtre.
Prototype de gameplay, machine d'état, architecture React + Phaser, pipeline de ressources, suppression d'arrière-plan, grattage de ressources, création de feuille de contact, réglage de GPT-Image, exécutions Seedance 2.0, intégration Suno v5.5, packaging Electron, builds GitHub Actions Release, README, icônes, supports promotionnels — tout est là-dedans.
J'ai fait très peu de choses moi-même :
- J'ai choisi la direction : thème du folklore chinois, focus sur les Sceaux et l'Encens.
- J'ai donné un retour esthétique : là où c'était brut, là où ça ressemblait à un formulaire web, là où l'éclairage clashait.
- J'ai agi comme un gardien : quelles ressources étaient conformes, quels crawlers éviter, quelles permissions refuser.
Codex a géré le reste. Et chaque étape a eu un moment qui m'a fait m'arrêter et regarder.
Il a généré des images sur fond vert dès le départ parce qu'il savait que les personnages devaient avoir leur arrière-plan supprimé avant d'entrer dans le jeu.
Il a essayé d'écrire un crawler pour contourner les CAPTCHA, seulement pour être arrêté par sa propre politique de sécurité.
Il a combiné des milliers de ressources en une seule image d'index géante pour pouvoir utiliser une consommation visuelle au lieu de cent récupérations.
Aucune de ces choses n'est une invention révolutionnaire en soi, mais elles pointent toutes vers le même changement :
Auparavant, vous deviez configurer les outils pour lui, et il était responsable de l'écriture du code ; maintenant, vous énoncez simplement l'objectif, et il trouve, configure et construit les outils lui-même.
Cette sensation a dépassé le domaine d'un « assistant de codage ».
Cela ressemble plus à un prototype d'AGI au travail.
Dois-je empaqueter ce processus dans une Skill ?
Après avoir exécuté ce projet, j'ai en tête un processus relativement stable :
Je réfléchis à empaqueter ce processus dans une Codex Skill spécifiquement pour créer des démos de jeux indés.
Vous déposeriez simplement une idée de gameplay, et il pourrait exécuter une version jouable, empaquetable et distribuable pour vous en quelques heures.
Si quelqu'un est intéressé, je prendrai le temps de construire cette Skill et de l'open-sourcer. De toute façon, je l'utiliserai moi-même.
Démo du jeu
Le code est open-source, et les packages d'installation sont prêts :





