43 points par gamjaa 2026-03-25 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • 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.

Aucun commentaire pour le moment.