J’ai codé un tower defense avec l’IA et documenté tout le processus
(github.com/maciej-trebacz)- Développeur logiciel depuis 20 ans, mais nouveau dans le développement de jeux, l’auteur a réalisé "Tower of Time", un tower defense basé sur Phaser.js, en s’appuyant pour la première fois sur des agents de codage IA
- L’objectif était de tester les possibilités réelles de l’IA dans le développement de jeux ; le code, tous les prompts IA et l’ensemble du processus de travail ont été documentés sur GitHub
- Plus de 95 % du code a été écrit par l’IA, en combinant plusieurs outils comme Augment Code, Cursor et Claude Sonnet 4
- Le jeu propose un intérêt stratégique original grâce à une fonction de rembobinage du temps, à différentes tours, à un système de gestion de l’énergie et à l’apparition d’ennemis par vagues
- Avec le streaming en direct, l’utilisation d’assets graphiques et sonores, ainsi que les leçons et conseils pratiques tirés du développement, le projet constitue une ressource pédagogique utile aussi bien pour les débutants en jeu vidéo que pour les novices en IA
Présentation de Tower of Time
- Ce projet avait pour objectif de tester s’il est possible de développer un vrai jeu avec des outils de codage IA
- En découvrant pour la première fois Phaser.js, un moteur de jeu JavaScript, l’auteur a participé à la Beginner's Jam Summer 2025 et achevé "Tower of Time" en 25 à 30 heures
- L’ensemble du processus de développement, tous les prompts, le code, la documentation et le lien de jeu ont été consignés sur GitHub
Présentation du jeu
- Tower of Time est un tower defense sur le thème du voyage dans le temps, dans lequel le joueur repousse des ennemis arrivant par vagues et peut, en situation critique, rembobiner le temps pour repenser sa stratégie
- Le jeu combine plusieurs types de tours (de base, sniper, ralentissement, splash, etc.) avec un système d’énergie utilisé pour construire les tours et rembobiner le temps
- Principales caractéristiques
- Rembobinage du temps : dans un moment défavorable, il est possible de revenir à un état antérieur pour réorganiser sa défense
- Diversité des tours : chaque type de tour permet d’élaborer différentes stratégies défensives
- Gestion de l’énergie : un aspect de gestion des ressources qui oblige à réfléchir soigneusement à l’usage de l’énergie
- Commandes
- Prise en charge du clavier/de la manette (déplacement : flèches/stick, action : espace/bouton de manette, rembobinage : retour arrière/gâchette)
Expérimentation en codage IA et processus de développement
- Environ 95 % de l’ensemble du code a été écrit par l’IA (Claude Sonnet 4, OpenAI, Augment Code, Cursor, etc.)
- Tous les prompts importants, les tâtonnements et le résultat final ont été consignés dans le dépôt via
PROMPTS.md - Avantages de la génération automatique de code par l’IA : prototypage rapide, automatisation des tâches de code répétitives, facilité de documentation
- Limites et points de vigilance : tendance de l’IA à produire trop de code, nécessité de repenser les prompts ou de revenir en arrière en cas de problème d’implémentation, usage recommandé des logs de débogage
Enseignements tirés du développement
- Même avec le seul codage assisté par IA, il est tout à fait possible de réaliser un jeu amusant
- La qualité des prompts, un contexte clair et une stratégie de débogage sont essentiels
- Il faut surveiller en continu que la quantité de code n’augmente pas inutilement
Stack technique
- Moteur : Phaser 3 (v3.90.0) + Phaser Editor v4
- Langage : TypeScript
- Outil de build : Vite
- Assets graphiques : itch.io, avec certaines retouches manuelles
- Son : freesound.org
Essayer dans le navigateur : Tower of Time
3 commentaires
Je pense que cela pourrait constituer une bonne référence.
Moi aussi, je fais bosser l’IA à fond pour créer un jeu web.
Réactions sur Hacker News
C’est assez amusant de lire une par une les prompts utilisés pour le développement
Les articles sur les « réussites du vibe coding » donnent souvent l’illusion qu’il suffit d’avoir plusieurs agents, une orchestration complexe du code et des règles générées par un LLM pour obtenir magiquement un jeu à partir d’un simple prompt du genre « crée un tower defense avec retour dans le temps, sans défaut ni bug »
Mais les prompts réellement utilisés dans ce projet correspondent justement à la manière qui fonctionne le mieux avec le codage assisté par IA
Découper une idée claire et soigneusement définie en centaines de petits problèmes, et fournir des directives architecturales précises pour les parties vraiment importantes, c’est ce qui marche
En tant que personne qui cumule les rôles de lead technique et de product owner, c’est aussi exactement la bonne méthode quand on travaille avec des humains
70 % de mon travail consiste à transformer la demande abstraite d’un dirigeant — « un jeu de tower time travel, sans bug » — en une série de prompts portés par une vision d’architecture solide, afin que l’équipe puisse travailler sans se marcher dessus tout en conservant un haut niveau d’abstraction
J’ai essayé de créer un petit jeu HTML basé sur le jeu de société Just One, mais même après avoir relancé quatre LLM en boucle, aucun n’a réussi à corriger un bug où le champ de saisie se déplace
Tout le monde dit qu’ils implémentent un jeu d’un seul coup, et moi je n’arrive même pas à réparer le mouvement d’une textbox, donc ça m’étonne
Après le prompt « pas de faille de sécurité, pas de bug », il faut absolument ajouter « pas d’hallucination »
C’est une condition de base pour débuter avec l’IA
La méthode qui fonctionne le mieux pour moi avec le codage IA consiste à faire générer en « one-shot » les fonctionnalités de base ou l’ossature du gameplay, puis à itérer plusieurs fois par-dessus
Si le résultat one-shot n’est pas immédiatement convaincant, je relance aussitôt avec un autre prompt jusqu’à obtenir une base correcte
Je suis totalement d’accord avec cette approche
En fait, mon post récent repose aussi sur cette idée
Faire rédiger d’abord la spec par l’IA avant de coder réduit fortement la friction pour l’humain, ce qui augmente énormément les chances qu’une spec soit réellement écrite
Cela fait plus de 20 ans que je travaille dans le logiciel, et j’ai l’impression que beaucoup de mes collègues restent sceptiques vis-à-vis du codage IA
Récemment, j’ai surtout développé avec l’IA une grosse application d’environ 34 000 lignes, et l’efficacité augmente de façon exponentielle selon la qualité de mes consignes, la structure de l’interaction et l’attention portée au résultat produit, y compris le réajustement de trajectoire
On finit presque par se dire : « au fond, c’est comme n’importe quel autre outil ! »
Sauf que cet outil donne réellement 10 fois plus de levier que n’importe quel « outil x10 » que j’ai connu jusqu’ici
Ce que la plupart des sceptiques ratent, c’est qu’il ne faut pas traiter ces outils comme quelque chose d’entièrement extérieur
Si on décrit mal l’objectif puis qu’on délègue aveuglément, on va droit dans le mur
Un jour, l’IA lira peut-être directement dans nos pensées, mais ce n’est pas le cas aujourd’hui
Pour l’instant, elle révèle surtout sa valeur quand il s’agit de clarifier sa pensée, d’apprendre de nouvelles choses et de traiter rapidement les tâches pénibles
Pour en tirer le maximum, il faut bien intégrer cet outil à son propre processus de réflexion
J’ai beaucoup d’années de programmation derrière moi, mais en matière de jeux, je n’avais quasiment rien fait depuis Hunt the Wumpus au lycée ; récemment, j’ai commencé à créer un nouveau jeu avec l’aide de l’IA
L’IA joue essentiellement trois rôles
(1) Outil d’apprentissage — c’est le plus important, parce qu’elle comprend bien mes questions même quand je ne connais pas le vocabulaire, me donne un point de départ et m’apprend même des choses que je ne savais pas ignorer
(2) Traitement des tâches répétitives ou ennuyeuses — commentaires de code, fichiers de configuration, etc. ; je pourrais le faire moi-même, mais cela me ralentit, alors l’IA le gère correctement
(3) Recherche — un peu comme pour le point (1), l’IA comprend ce que je veux réellement et prend en charge le filtrage ou les recommandations
On peut aussi lui confier la « pensée », mais ce n’est pas nécessaire
Ce n’est pas quelque chose de plus intelligent qu’un humain ; c’est plutôt une sorte de FPU qui va plus vite et en sait davantage
Je suis plutôt du côté sceptique selon les standards de HN, mais en pratique je pousse quand même l’adoption de l’IA dans mon entreprise, et j’écris ce commentaire en demandant encore quelque chose à Claude en parallèle
La raison de ce scepticisme, c’est l’écart entre la façon dont les solutions IA actuelles sont vendues et ce qu’elles font réellement
Toutes les solutions IA, et particulièrement les agents, produisent surtout des résultats inutiles sans le guidage d’une personne compétente
Il y a en réalité très peu d’éléments véritablement « autonomes »
Même la personne qui a inventé l’expression « vibe coding » dit que le secteur fait les choses dans le mauvais ordre
Omettre de préciser que ces outils sont fantastiques mais qu’ils doivent être fermement contrôlés, c’est pratiquement mentir
Ces derniers mois, je suis arrivé à une conclusion assez similaire
Avant, je laissais souvent des commentaires critiques sur l’IA, mais les outils récents se sont clairement beaucoup améliorés
Des tâches qui prenaient auparavant des semaines peuvent maintenant être expédiées en quelques heures
À condition de bien réfléchir aux prompts, de découper finement et de bien s’intégrer à l’IDE
Le plus révolutionnaire, c’est quand on manipule une bibliothèque ou un framework totalement nouveau
Avant, je cherchais comment l’utiliser puis j’adaptais des bouts de code d’exemple ; l’IA propose des approches beaucoup plus intuitives et variées, ce qui me surprend souvent
Même les sceptiques devraient sans doute réessayer
Comme exemple de levier x10, on peut parler des langages
Autrefois, on disait que Lisp et d’autres permettaient d’en faire davantage plus vite ; maintenant, on peut réellement écrire moins de code tout en générant un résultat dans un langage rapide et performant
Le piège, c’est qu’il faut examiner sérieusement les parties du code généré qui ne se vérifient pas facilement
De la même façon que des langages très expressifs ont parfois permis à des gens sans plan préalable de produire des codebases ingérables, on verra la même chose se répéter avec les outils IA
Mais là où j’économise vraiment du temps, c’est moins dans l’écriture de code entièrement neuf que dans l’intégration ou l’amélioration entre ancien et nouveau code
Il y a aussi un énorme bond en débogage
Au lieu de se contenter de
printcomme avant, il suffit maintenant de copier-coller le code et de demander à l’IA : « pourquoi le résultat n’est-il pas ceci mais cela ? », pour obtenir rapidement une cause probable et des pistes de solutionC’est particulièrement énorme pour des sujets où il est difficile d’attacher un debugger, comme le SQL, l’IaC ou les scripts de build
Autre point : la courbe d’apprentissage et le plafond de difficulté sont bien plus élevés qu’on ne l’imagine
On n’obtient pas du tout les mêmes résultats entre utiliser Claude Opus dans un framework d’automatisation complexe et se contenter de copier-coller dans GPT-4o depuis un navigateur
J’ai mis une étoile sur GitHub parce que j’ai trouvé très cool la transparence du processus de développement et le partage des prompts
Le code comme le résultat final me paraissent très beaux
Il est évident que tout n’a pas été fait uniquement par l’IA et qu’il y a aussi eu beaucoup d’implication directe
J’avais arrêté de coder pendant longtemps, puis, encouragé par des amis, j’ai essayé d’écrire un peu de code simple avec l’aide de l’IA
J’ai fini par réaliser un Bubble Wrap à éclater et un silencieux sonore (un bouton qui coupe le son)
Bubble Popper
Silencer
Tu envisages d’accepter des PR ?
Le jeu indé me semble justement être un excellent cas d’usage pour les IA de codage
Le faible niveau de risque et la dimension ludique s’y prêtent parfaitement
Le premier commit contient déjà une grande quantité de code, mais
PROMPTS.mdn’y figure pas encorePar exemple, EnergySystem.ts existe déjà dans le premier commit, alors que dans
PROMPTS.md, on a l’impression que l’IA l’a créé à partir de zéro plus tardJe serais curieux d’avoir plus de détails sur ce point dans l’historique du dépôt
Lien vers le premier commit
Je n’ai pas non plus consigné les prompts au fur et à mesure ; une fois le jeu terminé, je suis remonté dans l’historique de l’outil de chat utilisé pour copier les échanges dans
PROMPTS.mdSi tu veux voir comment le projet a été créé, le mieux est de lire le fichier de prompts du début à la fin
Par exemple, le fichier EnergySystem.ts a été entièrement généré par l’IA à partir d’un prompt du type « je veux implémenter un sous-système d’énergie », après que le pathfinding des ennemis, le spawn et le tir des tours avaient déjà été mis en place
Je n’avais encore jamais entendu parler de l’outil Augment Code
J’aimerais savoir ce qu’il fait, pourquoi il a été choisi, en quoi il diffère des outils concurrents, et s’il est recommandé d’après l’expérience réelle d’utilisation
Je me demande aussi si les deux ont été payés
Le fait d’avoir documenté les prompts est impressionnant et motivant
D’après mon expérience, le « vibe coding » peut parfois avancer très vite, ou au contraire devenir interminable
Si on sait donner des consignes concises et claires, faire une revue de code rapide et comprendre l’architecture, cela peut vraiment accélérer le développement
Moi aussi, j’avais créé un tower defense à une époque, et récemment j’avais pensé à utiliser l’IA pour générer de nouvelles vagues ou ajuster l’équilibrage
Pour permettre à l’IA de « ressentir » le jeu, il faudrait peut-être un protocole qui encode en tokens l’état du jeu visible à l’écran
Le terrain, la position des entités du jeu, et les autres propriétés visibles par le joueur
Passer l’ensemble dans un autoencodeur ne me semble pas idéal, mais une tokenisation par listes d’éléments du jeu pourrait être envisageable
Si le moteur du jeu fournit l’image de l’écran et expose directement les tokens à l’IA, celle-ci pourrait comprendre beaucoup plus profondément l’état réel de la partie
Je ne sais pas combien de données d’entraînement seraient nécessaires pour exploiter correctement ces tokens, mais il est possible qu’on puisse déjà les représenter dans l’espace d’embedding actuel avec seulement quelques tokens
Avec un jeu de données d’entraînement constitué de logs de parties et d’évaluations du plaisir utilisateur, on pourrait obtenir beaucoup de résultats intéressants
Il deviendrait même possible d’identifier des clusters de préférences de joueurs pour créer différents types de jeux adaptés à chacun
Merci d’avoir partagé ce workflow
Moi aussi, je réfléchis à introduire de la traçabilité et de la transparence dans les workflows basés sur les LLM
Partager les prompts et les conserver comme historique offre un gros avantage : on peut voir d’un seul coup d’œil quel était le problème fondamental que le développeur cherchait à résoudre au départ, puis comment il a évolué et quels nouveaux problèmes sont apparus
Projet très cool
Post sur l’usage responsable des LLM
Cela fait plus de 20 ans que je travaille dans la tech, et récemment j’expérimente beaucoup avec Gemini-cli en gamifiant un outil de tests d’intégration pour applications d’entreprise
En le combinant avec un serveur MCP, j’obtiens les meilleurs résultats quand je découpe les problèmes en étapes et que j’ajoute de la clarté dans les prompts
L’IA peut se tromper ou tourner en boucle — surtout sur des sujets comme le routage applicatif — et dans ces cas-là, il est utile d’adopter une approche active de « pair programming »
Autre point notable : il est bien plus facile qu’avant de respecter des principes comme l’interdiction de dupliquer le code
Sinon, on tombe vite dans une situation où l’IA modifie une partie mais oublie les fichiers liés
C’est vrai non seulement pour la logique de programmation, mais aussi pour l’UX et le comportement de l’application
Avec l’IA, des tâches qui prenaient autrefois des semaines peuvent maintenant être réalisées avec plaisir en quelques heures
Le fait de pouvoir donner une personnalité à Gemini, puis de réutiliser et ajuster le fichier GEMINI.md tel quel sur plusieurs appareils, est un avantage énorme