1 votes

Pourquoi mes jeux sont si lents avec Wine ?

J'ai découvert que j'avais besoin de Wine pour faire fonctionner tout ce qui est basé sur Windows. J'ai découvert que j'avais besoin de DirectX pour faire quoi que ce soit de significatif, ce qui à son tour nécessitait le framework .NET. En utilisant ce ( http://www.dedoimedo.com/games/Wine-directx.html ) pour DirectX et en téléchargeant Wine 3.5 sur WineTricks, je pensais avoir tout réglé. Malheureusement, ce n'est pas le cas. Ce qui fonctionnait bien sous Windows ne fonctionne pas ou fonctionne comme s'il était coincé dans la mélasse. Maintenant, je sais qu'il y a beaucoup de programmes qui ont des problèmes de compatibilité avec Wine mais ce que je ne comprends pas, c'est la partie des programmes qui tournent lentement. Voici les spécifications de mon système :

Toshiba Satellite L455D-S5976
CPU: AMD Sempron SI-42 Single-core 2.1 GHz
RAM: 3GB (2.7 technically)
HDD: 500GB
GPU:  ATI Mobility Radeon HD 3100

Voici une liste partielle des jeux que j'ai essayés :

  • Commandant suprême
  • Command and Conquer : Generals (Zero-Hour)
  • Assassin's Creed
  • Un monde en conflit
  • Star Ruler (Blind Mind Studios)
  • Trackmania (Nadeo)
  • Battlefield 2
  • X3:Terran Conflict (Egosoft)
  • Ninjas en caoutchouc Sim City 4

Je pensais que c'était juste mon système qui était lent - je n'ai pas la configuration requise pour faire fonctionner AC - mais voici la partie étrange. Dans l'intro d'ouverture, il tourne à environ 10FPS pendant 3 secondes, puis à 60 environ, plus vite que sur mon précédent ordinateur portable, qui était en fait meilleur que celui-ci. Et, par exemple, des jeux comme Rubber Ninjas, C&C, SupCom, et WiC ont tous fonctionné sans problème sur mon premier ordinateur portable qui avait des spécifications similaires à celui-ci.

Oh ! et une autre petite question - quand j'ai installé Wine pour la première fois, non configuré, j'ai installé Universal Combat de Derek Smart et ça a bien fonctionné. Maintenant, après d'autres jeux et une certaine reconfiguration, il ne fonctionne pas du tout, même si je réinitialise les paramètres par défaut.

Alors, est-ce que je fais quelque chose de mal ? Est-ce que Wine doit être configuré différemment ? Je suis complètement perdu, ici, et toute aide serait -grandement- appréciée, merci. Je m'excuse sincèrement pour le mur de texte, ici, mais je ne voulais laisser aucun détail de côté, car cela tend à rendre les choses plus difficiles pour toutes les parties concernées.

P.S : J'ai récemment découvert ClockGen, trouvé ici ( http://www.techspot.com/community/topics/overclocking-a-toshiba-satellite-laptop.32667/ ) : et je me demandais si l'overclocking était une solution viable ? Je ne me souviens plus de la commande que j'ai utilisée pour trouver la vitesse de mon processeur, mais elle indiquait que ma vitesse actuelle était de 2100 MHz (soit 2,1 gigaoctets), mais que ma vitesse "maximale" était de 4 000 MHz. Maintenant, je ne RÊVERAI jamais d'overclocker un ordinateur portable, ou même un ordinateur de bureau, à cette vitesse ridicule, mais même si je pouvais en tirer 2,4 ou 5... et je prendrais l'entière responsabilité de la colère que je subirais des dieux de l'ordinateur portable. Je ne ferais jamais fonctionner ce truc sans être branché - je ne le fais pas déjà de toute façon, donc une batterie est plutôt discutable pour moi... et j'ai un ventilateur à grande vitesse qui tourne sous n'importe quel ordinateur portable à tout moment - j'ai brûlé mon pantalon avec mon premier ordinateur portable et je me suis méfié depuis.

2voto

robertspierre Points 808

TL;DR : Ce post explique comment exécuter tout jeu utilisant Proton

Proton est un logiciel qui vous permet d'exécuter des jeux Windows sur Linux. Il est développé par Valve.

C'est essentiellement une "distribution Wine", dans le sens où elle utilise Wine en arrière-plan, mais elle est améliorée.

La version Wine qui l'accompagne a été compilée avec des paramètres qui améliorent la vitesse. Plus important encore, la pile wined3d, qui traduit les appels DirectX en OpenGL, a été substituée. Si le jeu fonctionne sous DirectX 9/10/11, DXVK est utilisé pour traduire les appels DirectX en Vulkan. Si le jeu fonctionne sous DirectX 12, VKD3D traduira les appels DirectX en Vulkan. Ces implémentations sont beaucoup plus rapides que les implémentations natives.

Bien que Proton soit "normalement" utilisé par Steam pour exécuter les jeux téléchargés par Steam lui-même, vous pouvez l'utiliser pour exécuter n'importe quel jeu que vous souhaitez. Par exemple, j'exécute Overwatch (téléchargé via Battle.net) en utilisant Proton.

Voici un concept de preuve sur la façon dont vous pouvez utiliser Proton pour exécuter n'importe quel jeu.

Nous ne compilerons pas Proton à partir des sources. Au lieu de cela, nous utiliserons le paquet précompilé qui est fourni avec Steam. Donc, tout d'abord, téléchargez Vapeur exécutez-la, et faites-la télécharger une version de Proton.

  1. Localisez le dossier Proton. Il s'agit généralement d'un sous-dossier sous le nom de $HOME/.local/share/Steam/steamapps/common . Dans ce dossier, vous trouverez différentes versions de Proton, chacune dans son propre sous-dossier. Choisissez une version de Proton (vous voudrez probablement la plus récente). Dans cet exemple, nous utiliserons Proton 5.13. Copiez le sous-dossier "Proton 5.13" ailleurs, disons dans le dossier $HOME/bin/Proton

  2. Ouvrir $HOME/bin/Proton/proton (c'est un script de Python 3) et commentez la ligne

    self.env["WINEPREFIX"] = g_compatdata.prefix_dir

    en le faisant précéder d'un #. Nous ne voulons pas que Proton exécute la ligne ci-dessus. Nous allons fournir notre propre WINEPREFIX .

  3. Localisez le dossier COMPATDATA de Steam. Il s'agit généralement d'un sous-dossier de $HOME/.local/share/Steam/steamapps/compatdata . Dans ce dossier, vous trouverez différents sous-dossiers dont les noms sont entièrement composés de chiffres. Ces sous-dossiers composés uniquement de chiffres constituent le dossier COMPATDATA. Par exemple, mon sous-dossier COMPATDATA est le suivant $HOME/.local/share/Steam/steamapps/compatdata/389730 . Remplacez la dernière partie par votre propre numéro. Si plusieurs dossiers numérotés apparaissent, choisissez le numéro le plus élevé.

  4. TRÈS IMPORTANT Si vous avez plus d'une carte graphique, par exemple intégrée et dédiée (comme la plupart des ordinateurs portables), DXVK vous demande de spécifier laquelle utiliser (vous voudrez utiliser la carte dédiée). Voir DXVK README sur la façon d'y parvenir. En gros, exécutez :

    vulkaninfo | grep "GPU id :"

    vous obtiendrez une sortie comme :

    GPU id : 0 (GeForce GTX 1060) :

    GPU id : 1 (Intel(R) UHD Graphics 630 (CFL GT2))

    Les noms entre parenthèses sont les noms de vos cartes graphiques. Choisissez-en une pour DXVK. Nous choisirons celle de NVIDIA GeForce dans cet exemple. DXVK peut faire correspondre des sous-chaînes de caractères ! Il suffit donc d'utiliser "GeForce". Il n'y a pas d'ambiguïté et, comme nous l'avons dit, le DXVK peut faire correspondre des sous-chaînes de caractères. Il saura donc lequel utiliser.

  5. Choisissez un WINEPREFIX (en gros, un emplacement) dans lequel installer votre jeu. $HOME/.wine convient à la plupart des utilisateurs.

  6. Voici un concept de preuve du script pour exécuter votre jeu en utilisant Proton. Enregistrez-le quelque part et nommez-le launch_proton.sh . Appelez ça comme ça : ./lunch_proton.sh game.exe . (bien sûr, n'oubliez pas de chmod +x launch_proton.sh ). SUBSTITUEZ LES VARIABLES AU DÉBUT DU script AVEC LES VALEURS QUE VOUS AVEZ TROUVÉES DANS LES POINTS PRÉCÉDENTS .

    !/usr/bin/env bash

    Modify these

    export DXVK_FILTER_DEVICE_NAME="GeForce" protonfolder="$HOME/bin/Proton" export STEAM_COMPAT_DATA_PATH="$HOME/.local/share/Steam/steamapps/compatdata/389730"

    Modify if needed

    export WINEPREFIX=$HOME/.wine

    This should be fine for most users

    sudo sysctl dev.i915.perf_stream_paranoid=0 "$protonfolder"/proton run "$1"

Le script a besoin des privilèges sudo à cause de la ligne

sudo sysctl dev.i915.perf_stream_paranoid=0

ce qui améliore les performances. Si vous supprimez cette ligne, le script s'exécutera sans les privilèges sudo.

1voto

thomasrutter Points 33791

Vous n'avez peut-être pas envie d'entendre cela, mais si vous utilisez beaucoup de logiciels exclusivement Windows et que vous avez besoin qu'ils fonctionnent aussi bien que sous Windows, le double amorçage, c'est-à-dire une installation Windows à nu, est le meilleur moyen d'y parvenir.

Toute sorte de couche d'émulation, et Wine est une couche d'émulation, malgré ce que les gens disent que ce nom représente de nos jours, a le potentiel de dégrader les performances.

En particulier, DirectX est une bête énorme et compliquée et le fait de fournir une API d'émulation entière pour elle ajoute une quantité énorme de poids, donc tout jeu 3D va souffrir grandement sous Wine. Les sous-programmes qui sont accélérés par le matériel dans Windows peuvent être émulés en logiciel sous Wine, ou ils peuvent être accélérés par le matériel mais d'une manière différente et moins efficace. Le résultat final est que, la plupart du temps, vous obtiendrez des performances sévèrement dégradées.

Wine est un excellent exercice pour fournir une compatibilité d'API pour les applications Windows, et devrait être admiré pour le succès qu'il a eu à le faire, mais il ne faut jamais s'attendre à ce que quoi que ce soit fonctionne comme dans Windows lui-même.

Note : quelques jeux décents sont disponibles nativement pour Linux, via Steam ou autre, et devraient fonctionner assez bien sur Linux. Ce qui ne fonctionnera pas aussi bien, ce sont les jeux publiés exclusivement pour Windows, en particulier s'ils utilisent DirectX qui sera l'émulation plus lourde et plus lente sur Wine.

0voto

user879356 Points 1

Renseignez-vous sur le vblank=0 qui peut être utilisé avant de lancer Wine. Certains pilotes ATI définissent la synchronisation verticale sur le moniteur ou en catalyseur désactivent tearfree et la synchronisation verticale.

0voto

DUzun Points 101

Le problème des performances 3D est généralement lié à un mauvais pilote, qu'il s'agisse de Windows ou de Linux. Si vous avez un pilote générique sous Windows, vous ne pouvez pas faire grand-chose pour les performances 3D. Si vous avez le bon pilote sous Linux, les performances 3D sont au moins aussi bonnes qu'elles le seraient sous Windows avec un bon pilote.

Ce que Wine fait est de fournir la plateforme d'exécution pour les programmes Windows sous *nix. Il n'émule pas le système d'exploitation Windows, mais traduit plutôt les appels de l'API du système d'exploitation en équivalents *nix.

Un détail cependant, si vous exécutez des programmes Windows x86 (32 bits) sur un Linux x64, vous avez besoin de pilotes vidéo 32 bits également ! Sinon, un pilote générique est utilisé ou une sorte de traduction logicielle vers le pilote x64 a lieu (pas sûr), ce qui est mauvais pour les performances.

D'après mon expérience, certains vieux jeux pour Windows (XP) fonctionnent mieux sous Linux que sous Windows 10 (par exemple Half-Life), avec moins de plantages. Depuis le noyau 4.10, je ne me souviens pas de problèmes avec les pilotes vidéo sur les GPU nVidia et Intel.

Cependant, nVidia a tendance à avoir de meilleurs pilotes pour Windows que pour Linux (vous vous souvenez pourquoi Linus Torvald a fait un doigt d'honneur à nVidia ?). Il existe une version open source des pilotes nVidia appelée " nouveau ", créé par ingénierie inverse. Elle peut être légèrement plus lente que la version propriétaire, mais ses performances et sa stabilité sont correctes.

-2voto

hyades Points 119

Exécuter le jeu dans le terminal en utilisant opengl wine /path/to/file/filename.exe --opengl

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X