- Jeu TPS sorti en 2003 et réservé à Windows, GunZ: The Duel
→ porté pour être exécutable dans le navigateur via WebAssembly + WebGL
- Sans installation, jouable immédiatement dans Chrome en ouvrant simplement l’URL https://gunz.sigr.io/
- Fonctionne sur Linux, macOS et même mobile, soit dans presque tous les environnements
- Le code C++ existant est conservé presque sans modification
- Environ 99 % du code nouvellement écrit a été généré par l’IA
Pourquoi c’est important
- Jeux PC classiques :
- téléchargement/installation nécessaires
- dépendance à Windows
- Résultat obtenu ici :
- exactement le même jeu tourne dans le navigateur
- pas une « implémentation similaire », mais un portage fidèle de l’original
- C’était jusqu’ici un domaine considéré comme « théoriquement possible, mais irréalisable en pratique »
Tentatives passées et échecs
- Approche précédente :
- réimplémenter le moteur en JavaScript + Three.js
- Résultat :
- seul le rendu de la carte a pu être réalisé
- la difficulté de réimplémenter l’ensemble du moteur était trop élevée, le projet a donc été abandonné
- Conclusion :
- l’approche par « réimplémentation » est en pratique presque impossible
Problème central : la dépendance à Windows
- GunZ repose sur du C++ et dépend de Direct3D
- Problème :
- Direct3D est une API réservée à Windows
- impossible de l’utiliser directement dans le navigateur (WebGL)
- Une simple compilation en wasm ne suffit pas
- En clair :
- seul le code indépendant de la plateforme peut être compilé en wasm
- la partie dépendante de l’API graphique constitue le principal obstacle
Limites des approches existantes
- Modifier directement le code du jeu
- nécessite de retoucher des dizaines de milliers de lignes
- maintenance impossible
- Conversion automatique (D3D → WebGL)
- conversion mécanique impossible à cause des différences de sémantique entre les API
- Conclusion :
- les approches existantes sont toutes irréalistes
Idée clé : une « couche de traduction »
- Approche :
- conserver le code du jeu tel quel
- intercepter les appels Direct3D
- les convertir à la volée en WebGL
- Implémentation :
- un wrapper WebGL exposant la même interface que l’API D3D9
- inséré entre le jeu et l’API graphique
- Effets :
- presque aucune modification du code du jeu
- suppression de la dépendance à Windows
- le coût du portage est ramené à la seule « implémentation du wrapper »
Le rôle de l’IA
- Outils utilisés :
- Google Antigravity
- Claude Code (offre Max)
- Résultat :
- automatisation de l’analyse et de la modification de grandes bases de code
- des problèmes qui prenaient des semaines ont été résolus en quelques heures
- l’IA a concrètement réalisé un travail difficilement faisable par un humain seul
- En particulier :
- l’IA a pris en charge l’essentiel de l’implémentation du wrapper D3D → WebGL
Résumé essentiel
- Il ne s’agit pas de « recréer le jeu »
→ mais de préserver le code existant tel quel autant que possible
- Technologies clés :
- WebAssembly
- couche de traduction Direct3D → WebGL
- Changement majeur :
- grâce à l’IA, le portage à grande échelle de logiciels legacy devient une tâche réaliste
- Enseignement :
- il devient possible que la difficulté de porter d’anciens jeux et logiciels vers le web chute fortement à l’avenir
Aucun commentaire pour le moment.