Ein besonders kniffliges Thema sind Spiele unter Linux. Spiele sind im Grunde nichts anderes als spezielle, sehr komplexe Programme, die auf eine Vielzahl von Programmen, Schnittstellen und Bibliotheken innerhalb des Systems zugreifen um überhaupt anzuspringen bzw. zu laufen.
Für diejenigen die sich ein bisschen mit Linux auskennen, wissen wie schwierig Video und Audio Wiedergabe zu Anfang war, und wenn man sich nun vorstellt, dass ein PC-Spiel genau diese Stellen braucht, ja quasi davon lebt, kann man sich ein bisschen vorstellen wie schwer es Windowsprogramme im allgemeinen, und Spiele im besonderen, haben.
Seit 2022, als ich den Entwurf für diesen Beitrag erstellte, hat sich eine Menge getan. Projekte kamen und gingen, doch WINE hat sich immer mehr gemausert und steht meiner Ansicht besser da denn je.
Um auf Linux Windows-Programme auszuführen (siehe den Artikel WINE)
Folgende Links haben mir damals sehr geholfen, auch wenn sich inzwischen vieles verändert und manches vereinfacht hat:
- https://xn--apfelbck-s4a.de/windows-software-unter-linux-wine-und-playonlinux/
- https://www.linuxandubuntu.com/home/playonlinux-for-easier-use-of-wine
- https://wiki.ubuntuusers.de/Spiele/PlayOnLinux/
- 111tips
- Computerbase
Inzwischen 2023/2024 bin ich von playonlinux vollständig abgekommen. Die Version 5 bewegt sich im ewigen alpha-Stadium, und die 4.3 Version hat keine aktuell kompilierten Wine-Versionen zur Verfügung. Mit dem Paket „wine-staging-wow64“ hat sich da vieles geändert und verbessert. Da nativ die WoW64 Umgebung genutzt wird, also eine 64bit Umgebung die die Emulation von 32bit-Dlls und Programmen erlaubt (soweit ich das richtig verstanden habe):
Mit „dxvk“ in Kombination schreitet die Einbettung der DirectX-Umgebung in Übersetzung zu Vulkan weiter voran, und arbeitet sehr gut mit WINE zusammen.
Mit „arch-gaming-meta“ werden die meisten Abhängigkeiten installiert, die man rundherum so noch braucht. Dennoch hab ich nen zusätzlichen Befehl fürs Terminal, der noch ein bisschen weiter geht, bzw. andere Software mit berücksichtigt:
sudo pacman -Syu vulkan-tools joyutils lutris winetricks retroarch libretro-core-info libretro-bsnes libretro-mgba libretro-snes9x scummvm scummvm-tools alsa-oss dkms virtualbox freepats-general-midi qt5-gamepad linux-steam-integration game-devices-udev giflib lib32-giflib libpng lib32-libpng libldap lib32-libldap gnutls lib32-gnutls mpg123 lib32-mpg123 openal lib32-openal v4l-utils lib32-v4l-utils libpulse lib32-libpulse alsa-plugins lib32-alsa-plugins alsa-lib lib32-alsa-lib libjpeg-turbo lib32-libjpeg-turbo libxcomposite lib32-libxcomposite libxinerama lib32-libxinerama ncurses lib32-ncurses opencl-icd-loader lib32-opencl-icd-loader libxslt lib32-libxslt libva lib32-libva gtk3 lib32-gtk3 gst-plugins-base-libs lib32-gst-plugins-base-libs lib32-libao vulkan-icd-loader lib32-vulkan-icd-loader cups samba vulkan-headers vulkan-mesa-layers gamemode discord lib32-libnm lib32-libudev0-shim vkd3d protontricks
über AUR:
wine-staging-wow64
gextractwinicons
q4wine-git
arch-gaming-meta
protonup-qt
vkd3d-proton-bin
dosbox-staging-git
dxvk-bin
protonfixes-git
gamehub-git
libdxvk
Damit ist ein breites Spektrum abgedeckt. Von DOS-Spielen (über DOSbox) bis hin zu Steam über Windows, und vielen anderen Möglichkeiten.
Wenn man dann in q4Wine einen Starter für ein Spiel anlegt, kann man in den „Argumente“ folgende Zeile hinterlegen um dxvk konkret anzusprechen:
env DXVK_FAKE_DX10_SUPPORT=1 DXVK_FAKE_DX11_SUPPORT=1 VKD3D_DEBUG=“none“ LD_PRELOAD=“libpthread.so.0 libGL.so.1″ STAGING_SHARED_MEMORY=1 STAGING_WRITECOPY=1 __GL_SYNC_TO_VBLANK=0 WINEDEBUG=-all __GL_THREADED_OPTIMIZATION=1
Das alles bietet natürlich keine Garantie das ein Spiel läuft.
Auch kann es immer wieder sein, dass mit einer neuen Version von WINE oder dxvk ein Spiel, dass zuvor gelaufen ist, nicht mehr läuft.
Aktuell wenn ich mal zum spielen komme, ist HoMM7 mein Favorit über Steam Windows. Da man die Connect-Software von Ubisoft ebenso dafür braucht, war es doppelt knifflig das das funktioniert.