>> La recherche se fait sur tous les élements du jeu Minecraft <<
Aidez nous a financer le site: Joignez l'utile à l'agréable et profitez d'FR-Minecraft sans publicités en devenant VIP ! Ou ajoutez FR-Minecraft dans vos exceptions, nous n'abusons pas des pubs

Astuce Minecraft : Faire tourner Minecraft sur un Mac M1 (ARM)


Aidez nous a financer le site: Joignez l'utile à l'agréable et profitez d'FR-Minecraft sans publicités en devenant VIP ! Ou ajoutez FR-Minecraft dans vos exceptions, nous n'abusons pas des pubs

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.

Les versions 1.12 et inférieures ne semblent pas permettre la modification des arguments de lancement via le fichier JSON, et la version 1.13 utilise encore une ancienne version de la library LWJGL, qui ne possède pas de version compilée pour les processeurs M1. Les seules versions concernées par cette astuce sont donc les versions 1.14 et supérieures.



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).
Il vous suffit de sélectionner dans le menu la bonne version de Java (8 pour 1.14-1.16, 16 pour 1.17+), le système "macOS", l'architecture "ARM 64-bits", et pouf vous pouvez télécharger le JDK, qui permet d'exécuter Java sur votre ordinateur en natif.

Vous pouvez ouvrir le fichier compressé et extraire le dossier "zulu-16.jdk" (ou "zulu-11.jdk") pour le placer à votre convenance, par exemple dans votre dossier Documents.

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).

Dossier versions de Minecraft, avec la version source et la version modifiée en bleu


Dans le fichier JSON que vous venez de renommer, plusieurs choses sont à modifier :
  • Il y a un attribut "id": "1.17.1" (ou autre, selon la version que vous modifiez) ; renommez-le avec le nom du dossier ("id": "1.17.1-arm" dans mon exemple)
  • Le fichier contient aussi un attribut "libraries" ayant une liste de plein d'autres objets ; il vous faudra parcourir cette liste et supprimer toutes les entrées faisant référence à "lwjgl"
  • Enfin, il faut modifier les arguments de lancement de l'application : pour les trouver, cherchez la ligne contenant "-cp" au début du fichier ; il faut remplacer la ligne juste après par les arguments suivants : "<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)

Et voilà, votre version du jeu est prête !

Extrait du fichier JSON 1.17.1 après modification

Si vous voulez utiliser Forge, Optifine ou Fabric 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 :

  • "id" comme précédemment
  • "inheritsFrom" qui doit rediriger vers la version vanilla que vous venez de modifier ("1.17.1-arm" dans mon exemple).
Extrait du fichier JSON de Fabric 1.17.1 après modification


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 :

  • Pour l'option Version : sélectionnez votre version modifiée ("release 1.17.1-arm" dans mon cas)
  • Cliquez sur l'onglet "Plus d'options", puis modifier l'exécutable Java pour pointer vers le fichier Contents/Home/bin/java du dossier zulu-16.jdk installé dans la première partie
Enregistrez votre configuration, et vous êtes bons, vous pouvez lancer Minecraft en natif ARM en utilisant toute la puissance de votre nouveau processeur !

Exemple de configuration du launcher officiel

Vous pouvez vérifier que votre logiciel utilise du code natif en lançant l'application utilitaire "Moniteur d'activité", puis en regardant la colonne Type : si c'est "Apple", vous avez gagné.





Pour les autres clients
  • CurseForge, qui a son propre launcher depuis sa séparation de Twitch, ne semble pas supporter ce genre de manipulation
  • Lunar propose directement de télécharger une version de son client optimisée pour les puces M1
  • MultiMC permet de modifier la version de Java et les libraries utilisées directement depuis son interface graphique. Voyez ce guide (anglais) pour le détail des manipulations
  • Badlion a annoncé en 2020 qu'ils prévoyaient une version pour Mac M1, bien qu'à ce jour elle ne soit toujours pas disponible

Bon en vrai, à quel point ça aide les performances ?

Voici un exemple sur une map vierge en 1.17.1, je me suis mis en spectateur pour générer un maximum de chunks.

Voilà le résultat sans optimisation :

Et après avoir suivi ce tuto :

De même une fois tous les chunks chargés, sans bouger, ici sans optimisation :

Et la même avec les optimisations de Java :


Ce n'est bien entendu pas représentatif de tout le gameplay, mais la différence est suffisament intéressante pour être notée. Notez aussi que le simple affichage de cet écran de debug, avec ses graphiques, entraine une perte de fps assez importante.
Cette astuce Minecraft a été posté par Z_runner dans la catégorie Divers le 02/09/2021 à 11h47. Site officiel.

Validé par Tronics. Dernière modification par Z_runner le 25/10/2021 à 8:55.
Partager :
Commentaires de l'astuce Minecraft
Faire tourner Minecraft sur un Mac M1 (ARM) :
Tronics (administrateur)
le 07/09/2021 à 02:16
Merci pour le test Z ! J'ai pas de mac M1 (j'ai pas de Mac tout court même), mais c'est toujours instructif ce genre d'astuce, surtout que tu as pousser tes recherches loin, donc merci pour le partage :-)

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.
SozoKa-Off (anonyme)
le 30/10/2021 à 12:20
Super tuto !
Vraiment complet je suis agréablement surpris. J'ai justement regardé par mal de trucs sur ça dernièrement et c'est de loin le tuto le plus complet que j'ai vu. C'est un beau travail :)
aaaa (anonyme)
le 30/10/2021 à 16:02
puisque l'astuce dit que ce professeur date d'il ya un an, je suppose que mon mac que j'ai acheté d'occasion il y a 4 ans, n'est pas concerné. quelqu'un pourrait il me confirmer (ou m'infirmer) cette supposition car je n'est pas très bien compris les détail de cette astuces, n'étant pas très compétents en informatique ?
Z_runner (rédacteur)
le 30/10/2021 à 17:23
@aaa alors ça tombe bien, la toute première section du tuto explique justement comment faire pour savoir si ton mac possède un M1 ou pas :) mais effectivement, s'il a 4 ans il doit posséder un processeur Intel, pas Apple

@SozoKa-Off Merci, j'y ai passé du temps x) (d'ailleurs merci Franswa et Tronics pour les relectures)
Miroum (anonyme)
le 31/10/2021 à 09:28
merci.
olala (anonyme)
le 31/10/2021 à 13:23
Cette astuce montre toute la perte de temps qu'un utilisateur de mac peut perdre en plus de s'acheter un truc hyper cher bon a rien hors mis dans son environement fermé.

C'est super impressionant , je dis bravo en tout cas !
aaaa (anonyme)
le 31/10/2021 à 14:04
ah non !
le début mac vs windows vs Linux, ne va pas contaminer fr-mincraft ! pour l'instant, fr-minecraft.net est à peu près engeulades-free !
le 08/05/2023 à 22:29
Bonjour,
J'espère avoir une réponse même si ce tuto date un peu x)
Déjà, merci beaucoup pour le tuto !
Je l'ai essayé avec forge 1.16.5. Avec la puce M1, il semblerait que l'ordi ne soit pas capable d'afficher l'écran de chargement de forge. J'ai au départ essayé de le résoudre en rajoutant "-Dfml.earlyprogresswindow=false" dans les arguments jvm mais ça n'a pas marché et j'avais toujours une erreur 255. J'ai décidé d'essayer d'utiliser ce tuto qui change toutes les librairies lwjgl et semble pouvoir aider pour ce problème.
Je suis pas une pro de l'informatique mais je me débrouille en général, j'ai revérifié toutes les étapes 2x mais j'ai une erreur avec code de sortie 1.
Peut-être que je me suis trompée quelque part?
Merci d'avance pour une réponse!
le 09/07/2023 à 02:34
Hâte de voir un tuto pour faire tourner un serveur minecraft sur une architecture Arm64 (type Orange Pi par exemple, sur Jammy)

Vous devez être connecté pour laisser un commentaire.