12 points par GN⁺ 2025-10-30 | 1 commentaires | Partager sur WhatsApp
  • Mojang a annoncé la suppression complète de l’obfuscation dans Minecraft: Java Edition
  • L’obfuscation était une pratique de sécurité courante dans l’industrie du jeu vidéo, mais elle limitait l’accessibilité du code et le développement de mods
  • Jusqu’ici, les noms de classes, de fonctions et de variables étaient tous obfusqués, ce qui rendait le développement de mods et le débogage complexes ; désormais, des builds incluant les noms de code d’origine seront fournis
  • L’obfuscation disparaîtra à partir du premier snapshot après la mise à jour Mounts of Mayhem, et, pour préserver la compatibilité avec les outils existants, des versions obfusquées et désobfusquées seront distribuées en parallèle pendant un certain temps
  • Ce changement devrait faciliter davantage le développement de mods, l’analyse du code, l’interprétation des crash logs et la correction de bugs

Histoire de l’obfuscation du code de Minecraft

  • Java Edition utilisait depuis ses débuts l’obfuscation pour protéger le code source
    • Les noms des classes, fonctions et variables dans le code étaient intentionnellement transformés en chaînes sans signification avant publication
    • Les moddeurs devaient donc analyser manuellement le rôle de chaque portion de code
  • À partir de 2019, Mojang a commencé à assouplir cela en publiant des fichiers de mapping d’obfuscation (obfuscation mappings)
    • Ces mappings fournissaient une liste reliant les noms obfusqués à leurs noms d’origine significatifs
    • Cela a aidé les moddeurs à mieux comprendre la structure du code, mais une étape intermédiaire restait nécessaire

Décision de supprimer l’obfuscation

  • Mojang a décidé de supprimer l’obfuscation elle-même, éliminant complètement cette étape intermédiaire
    • La mesure s’appliquera à partir du premier snapshot suivant la sortie complète de “Mounts of Mayhem”
    • À l’avenir, toutes les versions fourniront par défaut du code contenant les noms d’origine des variables, champs et classes
    • Les développeurs et moddeurs pourront accéder directement au code et le modifier
  • Cette décision est interprétée comme une mesure visant à accroître l’ouverture de Java Edition et à réduire les barrières de l’écosystème des mods

Phase de transition pour les moddeurs

  • Mojang a prévu une période de transition en tenant compte des problèmes de compatibilité avec les outils existants
    • À partir du prochain snapshot, une version expérimentale désobfusquée (experimental release) sera également distribuée
    • Les moddeurs pourront tester à l’avance leurs outils et workflows avec la nouvelle structure du code
    • Une fois la transition complète effectuée, la version obfusquée actuelle sera abandonnée
  • La première version entièrement désobfusquée sera le premier snapshot après la sortie de Mounts of Mayhem

Objectif du changement

  • Mojang explique que « le modding est au cœur de Java Edition » et que l’obfuscation en freinait la croissance
    • Il deviendra possible de créer, mettre à jour et déboguer des mods plus rapidement, sans devoir déchiffrer un code complexe
    • La meilleure lisibilité des crash logs devrait aussi accélérer la résolution des problèmes
    • La collaboration entre moddeurs et l’apprentissage devraient également être simplifiés

Licence et directives juridiques

  • Ce changement n’a aucun impact sur l’EULA ni sur les Usage Guidelines
    • Les créateurs de Minecraft et de mods doivent toujours respecter ces règles
    • Chaque fichier jar inclura un fichier LICENSE pointant directement vers l’EULA
  • Changements à venir :
    • Suppression des informations de mapping d’obfuscation dans les fichiers de version .json
    • Les fichiers jar client et serveur seront tous deux fournis désobfusqués
    • Chaque jar inclura un nouveau fichier LICENSE

Orientation future

  • Mojang parle d’une « transition vers un avenir plus transparent » et prévoit de recueillir activement les retours de la communauté
  • La fin de l’obfuscation constitue l’évolution de l’environnement de développement la plus ouverte de l’histoire de Minecraft Java Edition ; on s’attend à ce qu’elle accélère la croissance de l’écosystème des mods et élargisse sa valeur éducative

1 commentaires

 
GN⁺ 2025-10-30
Avis Hacker News
  • Il est surprenant que Minecraft ait une communauté de modding aussi puissante, alors que les développeurs ont travaillé en décompilant des binaires Java obfusqués
    Leur dévouement est impressionnant, eux qui ont fait évoluer leur outillage pendant plus de dix ans en alternant désobfuscation et réobfuscation

    • En 2004, j’ai joué à un MMO sur des serveurs pirates, et l’administrateur du serveur ajoutait des fonctionnalités en modifiant directement les binaires avec un éditeur hexadécimal
      C’était marquant de le voir changer les caractères un par un en lisant l’hexadécimal, comme un hacker dans Matrix
    • C’est une preuve supplémentaire qu’on peut modifier un logiciel même sans code source
      Cela dit, Java est de toute façon facile à décompiler, donc le vrai obstacle n’est pas tant l’obfuscation que la complexité de la structure orientée objet
    • En réalité, Mojang a commencé à fournir officiellement des fichiers de mapping à partir de 2019
      La communauté n’a donc plus besoin de les créer elle-même comme avant
    • Java est facile à décompiler, donc dès qu’on comprend le bytecode JVM, on peut assez vite mettre les mains dedans
      Il suffisait de comprendre la structure de la VM et le concept de dispatch d’objets
      La communauté de modding de Minecraft à ses débuts était vraiment un endroit génial, et c’était l’un des moments de programmation les plus marquants que j’aie connus
    • Je ne connaissais pas très bien Minecraft non plus, donc je pensais qu’il y avait un système officiel de plugins
      Mais découvrir que cet écosystème a été construit en grande partie par reverse engineering est étonnant
  • Des jeux comme Minecraft, Roblox, Geometry Dash et Trackmania sont des réussites portées par la force de leur communauté
    Si le moteur est fermé ou difficile à développer, il est difficile de croître, comme avec le Vision Pro ou le métavers
    Il faut que les développeurs amateurs et les petits groupes d’utilisateurs puissent participer facilement pour qu’une communauté se forme

    • La série Flight Simulator a elle aussi créé un immense écosystème d’add-ons
      Mais au final, le plus important reste d’avoir d’abord un « bon jeu »
      Quand une communauté grossit, une partie de ses membres finit naturellement par se mettre au modding
      Par exemple, Richard Burns Rally n’avait pas été pensé pour ça au départ, mais les fans y ont ajouté des voitures, des circuits et même des fonctions en ligne
      On observe un phénomène similaire avec le moteur voxel Luanti
    • La maturité du moteur de Roblox à ses débuts était vraiment remarquable
      En 2006, on pouvait lancer instantanément des milliers de jeux 3D multijoueur gratuits, avec destruction de bâtiments et modification du terrain
      C’était révolutionnaire pour l’époque, et cette simplicité d’accès lui a finalement permis de dominer le marché des enfants
    • Je pense que Minecraft est une exception
      Dès l’alpha, l’expérience solo était excellente, avec un équilibre parfait entre survie et créativité
      Le jeu générait déjà des millions de dollars de chiffre d’affaires à cette époque
    • Une autre raison de l’échec du métavers, c’est que personne n’en veut vraiment
      Presque personne n’a envie de porter un casque VR coûteux
    • Je ne suis pas d’accord avec l’idée que les moteurs VR seraient mauvais
      Unity, Unreal et Godot offrent tous un bon support de la VR
      Le vrai problème, c’est que le nombre d’utilisateurs est trop faible par rapport au coût de développement
      Il faut prendre en compte l’accessibilité, l’UX, la prévention du mal des transports, etc., ce qui rend le développement bien plus coûteux
      Par exemple, même afficher des sous-titres dans un environnement 6DoF est difficile
  • Les obfuscation mappings publiés par Mojang en 2019 étaient une liste permettant de lever l’obfuscation des noms
    Grâce à eux, les moddeurs n’avaient plus à deviner l’intégralité du code, mais on peut se demander pourquoi seule la moitié a été publiée

    • C’est parce que beaucoup d’outils de modding étaient déjà alignés sur un système de noms communautaire
    • J’imagine que l’équipe juridique a peut-être paniqué en entendant parler de désobfuscation
    • C’était peut-être simplement dû à des raisons juridiques ou à une commodité procédurale
    • Je me demande aussi si ces mappings prenaient la forme d’une API officielle ne couvrant qu’une partie des classes ou des méthodes
  • Je me demande si Minecraft Java Edition sera un jour open source sur GitHub
    Comme Skyrim, il a l’air de pouvoir continuer à se vendre sur n’importe quelle plateforme

    • Il existe déjà des launchers open source qui fonctionnent normalement tant qu’on fait attention à l’authentification du compte
      On peut aussi télécharger gratuitement les fichiers du jeu depuis les serveurs de Microsoft, donc une ouverture du code ne semblerait pas forcément leur faire perdre quoi que ce soit
    • En 2010, Notch avait promis : « si les ventes baissent, je publierai le code source »
      Archive de la page web de l’époque
    • Comme pour Doom, ouvrir seulement le moteur en open source pourrait être une bonne approche
      Les assets artistiques resteraient protégés par le droit d’auteur
    • Parmi les alternatives comparables, il y a Minetest et Luanti
    • Aujourd’hui, ils pourraient sans doute publier le code source tout en gardant payant l’accès aux serveurs d’authentification de compte, sans gros impact sur les revenus
  • Ces temps-ci, je préfère travailler sur Luanti
    On peut y recréer via des mods une expérience très proche de Minecraft, et il existe aussi des game mods comme VoxeLibre
    Le code source des mods écrits en Lua est lui aussi généralement public
    Zoonami est particulièrement intéressant, car il propose une expérience proche de Pokémon

    • Je me demande si Luanti a aussi de gros modpacks comme AllTheMods 10 ou Meatballcraft
    • Zoonami semble pouvoir atteindre ce que Tuxemon n’a pas réussi à accomplir
  • Minecraft est déjà facile à pirater, donc publier le code source ne causerait probablement presque aucun préjudice
    La plupart des gens gardent un compte officiel surtout pour utiliser les serveurs d’authentification de Mojang
    Le jeu est même devenu assez gros pour qu’une mise en open source avec clause non commerciale soit envisageable

    • Cela dit, avec une « clause de non-usage commercial », ce ne serait pas du véritable open source, mais plutôt du Source Available
  • L’obfuscation agressive de Proguard complique la compréhension du code en renommant les classes de façon obscure et en poussant même l’inlining
    Cette annonce représente donc un grand progrès sur ce point

  • C’est une bonne nouvelle ! Cela ouvre de nouvelles possibilités pour la communauté du modding de Minecraft

  • Les mappings créés par la communauté étaient sous licence libre, mais ceux de Microsoft ne l’étaient pas
    Cela pouvait ressembler à une sorte de piège

    • Mais maintenant que les mappings eux-mêmes ont disparu, je ne vois plus très bien en quoi consistait ce piège
    • Je me demande si les noms de variables peuvent eux aussi être soumis au droit d’auteur
  • Si on voulait vraiment rendre cela plus simple, le mieux serait probablement de publier le code source sous une licence autorisant le modding