Sauver un projet web avec l’IA et le faire évoluer

J’ai participé fin 2014 avec 2 autres personnes à une game jam où le challenge était de créer un point and click, avec comme contraintes un rendu CGA 4 couleurs, en 2 semaines avec des technos web. Cela a donné l’Héritage Maudit, un jeu que je considère encore aujourd’hui, comme une de mes plus belles productions. Le code source était hébergé sur Bitbucket et tout allait bien. Plus tard j’ai voulu faire une migration sur github de mes projets et j’ai oublié de migrer l’Héritage Maudit car je pensais l’avoir archivé… Le projet était perdu, ou presque. Comme ce projet était réalisé en JavaScript, j’avais quand même la build finale, ainsi qu’une autre un peu plus avancée mais en beta. Le soucis c’était que tout était minifié / compressé. Je vous explique ici comment j’ai réussi à récupérer le code source, avec des étapes manuels, mais aussi grâce à Codex.

Première étape : Decompresser et spliter les fichiers

La première étape a été de prendre le gros fichier JS et de le décompresser pour qu’il soit lisible. Il y a un tas de services gratuits qui permettent de faire ça. Le problème est que le code est toujours compliqué à lire car les noms de variables ont été renommés et le code a été simplifié par le compilateur. Mais à partir de là, on peut déjà commencer à extraire les gros blocs dans des fichiers différents et mettre en place un setup node pour tester et itérer. Dans les faits, on pourrait même automatiser ça avec l’IA.

Deuxième étape : OpenAI Codex

Une fois que le projet est maitrisé et qu’il fonctionne, j’ai utilisé Codex en mode plan, et je lui ai expliqué le contexte et le besoin

  • Projet de 2014 (on est en 2026)
  • Extraire toutes les classes dans des fichiers dédiés
  • Passer de Object.prototype au classes ES6
  • Utiliser les imports ES6
  • Moderniser le système de build avec Vite
  • Renommer les variables pour que ce soit compréhensible

En une passe j’avais retrouvé le code source, propre, et surtout mis à jour vers ES6 🙂 Car honnêtement passer de Object.prototype au classes ES6 ça n’est pas sorcier, mais c’est tellement long sur un projet déjà existant. Beaucoup de vielle syntaxe apparait et il est évident qu’il va falloir faire une grosse passe de nettoyage, je pense par exemple aux événements custom..

Le code est de nouveau lisible, on peut de nouveau travailler dessus.

Troisième étape : Correction des bugs et modernisation

A partir de là, on peut repasser en mode plan avec Codex et lui demander de vérifier si il y a des bugs, des incohérences et surtout faire un rapport des bugs déjà existants. L’IA me propose alors plusieurs modifications, des API dépréciées (depuis 2014 il s’est passé pas mal de choses) et des petites erreurs de logiques. Attention aux erreurs de logique car elles pourraient casser le jeu actuel. C’est l’étape la plus risquée et la plus consommatrice de temps car il faut bien tester que tout fonctionne comme avant. Le mode plan est obligatoire pour que l’IA ne parte pas dans tous les sens.

Dernière étape : Un éditeur et une version native

A partir de là, le jeu est de nouveau fonctionnel, à priori sans bug et prêt à être déployé, c’est le bon moment pour créer un éditeur qui permettra de continuer à faire évoluer l’histoire. J’ai demandé à Codex d’étudier les structures de données du jeu. Il y a un fichier JSON pour les objets d’inventaire, les personnages, la trame global, etc.. A partir de ça, il m’a maqueté un début d’éditeur et après plusieurs itérations, nous sommes arrivés à quelque chose de pas mal. Côté stack, je ne laisse jamais l’IA en roue libre, c’est un coup à se retrouver avec du React partout..

Ici l’éditeur fonctionne avec Vue.js et TailwindCSS, cela suffit largement. L’avantage est que le code reste très lisible, simple et je n’ai pas peur de mettre les mains dedans.

Etape bonus : Une version native

La gamejam imposait que ce soit une techno web, mais finalement pourquoi ne pas porter le jeu en natif que ce soit plus facilement distribuable ? Encore une fois, j’ai demandé à codex de réaliser un port méthodique C++ avec SDL3. L’idée était d’être proche de l’API JavaScript du moteur. Je ne dirais pas que le résultat du premier coup ait été parfait, mais c’est incroyable de voir qu’avec juste quelques prompts, on arrive à un résultat presque OK.

Conclusion

J’ai récupéré mon code source, il est à jour, exploitable et je peux le faire évoluer. Toutes ces étapes auraient pu être faites à la main évidemment. J’avais d’ailleurs commencé à le faire il y a un moment, mais c’est très long. A ce moment là, le temps que cela aurait prit n’était pas intéressant. Utiliser Codex m’a permis de mener cette opération à bien en quelques heures, alors que ça aurait prit des jours sans. Je pense que les outils d’IA sont une belle opportunité pour remettre à jour des vieux projets. Le temps aujourd’hui est moins un problème, le plus gros challenge, je trouve, c’est l’implication humaine. Car l’IA nous livre beaucoup de choses très vite et on passe beaucoup de temps à attendre et tester. C’est à mon avis la plus grosse friction aujourd’hui.