Nasra's games

A short blog about games and Linux

Mon parcours avec cette marque.

Quand on parle fabricants de matériel et Linux, souvent, on se retrouve devant des incompatibilités. Telle fonctionnalité non supportée (encore), telle autre promise (souvent), ou tout simplement supportée grâce à la communauté.

Les fabricants de CPU et de cartes graphiques sont souvent dans ce cas. Intéressons-nous plus particulièrement à AMD, cas d'école s'il en est, de l'ouverture d'un fabricant aux mondes engl... linuxiens (référence).

Petite histoire personnelle avec AMD

Mon histoire personnelle avec AMD commence dès les années 2000 avec mon petit AMD K6-2 cadencé à 300Mhz, je passe sur cet épisode bardé d'écrans bleus Win98 à cause de RAM mal supportées par cet OS calamiteux (plus aucun soucis avec Win 2000). Je couple ce processeur moyen de gamme de l'époque à des cartes graphiques Nvidia (Riva TNT2) pour jouer peu. Puis, après un bref passage à WinXP, je passe à Linux sur mon AMD Duron 700 Mhz, je finis le port AGP de ma carte mère avec une Geforce 4 4200 Ti et enfin une Radeon HD 3650.

ATI Radeon HD 3650

Petite pause sur cette dernière carte, je l'ai gardé peu de temps. Que ce soit sous Windows (XP, car j'étais encore en dualboot) ou Linux, le fait qu'elle soit encore en AGP la rendait capricieuse niveau pilotes. Bref, pour moi, cette première expérience graphique avec AMD (enfin ATI à l'époque), n'était pas très concluante.

Mini PC et mini performances ?

Ah l'époque des mini PC, des EEEPC d'Asus et autres joyeusetés ! J'ai succombé à la mode, oui, mais avec une bécane qui en avait ; elle pouvait faire tourner Half-Life 2 en high sans broncher, même Civ4 était jouable ! Voici mon MSI U210 !

MSI U210

Pour le coup, c'est un PC 100% AMD, processeur AMD, chipset graphique AMD... il était vendu avec Windows7 Familial (et pas l'immonde Starter Edition du monde des mini pc). Il est resté le seul PC sous Windows que je pouvais avoir pendant quelques années. Mais là aussi, le chipset graphique, un X1250, pouvait certes bien faire tourner les jeux, mais l'interface de Windows 7 était lente, peu réactive, et surtout compliqué de lui enlever tous les effets graphiques sans perdre en lisibilité sur le petit écran 12” du mini PC. Bref, passage à Linux, et là aussi des soucis de prise en charge graphique, notamment pour la lecture des vidéos, de la 3D (oui j'ai testé Wine et les jeux à l'époque, comme sur mon PC fixe). Gros avantage de Linux : on tune son système comme on veut, et j'ai pu adapter mon OS au matériel que j'avais : pas d'effets graphiques, interface minimum (XFCE, ou LXDE selon les envies), 64Bits... Entre-temps, je lui ai ajouté un peu plus de RAM et un SSD, et le PC, à part ses soucis graphiques a pu me servir encore pendant des années !

Configuration du MSI U210

J'avais envie de revenir sur cette histoire avec mon petit U210, surtout parce que j'ai vu cette nouvelle récente sur le site de Phoronix. Le noyau Linux, 5.9 va prendre en charge l'UVD (accélération graphique) des Radeon anciennes, et vous savez quoi ? Ma X1250, tout comme ma Radeon HD3650 (qui dorment paisiblement après tant d'années de bons et loyaux services) sont concernées ! Bref, le pilote libre a une meilleure compatibilité que les pilotes propriétaires, sous Linux ! (Windows, vous oubliez hein, à moins de retrouver les vieux pilotes seulement compatibles Win7 et WinXP 32bits)). Je pense que je vais le sortir de sa torpeur pour lui installer Manjaro un de ces quatre... ;)

Bon ok, mais aujourd'hui ?

Mon PC fixe a évolué, de l'AMD XP Barton 3000+ au X3-460 et au FX8350 d'aujourd'hui. Vous voyez, en terme de processeur, je suis resté chez AMD, mais en terme graphique, après mes déboires avec ATI, je suis repassé chez Nvidia, 450Ti, 650Ti et GTX970 aujourd'hui. Mais comme dit, ça commence à dater un peu ! Mon FX est toujours aussi fidèle à ses 80°C en charge, et ma GTX970 donne de sérieux signes de fatigue (90°C voire plus, ventilos qui hurlent, baisse des fps dans les jeux, blocage du PC, Windows m'aurait déjà fait 36 écrans bleus sans que je sache où serait la panne... ah oui, erreur 0x00000023 dans le module mémoire ECDFG89604 :D ). En fait, j'ai des erreurs ACPI, signe que la carte commence à ne plus tenir les températures et la charge (j'ai une alimentation 700W BeQuiet).

Scusez du truc technique

Donc, aujourd'hui, je me retrouve devant un dilemme : changer ma carte graphique, au meilleur prix et trouver quelque chose de stable et bien supporté. Et... je suis repassé chez AMD !

Radeon 5500XT

Bon, entre-temps j'ai un autre soucis : ces cartes ne supportent plus les bios legacy (ma carte mère ancienne n'a pas d'UEFI), et je vais devoir tout changer, ou changer de carte mère... :/

À suivre donc ! Prochain article : mais pourquoi ce choix ?!? Oui, cet aricle est trop long ! :)

ToBeContinued

Ça avance de plus en plus !

Cheater

La compatibilité des outils anti-cheat avance sur Linux, quelles sont les avancées ?

Dans mon précédent article je vous parlais de Denuvo et autre joyeusetés. Je reprend juste deux, trois informations. Pour les jeux compétitifs en ligne, les logiciels anti-cheat sont devenus indispensables, notamment dans les jeux qui permettent des paiements en ligne. La situation de ces logiciels anti-cheat sous Linux est simple : pas compatible. Ces logiciels ont besoin d'accéder au noyau du système d'exploitation pour épier les irrégularités de comportement du joueur et ainsi bannir les contrevenants.

Wine

La dernière version de Wine montre quelques signes encourageant de ce travail, avec notamment le support “NetIO kernel driver implementation.” Des fonctions directement liées au noyau sont en train d'être développées sur Linux pour la gestion du réseau. Nous allons pouvoir trinquer une bouteille de vin !

Wine logo

EAC

La situation de Easy Anti-Cheat est particulière. Le logiciel que l'on retrouve dans Fortnite, Rust et bien d'autres a été racheté par Epic. Même si dans un premier temps l'équipe derrière EAC travaillait avec Valve pour une compatibilité avec SteamPlay, depuis le rachat par Epic, ce travail est resté à l'état de déclaration depuis 2019. Epic ne porte pas son attention à Linux (à part pour son moteur Unreal Engine, même dans sa dernière version). Mais certaines choses pourraient changer. Comme d'habitude sur Linux, les choses vont assez vite. Si vous testez une solution un jour, 6 mois plus tard vous n'aurez aucun soucis. Et c'est un peu l'annonce derrière ceci, EAC serait sur le point de fonctionner avec Wine grâce au travail de reverse engineering de cette équipe. Oui c'est tout récent, c'est tout frais, mais je voulais vous partager cette nouvelle !!

EAC

Tricher c'est pas bien !

Denuvo

Les programmes anti-cheat sont très utiles pour le jeu en ligne. Ils permettent d'avoir une expérience de jeu égale pour tous, notamment dans les jeux où gagner de l'expérience permet d'acheter du matériel, étendre des possibilités ou dans les jeux compétitifs. Les tricheurs achètent du matériel plus facilement en s'arrogeant des crédit dans le jeu ou certaines capacités sont aussi boostées, auto-aim pour viser les ennemis et autres joueurs...

Bref, si leur utilité est incontestées pour beaucoup de joueurs sérieux, c'est surtout leur construction qui est mise à mal. Incompatibilités, ralentissements, jeux devenus injouables sans anti-cheat ou au support technique vacillant, les exemples sont légions.

Les Anti-cheat avec Linux

DRM

Pour qu'un logiciel anti-cheat puisse servir, il doit pouvoir détecter certains types de logiciels lancés par l'utilisateur, ou certains comportements jugés inhumains (frappes au clavier trop rapide, visée automatique de la souris...). Certains logiciels vont loin dans leur implémentation : ils vont jusque dans le noyau du système d'exploitation pour détecter ces tricheries.

Oui mais, ceci n'est pas sans risque. Les anti-cheat comme les protections DRM sont souvent des logiciels liés à des entreprises publicitaires, des profils marketing, ces logiciels ne sont pas open-source (on ne peut pas savoir exactement si ce qu'ils indiquent faire, ils le font exactement ou s'il n'y a pas d'autres comportements). Par exemple, Sony avait intégré une protection anti-copie à des CD Audio et le logiciel permettant de déchiffrer cette protection pour la lecture des fichiers ouvrait des failles de sécurité importantes permettant à des rootkit de détruire des données, exploiter des machines...

Pour un système qui intègre la plupart des serveurs de données dans le monde, ou une énorme partie des supercalculateurs tournent avec, il est inconcevable d'ouvrir la porte à ces types de logiciels à la sécurité chancelante (Microsoft, lui, s'en fout royalement).

Des jeux qui ne tournent pas

Il est donc normal que certains jeux ne tournent pas sur Linux à cause de ces programmes. C'est une question de sécurité. Cela concerne particulièrement des jeux comme PUBG, Fortnite, tous les MMORPG asiatiques (même très anciens, comme MuOnline ou SilkRoadOnline, que j'ai parcouru il fut un temps)... Et récemment Doom Eternal, qui a suscité tellement d'hostilité qu'une mise à jour du jeu a dû être mise en place pour supprimer ce logiciel des parties solo du jeu.

Doom Eternal

Oui, mais...

Valve a indiqué être au courant de cet aspect et va trouver des solutions. VMWare, y travaille déjà avec leurs solutions de virtualisation (important pour eux avec les licences de logiciels professionnels), et... plus récemment Wine ! La version 5.10 de Wine annonce travailler sur le programme Denuvo Anti-cheat !

Un OS pour les gamers !

Oui, comme son nom l'indique, cet OS est spécialisé dans le gaming. Tout tourne sur Linux, avec tous les derniers raffinements possibles.

GamerOS

C'est basé sur Steam ?

Oui c'est basé même sur Steam en mode Big Picture mais avec quelques raffinements en plus. GamerOS est une distribution basée sur Arch-Linux, il s'agit d'une “rolling-release” (qui se met à jour tout le temps avec les dernières avancées logicielles). GamerOS contient en plus d'autres choses.

Outre les derniers pilotes Nvidia (propriétaires) et Mesa (libres pour Intel et AMD), vous avez accès au dernier kernel Linux, ce qui veut dire un support matériel étendu (manettes par exemple) et en lien avec les derniers supports de l'équipe de développement du noyau Linux.

GamerOS

Ok, SteamOS je connais, et puis quoi ?

Justement ! GamerOS inclus aussi Retroarch ! En gros, vous avez là la plupart des émulateurs que vous trouvez dans les RecalBox, Batocera ou Retropie dans un système unifié, accessible à la manette. À vous les joies du retrogaming directement sur votre PC. Les systèmes émulés vont de l'Atari 2600 à la PS2 et GameCube !

GamerOS Retro

Tester ?

Pour tester GamerOS, c'est assez simple, il vous suffit de copier l'OS sur une clé USB ou disque dur externe, de démarrer votre PC dessus, installez... et voilà ! En gros, votre système est directement prêt, avec tous les pilotes nécessaires pour tester et faire tourner GamerOS ! À vos manettes !

Un logiciel à tout faire !

Vous avez du matériel Corsair (souris, clavier avec des LED...) et vous souhaitez configurer un peu tout cela directement avec votre pingouin ? Pas de soucis, ckb-next est là pour ça !

CKB-Next, le couteau suisse du corsaire !

CKB-Next

Attention, ceci n'est pas un logiciel officiel du fabricant. Il est distribué en licence libre par ses auteurs.

Avec ce logiciel vous allez pouvoir configurer assez finement votre matériel, LED du clavier, performances de la souris... Comble du bonheur, vous pouvez aussi créer des profils selon la configuration que vous allez créer et les lancer directement au démarrage du système.

De nombreux périphériques supportés

Voici la liste des périphériques supportés : Claviers K55 à K95, Souris M65, Glaive, Harpoon... Toute la liste est ici

Et, petite cerise sur un gâteau déjà bien appétissant, il est possible de mettre à jour le firmware des périphériques ! (roooooo !)

Update

CKB-Next est disponible ici

Amusez-vous bien !

Pourquoi c'est cool !

Petit article explicatif sur ce que c'est qu'un Shader et pourquoi c'est pas mal de les mettre en cache pour le rendu d'un jeu, notamment dans Steam.

Shader ? Shredder ?

C'est un programme informatique (et pas un ninja traquant des tortues dans des égouts), utilisé dans les jeux (ou dans des rendus 3D), pour paramétrer une partie du processus de rendu. Il sert à décrire plein de trucs et appliquer pas mal d'effets : l'absorption et la diffusion de la lumière, la texture à utiliser, les réflexions et réfractions, l'ombrage, le déplacement de primitives et des effets post-traitement... Les Shader peuvent être exécutés directement par la carte graphique ou être mis en cache dans la mémoire de celle-ci lorsqu'ils sont utiles.

Pixar

Mémoire et cache

Les mémoires des cartes graphiques sont très, très, très rapides (de l'ordre de la nano seconde). Au plus une application va pouvoir stocker des données dedans, au plus cela va accélérer le traitement et donc les performances. Quand vous avez un jeu gourmand en mémoire (typiquement un jeu en 4K avec plein de textures comme The Witcher 3), la carte graphique va stocker dans sa mémoire les textures du jeu et permettre un affichage sans accro. Elle va calculer en temps réel les Shaders, voire les stocker dans sa mémoire pour tous les effets du jeu. Si votre PC est puissant, aucun soucis, le CPU prendra en charge certains calculs dans le jeu, le GPU aura sa tâche, tout va bien se dérouler et vous aurez vos 144FPS en 4K (!). Mais sur des configurations plus modestes ou pour avoir plus de performances, au lieu d'avoir à calculer en temps réel des Shader, il est possible de les calculer en premier, de les stocker en mémoire et de les charger lors d'un jeu.

Caché, mais où ?

Il est possible de stocker son cache sur la RAM voire sur un espace dans son disque dur (ou SSD) et d'appeler les Shader déjà calculés lors d'un chargement d'un jeu. De ce fait, la carte graphique est soulagé d'un calcul en temps réel et peut se concentrer sur d'autres tâches, d'où le gain de performances.

Witcher 3

Steam et les Shader

On avait déjà la possibilité de “cacher” des Shader (pas dans des égouts, non), notamment avec GLSL, OpenGL Shader Langage, Windows a déjà par exemple le HLSL, DirectX Shader Langage... Et voilà qu'arrive le Vulkan Shader Langage dans la version béta de Steam !

Vulkan Shader Steam

De gros changements s'annoncent dans l'avenir avec Wine. Le support de Vulkan directement dans l'API permettra une meilleure compatibilité avec un nombre important d'applications, dont des jeux.

Vulkan ?

Vulkan c'est une API graphique, bas niveau, qui remplace OpenGL. Beaucoup d'applications utilisent OpenGL, Blender pour ne citer que lui, mais aussi encore beaucoup d'applications professionnelles qui utilisent OpenCL pour leur rendus et l'accélération graphique qui en découle. Et cela que ce soit sous Linux ou sous Windows où les applications professionnelles préfèrent travailler avec OpenGL (la Nvidia Quadro par exemple a des pilotes spécifiques).

Vulkan

Le projet DXVK est un projet qui permet de traduire les appels DirectX en Vulkan sans passer par OpenGL. Utilisé essentiellement dans des jeux, avec Steam et le projet Proton, il permet la prise en charge de nombreux jeux avec des performances remarquables.

Concurrence avec DXVK ?

C'est ici qu'on peut se poser la question. DXVK est un projet jeune qui a beaucoup fait parlé de lui et est intégré à la team Linux de Steam. Mais il est très lié à Wine sur lequel il se base. De ce fait, les liens entre les deux sont rapides : DXVK pour la partie graphique et Wine pour le reste...

Oui mais non. D'une part, comme je l'ai indiqué plus haut, Wine ne s'adresse pas seulement aux gamers mais aussi à toute une partie de linuxiens qui souhaitent une couche de comptabilité pour leurs applications professionnelles. Wine est essentiellement développé et propulsé par Codeweavers dont c'est le business plan. D'autre part, la montée en puissance d'une API comme Vulkan va très certainement remplacer OpenGL à terme va exiger que Wine le supporte aussi.

DXVK

DXVK s'adresse principalement aux gamers, Wine profite des développements de DXVK tout comme Proton profite des développements de DXVK. Pour le moment en terme des performances dans les jeux, DXVK est à préférer, notamment le fait qu'il soit nativement supporté sur Steam. Mais pour d'autres logiciels, comme Lutris, intégrer Proton est un peu plus compliqué (même s'il intègre déjà DXVK) et demande une dépendance à Valve, pas cool pour des projets libres. L'avancement dans Wine de Vulkan permettra un meilleur support des applications et des jeux.

Le support de Vulkan dans Wine est attendu pour Wine 6.0.

Alan Wake

Autant vous le dire de suite, je suis partagé sur ce jeu.

Une technique efficace

Le jeu est sans conteste réussi sur pas mal de plans. La technique pour un jeu de 2010 est très bien maîtrisée, les environnements sont très bien représentés, la direction artistique est très efficace avec ce brouillard, ces sous-bois... L'ambiance sonore aussi, qui permet de s'immerger dans l'action, la réflexion et le scénario. Les phases “cinématiques” sont intéressantes... pour l'avancée du scénario. Et c'est bien cela qui est important dans ce jeu, son scénario, son ambiance.

Alan Wake arrive

Mais...

Tout cela est gâché à mon sens par une répétitivité des actions à mourir d'ennui et une maniabilité assez... particulière. On ne suit pas le personnage mais une sorte de vue de ¾ TPS (Third Person Shooter) plutôt maladroite qui nous cache une partie de l'action. On ne voit jamais devant le personnage mais “en biais”. Se retourner est une plaie, le personnage se meut comme un camion avec une caméra qui ne suit pas le perso. Sur la capture ci-dessous, vous ne voyez pas venir le second gus sur votre gauche...

Oups un spoil !

Quant à “éviter les coups”, une feature qu'on nous présente au début du jeu comme primordiale, c'est un coup de chance à chaque fois avec des ralentissements insupportables à la Burnout (mais sans le côté spectaculaire). Oui, mec, tu as juste évité une énième fois encore un fantôme avec une hache... on aura vu plus original. Le premier ça va, quand on en est à en réussir 3 d'affilé avec 10 ennemis qui vous tournent autour, ce n'est pas juste énervant, c'est injouable. Le jeu oscille constamment entre des phases d'actions plus faciles où le héro semble avoir tous les éléments pour s'en sortir et des phases au ralenti qui donnent un handicap artificiel au joueur.

Bref, ce jeu est répétitif, prévisible et ses choix de gameplay sont frustrants.

Info

J'ai essayé de jouer à la manette, oubliez tout de suite, la caméra est encore pire, préférez le combo clavier/souris (un comble pour un jeu sorti d'abord sur console). Tout tourne super bien sur Linux (Pop_OS) et Proton sur la version Steam. Il y a juste une commande à ajouter au démarrage du jeu pour que les cinématiques ne soient pas muettes. Ah oui, le jeu n'est pas cher si vous voulez tenter l'aventure et juger par vous-même.

Pourquoi cela ne va rien changer. Explications de texte.

Microsoft a annoncé récemment avoir développé une version de DirectX12 pour Linux dans son environnement de virtualisation WSL. Cela permet notamment à Microsoft de se passer de serveur X pour faire tourner des applications graphiques pensées pour Linux, avec des exemples de Nautilus tournant sur WSL.

Implémentation de DirectX12

À mon avis cela ne va rien changer ou à la marge.

Pour que des applications DirectX 12 tournent sous Linux (en natif) il faut bien plus que seulement la pile graphique. Là, c'est une implémentation dans WSL (2.0) d'une couche graphique qui vous permettra la même chose que si vous faisiez du PCI Passthrough avec Xen ou autres : les performances graphiques de l'hôte à portée de main dans une machine virtualisée (avec le VGA-Passthrough cela se fait grâce à deux cartes graphiques ou chipset graphiques). C'est pour concurrencer toutes les solutions de virtualisation concurrentes (VirtualBox, Xen, KVM, QEMU, Bochs...) et c'est directement en lien avec la stratégie de Microsoft et (feu) VMWare.

Pour de la rétro-ingéniérie et apprendre un peu plus du fonctionnement de DirectX 12, oui, ça peut aider des projets comme Wine ou DXVK, notamment pour la résolution de bugs graphiques, et encore voir si cette version n'est pas spécifique à WSL (avec des éléments qui ne permettraient pas la compilation directement sur un Linux sans passer par WSL).

Pour le reste (réseau, inputs, audio...), ça ne va pas révolutionner les choses.