Comment un jeu inattendu a changé le Steam Deck pour toujours
Le Steam Deck est devenu un succès retentissant certifié.
Avec plusieurs millions d'unités vendues, l'appareil a changé notre façon de penser le jeu sur PC, a engendré de nombreux clones et a assuré un avenir aux appareils de jeu portables. Avec le soutien d’une société multimilliardaire, cela n’est peut-être pas si surprenant.
Mais il y a une histoire inédite derrière ce qui a fait fonctionner le Steam Deck – un noyau de passion en ingénierie qui a résolu le casse-tête du fonctionnement des jeux Linux à cette échelle. Une grande partie de tout cela a commencé avec un développeur indépendant – un homme et son amour pour un jeu appelé Nier : Automata – et une communauté prête à faire passer le jeu Linux au niveau supérieur.
Des origines modestes
Lors de la vente d’automne Steam de l’année dernière, j’ai décidé de me procurer Nier : Automata. Le jeu d'action-aventure révolutionnaire de 2017 figure sur la liste des meilleurs jeux de tous les temps de Digital Trends, et même si je l'avais un peu joué sur PlayStation 4, je ne l'ai jamais acheté sur PC. Comme je le fais habituellement lorsque j'achète un jeu sur Steam, j'ai recherché des informations sur son fonctionnement sur Steam Deck et je suis tombé sur ce fil de discussion Reddit .
Le jeu s'est très bien déroulé, ce que j'ai appris en rampant lentement pendant des sessions de 30 minutes plusieurs fois par semaine, mais c'est le premier commentaire sur ce fil qui a déclenché une obsession : « Nier : Automata a 80 ans. % de la raison pour laquelle les jeux Linux sont aussi bons qu'ils l'est actuellement, peut-être 90 %. Découvrez l’histoire de DXVK. Pour faire court, l'amour d'un homme pour 2B est la raison pour laquelle nous disposons aujourd'hui de ces incroyables couches de traduction DirectX.
Il y a beaucoup à découvrir pour les non-initiés, mais quand je suis tombé sur ce commentaire, je suis devenu accro. Parce que le commentateur avait raison : les jeux Linux ont connu une transformation radicale ces dernières années. Dans le passé, DirectX était le principal obstacle à surmonter. La grande majorité des jeux PC utilisent l'interface de programmation d'application (API) DirectX de Microsoft, qui, comme vous vous en doutez peut-être, ne fonctionne que sous Windows. Les jeux envoient des instructions à l'API, qui prépare le travail pour votre matériel. Étant donné que la plupart des jeux étaient conçus pour fonctionner avec DirectX, cela signifiait que vous ne pouviez pas y jouer sous Linux – du moins pas de manière native.
Pendant de nombreuses années, la principale solution de contournement était une couche de compatibilité connue sous le nom de Wine, mais les jeux pris en charge étaient encore très aléatoires. Cela est dû à la façon dont Wine fonctionnait à l'époque pour les jeux. Il faudrait des instructions DirectX et les traduirait vers l'API OpenGL. Cela fonctionnait pour les jeux plus anciens ou moins exigeants, mais les performances des titres modernes utilisant des instructions API plus complexes ont été considérablement réduites.
Ce n'est qu'après la sortie d'une API multiplateforme appelée Vulkan en 2016 que les choses ont vraiment commencé à changer pour les jeux Linux. Créé par le même consortium qui a construit OpenGL, Vulkan a été conçu pour donner aux programmeurs beaucoup plus de contrôle sur le GPU – similaire à quelque chose comme DirectX 12. Les jeux devenant de plus en plus complexes, une API de bas niveau comme Vulkan était la clé pour débloquer la parité des performances lorsque traduire les instructions DirectX.
Valve soutenait les efforts de Linux depuis des années, mais Vulkan a marqué un tournant. Au moment de la sortie de Vulkan, Valve a commencé à travailler sur ses propres efforts pour renforcer le jeu Linux appelé Proton, une couche de compatibilité directement intégrée à Steam. Et juste comme ça, vous pouvez tracer la ligne directement de Vulkan et Proton au Steam Deck. "Vulkan est définitivement une pièce importante du puzzle", m'a expliqué par e-mail un développeur de Valve, Pierre-Loup Griffais.
Mais Valve ne l'a pas fait seul. En fait, sur la base de l'engagement de l'entreprise envers la philosophie open source, Proton regroupe quelques couches de traduction open source en un seul package. Le tout est construit sur Wine, mais pour les jeux, il utilise VKD3D pour DirectX 12 et Zink pour OpenGL. Il existe cependant un élément technologique clé qui est venu prendre en charge la plupart des jeux.
Cela a commencé avec DirectX 11, mais inclut désormais même DirectX 10 et DirectX 9. Le nom du projet est DXVK , qui se décrit lui-même comme une « couche de traduction basée sur Vulkan pour Direct3D 9/10/11, qui permet d'exécuter des applications 3D ». sous Linux en utilisant Wine.
Il a reçu d'innombrables contributeurs depuis sa création, mais il a commencé très modestement. Un développeur allemand nommé Philip Rebohle en était le cerveau et, selon lui, tout a commencé comme un projet passionné.
Comment Nier a tout changé
«J'ai réellement lancé le projet au moment où j'ai quitté l'université et commencé à chercher un emploi, mais au début, ce n'était pas vraiment censé être bien plus qu'un projet de passe-temps», m'a expliqué Rebohle. "Néanmoins, le développement initial a été rapide et j'ai partagé mes progrès avec une petite communauté Discord, qui à son tour a transmis certaines des étapes les plus importantes à Phoronix."
Phoronix, si vous n'êtes pas familier, est un site Web dédié aux actualités et critiques sur le matériel Linux. Rappelez-vous ce nom.
Selon une interview avec GamingOnLinux en 2018, Rebohle « s'est toujours intéressé à la programmation graphique », mais a surtout bricolé des projets de loisirs qui, selon les propres mots de Rebohle, « n'ont jamais vraiment évolué vers quelque chose d'utile ». DXVK a démarré en raison de certaines frustrations liées à la réalité du jeu sous Linux, mais aussi parce que Rebohle « voulait vraiment faire fonctionner un jeu spécifique ». Ce jeu était Nier : Automata.
Rebohle s'est décrit comme « un peu fanboy quand il s'agit de Nier » sur les forums GamingOnLinux début 2018, quelques jours après la sortie initiale de DXVK. Ce n’était pas seulement que Rebohle se souciait de ce jeu. En discutant avec le développeur, il était clair que Nier : Automata présentait un défi unique.
"Nier est le jeu qui m'a amené à apprendre – et à déboguer – l'API D3D11 en premier lieu, au départ parce qu'elle ne fonctionnait même pas sous Windows sur mon RX 480 en raison d'un bug du pilote AMD", m'a expliqué Rebohle.
Nier : Automata est un jeu DirectX 11 assez simple, permettant à Rebohle de faire fonctionner le titre sous Linux sans trop de tracas. Le port PC présentait également des problèmes majeurs sous Windows, le moindre n'étant pas le bug du pilote AMD mentionné par Rebohle. Mais surtout, « c'est juste un très bon jeu », comme l'a dit Rebohle.
« Lorsqu'il a finalement commencé à fonctionner sous Linux en utilisant la traduction D3D basée sur OpenGL de Wine, le système était plutôt lent et ne s'affichait pas correctement. J'ai donc procédé à un débogage plus sérieux et j'ai beaucoup appris au cours du processus. Ayant déjà joué avec Vulkan, l'idée de DXVK est née au cours de ce processus », a déclaré Rebohle.
Le développement a commencé fin 2017, mais en janvier 2018, Rebohle et un groupe de contributeurs avaient déjà rendu Nier : Automata opérationnel sous Linux. Phoronix a partagé la nouvelle et peu de temps après, Rebohle a décroché un contrat avec Valve pour travailler à temps plein sur ses projets open source traduisant les API Windows vers Vulkan. "Il n'a pas fallu longtemps après la publication de cet article pour que quelqu'un de Valve me contacte et me demande si je voulais travailler là-dessus à plein temps en tant qu'entrepreneur", m'a dit Rebohle.
Le développeur travaille toujours avec Valve aujourd'hui, contribuant principalement à la couche de traduction DirectX 12 connue sous le nom de VKD3D-Proton.
Rebohle a lancé DXVK et reste le développeur principal, mais il est important de souligner les autres développeurs qui ont contribué au projet. Le projet GitHub répertorie actuellement 137 contributeurs, et il est juste de dire que le projet ne serait pas là où il est aujourd'hui sans l'effort communautaire qui y a été consacré. Pourtant, cela n’aurait peut-être jamais commencé sans Nier: Automata.
« Honnêtement, c'est difficile à dire », comme me l'a dit Rebohle.
Ce qui rend le Steam Deck spécial
« Putain de merde. Veuillez excuser le langage, mais honnêtement, je tremble physiquement en ce moment. Je ne sais pas vraiment comment gérer cela.
Telle a été la réponse de Liam Dawe, rédacteur en chef de GamingOnLinux, écrivant dans un article d'actualité sur la sortie originale de Proton en 2018. En lisant les plus de 500 commentaires sur l'article, vous pouvez sentir l'excitation et la nervosité monter alors que la prise de conscience s’installe : cette communauté de niche était sur le point de se généraliser.
À peine quatre ans plus tard, le Steam Deck serait lancé, mettant à jamais le jeu Linux sur la carte.
Bien que Valve aurait pu construire un Steam Deck sans Proton, il est difficile d'imaginer que cela aurait réussi. Comment puis-je savoir? Eh bien, une preuve est l’échec des machines à vapeur. Valve a lancé les Steam Machines en 2015, qui ont été conçues pour être des PC de jeu abordables, semblables à une console, fonctionnant sur le propre SteamOS basé sur Linux de Valve. Six mois après sa sortie, Valve avait vendu moins d'un demi-million de machines à vapeur, certains qualifiant l'appareil de « mort dans l'eau ».
Il existe de nombreuses explications possibles à cet échec, mais selon Valve, l'un de ses problèmes était de tenter d'adopter le jeu Linux avant qu'il ne soit vraiment prêt. Dans une interview avec IGN , le concepteur de Valve, Scott Dalton, a déclaré : « Il y a toujours eu ce problème classique de la poule et de l'œuf avec la machine à vapeur. Cela nous a conduit sur la voie de Proton, où il y a maintenant tous ces jeux qui fonctionnent réellement.
En développant le Steam Deck, Valve ne pouvait pas rester les bras croisés et espérer que davantage de ports Linux natifs commenceraient à apparaître, et il ne pouvait pas non plus exiger que les développeurs créent des jeux spécifiquement pour sa plate-forme. Valve a vu comment cela pourrait échouer grâce à son expérience Steam Machines. Il fallait un retard de jeux pour prendre en charge le Steam Deck, et le seul moyen raisonnable d’atteindre ce retard était d’avoir une couche de compatibilité robuste pour Linux.
Il est clair que Proton devait également travailler pour que le Steam Deck réussisse. Valve a initialement publié Proton en août 2018, trois ans et demi avant la sortie du Steam Deck. Vous pouvez désormais jouer à des milliers de jeux via Proton, mais à l'époque, Valve ne répertoriait qu'un petit nombre de titres pris en charge, notamment Doom, Final Fantasy VI, Star Wars : Battlefront 2 et, bien sûr, Nier : Automata.
Depuis lors, des milliers de développeurs ont contribué soit à Proton, soit à l'une des différentes fondations sur lesquelles il repose, mais il est indéniable que DXVK est un élément essentiel du Proton que nous avons aujourd'hui. Il est utilisé pour les jeux DirectX 11, DirectX 10 et DirectX 9, et même si DirectX 12 est la dernière version, ces trois API constituent toujours la part du lion des jeux que vous trouverez sur Steam.
Le Steam Deck n’est pas non plus le seul matériel impacté par DXVK. Intel exploite DXVK pour les jeux DirectX 9 sur ses GPU Arc en traduisant les instructions DirectX 9 datées vers l'API Vulkan plus moderne.
La contribution inattendue de Rebohle dans DXVK est devenue un élément permanent du monde du développement de jeux – une belle image de la force du développement open source.
Les jeux Linux ont un avenir assuré
Aussi fascinante que soient les origines de DXVK, cela ne veut pas dire que le Steam Deck n’aurait jamais pu se concrétiser tout seul. Griffais de Valve me dit qu'il avait d'autres projets en cours pour faire fonctionner DirectX 11, et si DXVK ne s'était pas présenté, "l'un de ces autres projets DirectX 11 sur Vulkan aurait été prioritaire à la place".
Valve avait clairement déjà Proton en préparation avant DXVK, et probablement ses plans pour le Steam Deck. Mais est-ce que ça aurait marché ? Le soutien serait-il aussi bon qu’aujourd’hui ? Combien de temps cela aurait-il pris ? Quel impact cela aurait-il eu sur le Steam Deck dans son ensemble ? Il existe une réalité alternative dans laquelle DXVK ne fait jamais partie de Proton, bien sûr, mais ce n'est pas ce qui s'est passé. DXVK est devenu un composant fondamental de Proton, et donc du Steam Deck, et Nier : Automata a joué un rôle clé à cet égard.
"DXVK est très important pour Proton", comme le dit Griffais, et Valve n'a "pas l'intention de s'éloigner de DXVK pour Proton".
Le résultat est que le jeu Linux se trouve aujourd’hui dans une situation bien différente de ce qu’il était au début de 2018. L’avenir n’a jamais semblé aussi prometteur. Tout a commencé avec l'amour d'un développeur pour Nier : Automata, mais l'effort est devenu depuis quelque chose de bien plus important. En fin de compte, c’est ce qui rend le développement open source si spécial. Vous ne savez jamais quelles empreintes digitales se retrouveront dans le produit final et contribueront à façonner l’avenir de la technologie.