## Friday Facts N°446 – ARM et Steam Frame ###### **Posté par** [raiguard](https://www.factorio.com/blog/author/raiguard), [Sanqui](https://www.factorio.com/blog/author/Sanqui) le 18-09-2026 Bonjour, Rejoignez-nous, le temps que je vous raconte d'autres anecdotes sur le Pingouin... --- ### Factorio sur Steam Frame ###### *par raiguard* À l'origine, lorsque Valve a [annoncé ses équipements de nouvelle génération](https://store.steampowered.com/sale/hardware), j'étais _très_ enthousiaste à l'idée du Steam Controller, un peu moins par la Steam Machine, mais je n'étais pas vraiment emballé par le Steam Frame. J’ai eu l’occasion de jouer en réalité virtuelle sur le HTC Vive d’un ami, et lors de mes visites au bureau de Wube à Prague, j’ai joué sur le Valve Index de l’entreprise que nous gardons à l’étage. Ces expériences étaient très sympas, mais la quantité de préparation nécessaire pour dégager un espace de jeu, connecter le casque à un PC et installer les balises pour le suivi spatial a rendu l’accès aux jeux en réalité virtuelle bien plus compliqué que ce que j’étais prêt à supporter. J’avais relégué la réalité virtuelle au rang de gadget qui n’était tout simplement pas fait pour moi. Les ingénieurs et développeurs de réalité virtuelle étaient conscients de ce problème d’effort initial. C’est pourquoi, ces dernières années, les casques ont évolué pour prendre en charge le suivi "inside-out". Au lieu d’installer des capteurs fixes dédiés (balises) pour suivre votre position dans l’espace virtuel, les casques inside-out utilisent des caméras intégrées pour suivre votre position dans la pièce, puis transposent votre emplacement dans le monde réel dans un espace virtuel. Cela supprime la nécessité d’installer ces balises, et si l’on intègre ensuite toute la puissance de calcul et une bonne batterie dans le casque, on peut obtenir une expérience de réalité virtuelle autonome, semblable à celle d’une console, sans fil ni tracas. Il suffit d’enfiler le casque et de jouer. La réalité virtuelle autonome représente une avancée majeure en matière d’_énergie d’activation_, mais cela ne m’avait pas intéressé jusqu’à présent, car les meilleures options étaient fournies par des entreprises dont les motivations profondes et les normes de confidentialité ne me convenaient pas. Mais le Steam Frame change la donne. Outre le fait que Valve soit plus respectueuse de la vie privée, il s’agit en réalité d’un PC Linux déguisé. Si vous souhaitez installer vos propres logiciels sur le casque, ou remplacer entièrement le système d’exploitation, libre à vous ! Tout cela m’a beaucoup séduit, et j’ai rapidement commencé à envisager d’en acheter un. Le Steam Frame représente une opportunité pour que l’informatique Linux sur ARM64 se démocratise davantage. Jusqu’à présent, les meilleures options pour Linux sur ARM64 se limitaient au Raspberry Pi (un ordinateur monocarte relativement peu puissant), aux serveurs Ampere (inaccessibles au grand public) et à Asahi Linux sur les MacBook équipés d’Apple Silicon (qui en est encore à un stade alpha très précoce). Le Steam Frame vient donc s’ajouter à une liste très restreinte de cas d’utilisation viables pour Linux sur ARM64. Et grâce à l’accent mis par Valve sur les jeux 2D traditionnels sur le Frame, parallèlement aux titres en réalité virtuelle, j’ai enfin trouvé l’excuse dont j’avais besoin pour porter Factorio sur Linux ARM64. #### Portage vers ARM64 La partie la plus complexe du processus de portage n'impliquait en réalité pas du tout le Frame : il s'agissait de configurer la compilation croisée x86 -> ARM64. Comme je n'avais aucune idée de ce que je faisais, j'ai passé les premières heures à me documenter sur le processus. Heureusement, notre compilateur Linux de prédilection (Clang) offre une prise en charge assez bonne de la compilation croisée, et au final, trois éléments suffisent : * Transmettre le ["target triple"](https://clang.llvm.org/docs/CrossCompilation.html#target-triple) correct au compilateur et à l’éditeur de liens. * Indiquer le chemin d’accès à un [sysroot](https://clang.llvm.org/docs/CrossCompilation.html#toolchain-options) de l’architecture cible. * Utiliser un éditeur de liens prenant nativement en charge la compilation croisée. Nous utilisons déjà l’[éditeur de liens Mold](https://github.com/rui314/mold), qui prend en charge la compilation croisée. Aucun effort particulier n’a donc été nécessaire pour le faire fonctionner. La ressource de loin la plus utile a été [cet article](https://mcilloni.ovh/2021/02/09/cxx-cross-clang/) de mcillioni, qui décrivait de manière concise les conditions préalables et la procédure à suivre. Merci ! Ma première solution pour obtenir le sysroot a consisté à modifier le script de mcillioni afin d’extraire les fichiers système de mon Raspberry Pi. Cela a fonctionné pendant un court moment, mais ce n’était pas une solution viable à long terme. Sanqui m’a alors indiqué un outil formidable appelé [Deboostrap](https://wiki.debian.org/Debootstrap), qui permet d’installer les fichiers système Debian ARM64 dans un répertoire de votre choix. Cela s’est avéré être une très bonne solution, tant pour faciliter le développement local que pour nos serveurs de compilation. Nous préférons lier nos dépendances de manière statique, et nous utilisons un système de compilation plutôt spécifique appelé [FASTBuild](https://fastbuild.org/), ce qui fait que la compilation des dépendances pour une nouvelle plateforme peut parfois s’avérer difficile. Presque tout a fonctionné sans trop de problèmes, mais il existe une dépendance que nous utilisons sous Linux et qui n’est utilisée nulle part ailleurs : [OpenSSL](https://www.openssl.org/). OpenSSL est une bibliothèque très configurable, dotée d’un système de compilation assez complexe. Plutôt que de le transposer directement dans FASTBuild, nous compilons OpenSSL en utilisant FASTBuild pour appeler son système de méta-compilation (un script Perl), puis en exécutant le Makefile généré. Compiler OpenSSL pour ARM64 a représenté un petit défi en raison de la documentation quelque peu obscure d’OpenSSL et de ma méconnaissance de Perl, mais j’ai fini par trouver la bonne combinaison de flags et d’arguments à passer, et j’ai réussi à compiler toutes les dépendances statiques du jeu ! J’ai réussi à réduire la compilation croisée de Factorio sous Linux à seulement deux étapes : exécuter [just](https://github.com/casey/just) `create-sysroot arm64` pour générer le sysroot avec Debootstrap, puis exécuter `just arch=arm64 build` pour compiler ! #### Le kit de développement Valve nous a généreusement envoyé non pas un, mais _deux_ kits de développement : l’un au bureau de Prague, et l’autre directement chez moi aux États-Unis ! Mes premières impressions sur le matériel ont été très positives : il est extrêmement léger (les deux tiers du poids de la Steam Deck !) et très confortable à porter pendant de longues périodes, en particulier avec la sangle supérieure attachée. C’est le casque de réalité virtuelle le plus confortable que j’aie jamais porté. Faire fonctionner Factorio sur le Frame a été relativement simple, mais il a fallu surmonter quelques obstacles. Valve fournit un outil appelé "Steam Linux Runtime" (steamrt), qui offre une base stable de bibliothèques dynamiques pour les jeux Linux natifs, contournant ainsi bon nombre des problèmes liés à l’enfer des dépendances dynamiques. Comme nous lions nos dépendances de manière statique, nous n’avons pas besoin de steamrt pour que le jeu fonctionne, mais Steam ne permet pas aux jeux de faire l’impasse sur cette bibliothèque. Nous avions donc choisi la version 1.0 de steamrt. Cependant, la version 1.0 de steamrt ne dispose pas d’une version ARM64 (en fait, seule la version 4.0 de steamrt a bénéficié d’une mise à jour pour prendre en charge ARM64), il était donc temps de passer à la version supérieure. La version de steamrt est un paramètre global qui affecte tous les joueurs. Ainsi, lorsque nous avons été prêts à commencer la distribution de la version ARM64 via Steam, nous avons dû prendre le taureau par les cornes et faire passer la version de steamrt de Factorio à 4.0 pour tout le monde. Heureusement, nous n’avons constaté aucun problème à la suite de cette opération. J’ai également dû mettre à jour notre version du SDK Steamworks afin de pouvoir lier à la bibliothèque partagée Steamworks pour ARM64. Cette mise à jour a été déployée dans la version 2.1.15, et un [bug majeur](https://forums.factorio.com/135856) a nécessité un correctif d’urgence. Heureusement, ce fut le pire, puisqu’un seul [autre problème](https://forums.factorio.com/135921) a été signalé. Le Steam Frame utilise le même logiciel [(SteamOS Devkit Client)](https://partner.steamgames.com/doc/steamhardware/loadgames) que celui utilisé sur la Steam Deck et la Steam Machine. Il m’a donc suffi d’activer le mode développeur sur le Frame, de le connecter au client Devkit sur mon ordinateur portable, puis d’y télécharger la version. Après quelques tentatives infructueuses liées à des versions incompatibles de glibc (une dépendance dynamique que nous ne pouvons malheureusement pas éviter), j’ai réussi à lancer Factorio sur le Steam Frame pour la première fois en février 2026 ! ![Cette image a été prise sur une version préliminaire de SteamOS et ne reflète pas le résultat final.](https://cdn.factorio.com/assets/blog-sync/fff-446-first-boot.png) J’ai rencontré quelques problèmes que j’ai résolus en collaboration avec Valve, mais dans l’ensemble, le jeu a très bien fonctionné ! Lors de la soirée LAN chez Wube de mai 2026, avant la sortie de la version 2.1, j’ai connecté le kit de développement du bureau au jeu pendant la majeure partie du temps, et c’est en grande partie grâce aux efforts précédents sur les portages vers [Nintendo Switch](https://factorio.com/blog/post/fff-370) et [Apple Silicon](https://factorio.com/blog/post/fff-371). Nous n’avons jamais rencontré de désynchronisation liée à la différence entre ARM64 et x86. Le Frame a pu suivre le rythme du jeu sans problème, et c’est sur le Frame que je jouais lorsque nous avons terminé la partie. ![Est-ce que je joue à Factorio ? On ne saura jamais...](https://cdn.factorio.com/assets/blog-sync/fff-446-lan-party.jpg) #### Performances Lorsqu’il tourne sur le Frame, Factorio utilise des paramètres graphiques identiques à ceux du Steam Deck et s’exécute en 720p. Le jeu maintient facilement 60 FPS dans la plupart des cas, mais le nombre d’images par seconde baisse légèrement dans les scènes très chargées. La réduction des paramètres graphiques n’a pas amélioré les performances, ce qui suggère une limitation plus fondamentale dans la manière dont le moteur de rendu OpenGL de Factorio interagit avec la pile logicielle du Frame. Côté processeur, les performances de la version native ARM64 sont environ 11 % plus rapides que celles de la version x86 s’exécutant via [FEX](https://github.com/FEX-Emu/FEX): ![Carte : "Klonan - Trains 4k sur Megagrid - 10k SPM - Jeu de base + rails surélevés". - Les performances de la couche de traduction FEX sont très impressionnantes !](https://cdn.factorio.com/assets/blog-sync/fff-446-steam-frame-benchmark.jpg) [Lien de la carte](https://factoriobench.com/map/677f092e4d3d191cadba75b93e56c695e7070fbf2b90457ce0db68febbf82ba7) #### Expérience Les jeux 2D fonctionnant sur le Frame n’ont pas accès aux fonctionnalités VR. Factorio se joue donc globalement de la même manière que sur le Steam Deck ou la Nintendo Switch. Cependant, même en mode manette, Factorio réagit toujours aux mouvements et aux clics de souris, ce qui s’accorde parfaitement avec la souris laser du Frame. J’ai trouvé très pratique d’utiliser la souris laser lorsque j’utilisais des outils de sélection ou que je cliquais rapidement sur des éléments de l’interface graphique. Et, bien sûr, vous pouvez connecter votre Steam Controller pour bénéficier d’une expérience de trackpad très similaire à celle du Steam Deck, ou même connecter une souris et un clavier pour jouer de manière traditionnelle ! ![](https://cdn.factorio.com/assets/blog-sync/fff-446-steam-frame-demo.mp4) #### Publication Valve a, à juste titre, donné la priorité à la prise en charge des jeux Windows fonctionnant via Proton+FEX et des jeux Android fonctionnant via Lepton. L’infrastructure pour les jeux Linux ARM64 natifs n’est donc pas aussi bien définie. Nous avons dû collaborer avec Valve pour mettre en place une solution de contournement consistant à fournir les deux binaires à tous les joueurs et à utiliser un script shell pour lancer le binaire approprié en fonction de l’architecture de l’hôte. Comme certains membres de la communauté l’ont [déjà](https://forums.factorio.com/135988) [remarqué](https://forums.factorio.com/135970), la version Steam pour Linux ARM64 a déjà été distribuée à tous les joueurs de la version expérimentale de Steam sur Linux ! La mise en place de cette solution a nécessité quelques essais et erreurs en production, ce qui a donné lieu à des [malentendus cocasses](https://www.reddit.com/r/factorio/s/o8NNjAjLpR) et à des [problèmes au lancement du jeu](https://www.reddit.com/r/factorio/s/WSk7fhHnxU). Factorio est officiellement certifié "Steam Frame" ! Cette certification est une garantie de la part de Valve et de Wube que le jeu fonctionne parfaitement sur le Frame. Nous avons été ravis de repérer de brèves apparitions de Factorio sur la page "Great on Frame" dans les tests du Steam Frame réalisés par [Gamers Nexus](https://youtu.be/vcerOYY_K1g?t=2380) et [Dave2D](https://youtu.be/SxdbKaDgvOA?t=224). Je tiens à remercier Valve de nous avoir envoyé des kits de développement et d’avoir répondu rapidement à nos e-mails lorsque nous avons rencontré des difficultés. Je tiens également à remercier mes camarades de Wube, Sanqui et Klonan, qui ont travaillé avec moi pendant de nombreuses heures, souvent jusque tard dans la nuit en raison du décalage horaire, pour que tout soit prêt à temps pour le lancement du Steam Frame. Comme Klonan l’a si bien dit : "Nous avons tous partagé ce moment ensemble, lors de cette nuit pluvieuse à la fin de l’été." Mais le Steam Frame n’est pas le seul nouvel appareil capable de faire tourner Factorio... --- ### Factorio sur Raspberry Pi Bien sûr, nous allons prendre en charge [Raspberry Pi](https://www.raspberrypi.com/), d’autant plus que j’ai utilisé le mien pour obtenir les sysroots initiaux utilisés lors du développement ! Malheureusement, la prise en charge d’OpenGL par Pi est assez limitée. Ainsi, même si vous pouvez facilement héberger des serveurs depuis un Pi, vous ne pouvez pas jouer au jeu avec des graphismes. Il y a quelques semaines, j’ai hébergé en secret un serveur depuis mon Pi et je m’y suis connecté depuis mon Steam Frame, en demandant à mon ami \_CodeGreen et à mon frère Doomquill de m’aider à tester les désynchronisations. Quelques joueurs se sont également joints à nous par hasard, et nous n’avons rencontré aucune désynchronisation ni aucun autre problème. Merci à darklich14 et Erielhonan d’avoir été des cobayes à leur insu ! Les performances du processeur sur ARM64 natif sont environ 28 % plus rapides que sur x86 via [box64](https://box86.org/): ![Carte : "Klonan - Trains 4k sur Megagrid - 10k SPM - Jeu de base + rails surélevés". - Matériel : Raspberry Pi 5 8Go](https://cdn.factorio.com/assets/blog-sync/fff-446-pi5-benchmark.jpg) Mais attendez, il y a plus ! --- ### Factorio sur Asahi Linux ![](https://webcdn.factorio.com/assets/img/blog/fff-446-factorio_asahi_linux_1920px.jpg) Eh oui, Factorio fonctionne également avec [Asahi Linux](https://asahilinux.org/), la distribution Linux pour MacBook équipés de processeurs ARM ! Un ami de Sanqui a gentiment testé quelques versions pour nous et tout semble fonctionner à merveille. Il s’agit avant tout d’un heureux hasard, car nous n’avons pas déployé d’efforts particuliers pour le faire fonctionner. Malheureusement, personne chez Wube ne possède de MacBook équipé d’Asahi Linux, il y aura donc sans doute des problèmes dont nous n’avons pas connaissance. Jouez à vos risques et périls ! Les résultats des tests de performances ont été les plus spectaculaires de tous : la version native ARM64 est pas moins de 35 % plus rapide que la version x86 exécutée via FEX : ![Carte : "Klonan - Trains 4k sur Megagrid - 10k SPM - Jeu de base + rails surélevés". - Matériel : Macbook Pro M1 Pro (modèle A2442, 8 cœurs, 16 Go, 512 Go)](https://cdn.factorio.com/assets/blog-sync/fff-446-macbook-benchmark.jpg) --- Le portage de Factorio sur Linux ARM64 a été un processus très amusant et enrichissant, et je suis très reconnaissant d’avoir pu y travailler. J’espère que vous prendrez plaisir à jouer à Factorio en réalité virtuelle et sur vos autres machines Linux ARM64 ! --- ### Enfin, le portage ARM64 Linux ###### *par Sanqui* Nos joueurs réclamaient un portage de Factorio sur Linux ARM depuis [au moins onze ans](https://forums.factorio.com/15011). Nous sommes à l’écoute et nous sommes également enthousiastes à l’idée de nouvelles possibilités matérielles, mais la prise en charge de chaque nouvelle plateforme a un coût en termes de temps de développement, de tests et de maintenance à long terme. Au fil des années, nous avons régulièrement réévalué la faisabilité de ce portage, mais ces derniers temps, nous nous sommes heurtés à un obstacle majeur en matière de matériel. Il semble que les serveurs ARM soient tout simplement introuvables : notre fournisseur de matériel n’a pas réussi à nous procurer un serveur Ampere Altra, et le fournisseur allemand de VPS Hetzner affiche constamment une rupture de stock de ses serveurs virtuels ARM64. Finalement, nous nous sommes rabattus sur la compilation croisée à partir de x86-64 et disposons désormais d’un Raspberry Pi 5 comme machine de test dédiée. Le Steam Frame fonctionnant sous Linux ARM64 natif s’est avéré être le catalyseur qui a permis de faire franchir le cap à cette initiative, et nous sommes ravis de mettre ce portage à la disposition de tous les utilisateurs de Linux ARM64 dès aujourd’hui ! * La version autonome de Factorio pour Linux ARM64 est disponible [sur notre site web](https://factorio.com/download/experimental), y compris la version sans interface graphique. * Pour les utilisateurs de Steam, Factorio pour Linux ARM64 est disponible sur la branche expérimentale (version 2.1). Veuillez donc activer le mode Expérimental si vous jouez à Factorio sur Steam Frame ou sur d’autres appareils Linux ARM64. --- Comme toujours, envoyez un patch signé avec votre clé GPG contenant un diff de vos suggestions aux adresses habituelles. À la semaine prochaine ! {btnFactoForum}(https://forums.factorio.com/136198) {btnFactoReddit}(https://www.reddit.com/r/factorio/comments/1wjn27t/friday_facts_446_an_arm_and_a_frame/)