- 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
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
C’était marquant de le voir changer les caractères un par un en lisant l’hexadécimal, comme un hacker dans Matrix
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
La communauté n’a donc plus besoin de les créer elle-même comme avant
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
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
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
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
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
Presque personne n’a envie de porter un casque VR coûteux
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
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
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
Archive de la page web de l’époque
Les assets artistiques resteraient protégés par le droit d’auteur
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
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
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
Si on voulait vraiment rendre cela plus simple, le mieux serait probablement de publier le code source sous une licence autorisant le modding