Il y a bientôt un an, Apple a annoncé la production de son propre processeur, la puce M1 (avec ses dérivées M1 Max et M1 Pro annoncés en octobre dernier, et d'autres qui viendront plus tard probablement). Étant spécifiquement conçue pour leurs ordinateurs, cette nouvelle puce permet de grandement améliorer les performances des logiciels qui l'exploitent, tout en restant compatible avec les anciens logiciels grâce à un programme de "traduction" appelé Rosetta.
Pour la partie technique : chaque logiciel, lorsqu'il est produit par leurs développeurs, est compilé de manière à pouvoir s'exécuter sur un processeur et un OS spécifiques. Jusque là les Mac utilisaient un processeur Intel, très classique, il "suffisait" donc de prévoir les spécificités de macOS, rien de très compliqué. Mais avec leur nouveau processeur, c'est tout le langage de communication entre le logiciel et l'ordinateur qui change, ce qui signifie une toute nouvelle manière de compiler.
Apple a donc mis au point un système qui traduit les applications prévues pour Intel en code lisible par leur puce M1, ce qui permet de donner un peu de temps aux développeurs pour s'adapter au changement d'architecture. Mais cette traduction se faisant à la volée, elle réduit les performances des logiciels de manière non négligeables. Le but est donc d'utiliser une version dudit logiciel qui soit conçue pour tourner sur une puce M1, pour éviter de passer par le système de traduction et donc d'optimiser un maximum les performances.
Mais en quoi cela nous concerne-t-il pour Minecraft ? Car malheureusement Mojang Studio n'a pas encore conçu de version du jeu pour les puces M1 en particulier, donc que les performances sont nettement moins bonnes si vous jouez sur un de ces nouveaux ordinateurs d'Apple.
A titre d'exemple, je suis passé d'un Mac Mini 2018 (Intel) à un Mac Mini 2020 (M1), et pour la même quantité de RAM et la même version du jeu (1.16), j'ai vu mes fps moyens baisser d'environ 1/3 lors du chargement de mondes. En revanche, en adaptant le jeu pour utiliser le nouveau processeur, j'ai pu voir un net gain de fps par rapport à mon ancien ordinateur. Si vous êtes intéressé par cet exemple, regardez donc la dernière partie de cette astuce.
Comment savoir si mon Mac possède un processeur M1 ?
Vous pouvez vérifier sur la liste officielle de tous les appareils actuellement commercialisés ayant un processeur made by Apple. Mais vous pouvez également le savoir directement depuis votre Mac: cliquez sur le menu de la Pomme (en haut à gauche de votre écran) puis "À propos de ce Mac", pour y trouver la ligne "Puce" indiquant si oui ou non vous avez une puce M1. Si vous avez marqué "Intel" à la place, alors aucun problème, vous n'avez pas besoin de lire plus loin !
Exemple avec mon propre ordinateur :
Quelles versions de Minecraft sont compatibles avec cette optimisation ?
A l'heure actuelle, malheureusement je n'ai pas pu trouver les ressources suffisantes pour les versions inférieures à la 1.14.Installer les composants
Pour faire tourner Minecraft en natif (donc prévu pour le M1), il faut commencer par trouver une version de Java prévue et compilée pour la nouvelle architecture, en l’occurrence l'ARM. Il existe actuellement assez peu de versions de Java prévue pour les puces ARM, mais la plus connue s'appelle "Azul Zulu" (cliquez pour aller sur leur site web).Le dossier Zulu une fois décompressé, avec le sous-dossier zulu-16.jdk qui nous intéresse
La prochaine étape consiste à télécharger les libraries Java utilisées par Minecraft, notamment pour le rendu graphique, qui doivent être compatibles avec votre nouvelle version de Java (donc ARM). Fort heureusement, un utilisateur de macOS propose ces fichiers en téléchargement sur Google Drive (regardez ici si le lien du Drive est mort). Comme précédemment, vous pouvez ouvrir le fichier compressé et déplacer le dossier là où vous voulez, probablement à côté de votre nouveau Java.
Le dossier MCAppleSilicon une fois décompressé, avec les deux éléments intéressants en bleu
Modifier la version de Minecraft
Maintenant que vous avez toutes les cartes en main, il est temps d'annoncer à votre jeu que les règles changent. Ou plus exactement, qu'il va devoir utiliser d'autres composants de Java que ceux habituels.
Pour commencer, assurez-vous d'avoir déjà lancé au moins une fois le jeu comme d'habitude dans la version que vous souhaitez. Dans mon exemple je vais modifier la version 1.17.1 (qui nécessite, pour rappel, Java 16). Ensuite, il vous faut aller dans le dossier Minecraft (~/Library/Application Support/minecraft), puis le dossier versions, et dupliquer le dossier de la version qui vous intéresse en le renommant (par exemple 1.17.1-arm). Il vous faudra renommer les deux fichiers contenus dans ce dossier de la même manière (1.17.1-arm.jar et 1.17.1-arm.json).
"<CHEMIN_VERS_lwjglfat>/lwjglfat.jar:${classpath}",
"-Dorg.lwjgl.librarypath=<CHEMIN_VERS_lwjglnatives>/",
"-Dfml.earlyprogresswindow=false"
(en modifiant CHEMIN_VERS_lwjglfat par le chemin vers le fichier libraries/lwjglfat.jar, et CHEMIN_VERS_lwjglnatives par le chemin vers le dossier lwjglnatives, tous deux contenus dans le dossier "MCAppleSilicon" téléchargé dans la première partie)Si vous voulez utiliser Forge , Optifine ou F de manière native aussi, la technique est la même, mis à part le fichier JSON qui, étant bien plus court, ne possède que deux attributs à modifier : abric
Préparer le launcher Minecraft
Pour profiter pleinement de votre version modifiée, lancez le launcher Minecraft (ou redémarrez-le s'il était encore ouvert), allez dans l'onglet "Configurations", créez une nouvelle configuration (ou modifiez-en une existante), puis :
Vous devez être connecté pour laisser un commentaire.
Je suis étonné du résultat, j'aurai plutot imaginé une net amélioration des TPS plutot que des FPS, mais peut être est-ce la recompilation de la liblwjgl pour ARM qui apporte ce boost spectaculaire des FPS. pour les versions de Minecraft inférieur à la 1.13, as-tu tester de simplement updaté les libs non disponible pour ARM (en modifiant le json du jeu avec la nouvelle version disponible) ? Avec un peu de chance, si les versions sont compatible ca peut marcher.
Sinon petit remarque plus général, c'est amusant de voir l'évolution des technologies des processeurs au fils de decennie. Cette tendance à aller vers du ARM (sur les mobiles et ici les macs) me donne l'impression d'un retour en arrière en terme technologique:
- Au début de l'informatique les processeurs était simple, avec peu d'instruction et une faible cadence.
- Pour améliorer les performances, on a augmenté les frequences, avec une course au Hz entre AMD et Intel
- intel est (re)devenu leader en inventant les instructions MMX (suivit par SSE, SSE2, etc.): a frequence égale, le processeur faisait plus de chose, donc la puissance de calcul augmentait.
- Puis on est arrivé a des limites en terme de frequence, donc on a commencer a faire du multi-coeur
- Mais faire des processeurs avec de gros jeu d'instruction c'est gros, et ca comsomme de l'énergie (et ca chauffe aussi), ce qui n'est pas terrible pour des appareil sur batterie, donc on a inventé l'architecture ARM, avec un retour au source: le jeu d'instruction le plus simple possible (adieu MMX & co), mais on garde le multi-coeur quand même pour les performances.
Donc annoncer que c'est une révolution faut pas non plus exagérer, y'a rien de révolutionnaire, ca existait déjà il y a 30ans ;-) Après dire si c'est une bonne ou une mauvaise chose je ne me prononcerai pas je ne connais pas suffisament, a voir avec le temps si c'est une tendance qui sera suivit plus globalement pour les PC sous Windows également.