Proton

Bild des Benutzers NoXPhasma

Proton ermöglicht es Linuxspielern gewisse Steam-Spiele, deren ursprüngliche Plattform lediglich Windows ist, fortan auch unter Linux auszuführen. Eine Liste an offiziell unterstützen Spielen findet ihr unter Offizielle Proton-Spiele oder im Menü links.

Steam Client

Proton ist nun im Standard-Steam-Client enthalten, Proton ist auch automatisch aktiv, somit euch Proton für die offiziell unterstützten Titel zur Verfügung. Mit einer weiteren Einstellung könnt ihr Proton auch für die gesamte Spiele-Bibliothek erweitern. Hier empfiehlt es sich einen Blick in die [ProtonDB https://www.protondb.com] (zuvor bekannt als Steam Play Compatibility Report) für die Lauffähigkeit der einzelnen Spiele zu werfen.

Damit stehen euch zahlreiche Windows-Titel unter Linux zur Verfügung. Diese Titel werden von Valve bereits getestet und freigegeben sein. Ein wenig kann man sich das wie die offiziell unterstützten Wine-Portierungen vorstellen. Als Anwender merkt man prinzipiell keinen Unterschied. Im Endeffekt wird die Anzahl der Spiele, die unter Linux lauffähig sind, massiv anwachsen. Optional lässt sich Proton auch für alle nicht offiziell unterstützten Spiele aktivieren.

Zusätzlich gibt es noch ProtonFixes, dass zur Laufzeit Schwierigkeiten je Spiel korrigieren kann.

Technik (Wine)

Proton basiert auf ein angepasstes und verbessertes Wine (unter Zusammenarbeit mit CodeWeaver), wined3d für DirectX 9 und 11 als OpenGL-Implementation, DXVK für DirectX 11 und vkd3d für DirectX 12 und der Multi-Threading-Verbesserung esync unter der eigenen Wine-Distribution Proton zusammengetragen werden. Zudem wird das Steam Play-Konzept auf diese neue Toolchain erweitert.

Die Verbesserungen stehen alle unter Open Source-Lizenzen und wurden an die entsprechenden Projekte zurückgespielt.

Wer Proton und das neue SteamPlay ausprobieren möchte benötigt aktuelle Versionen der Grafikkartentreiber für NVIDIA (NVIDIA 396.51) und AMD (Mesa 18.1.x, für Core-OpenGL braucht es Mesa 18.2) dazu. Genaueres dazu verrät eine Anleitung auf Github.

Konfiguration

Proton lässt sich in den Startoptionen der Spiele in der Bibliothek über Environment Variablen konfigurieren:

Compat config string Environment Variable Type Description
PROTON_LOG int (Seit Proton 3.7-4) Convenience method for dumping a useful debug log to $HOME/steam-$APPID.log. For more thorough logging, use user_settings.py.
PROTON_DUMP_DEBUG_COMMANDS int (Seit Proton 3.7-4) When running a game, Proton will write some useful debug scripts for that game into /tmp/proton_$USER/.
PROTON_DEBUG_DIR str (Seit Proton 3.7-5) Debug script dump directory can be configured with, see PROTON_DUMP_DEBUG_COMMANDS.
wined3d11 PROTON_USE_WINED3D11 int Use OpenGL-based wined3d instead of Vulkan-based DXVK for d3d11. (Depricated since Proton 3.16-2)
wined3d PROTON_USE_WINED3D int Use OpenGL-based wined3d instead of Vulkan-based DXVK for d3d11. (Since Proton 3.16-2)
nod3d11 PROTON_NO_D3D11 int Disable d3d11.dll, for games which can fall back to and run better with d3d9.
noesync PROTON_NO_ESYNC int Do not use eventfd-based in-process synchronization primitives.

Bsp:

PROTON_USE_WINED3D11=1 %command%

Einige dieser Variablen lassen sich auch in einer Python Datei als Standard festlegen. Dazu navigiert ihr nach ~/.steam/steam/steamapps/common/Proton 3.7 und benennt die user_settings.sample.py in user_settings.py um. Anschließend lassen sich die Werte auskommentieren und setzen:

#!/usr/bin/env python2.7
 
#to enable these settings, name this file "user_settings.py"
 
user_settings = {
    #logs are saved to $HOME/steam-$STEAM_APP_ID.log, overwriting any previous log with that name
    "WINEDEBUG": "+timestamp,+pid,+tid,+seh,+debugstr,+module",
 
    "DXVK_LOG_LEVEL": "info",
 
    #Enable DXVK's HUD
#    "DXVK_HUD": "devinfo,fps",
 
    #Use wined3d for d3d11 instead of dxvk
#    "PROTON_USE_WINED3D11": "1",
 
    #Disable d3d11 entirely
#    "PROTON_NO_D3D11": "1",
 
    #Disable in-process synchronization primitives
#    "PROTON_NO_ESYNC": "1",
}

Troubleshooting

Archlinux

Spiele bekommen keine Internetverbindung, wenn sie über Proton laufen
  • Proton scheint ein paar Bibliotheken zu benötigen, die steam-native-runtime nicht mitbringt. Die Steam Runtime bringt diese mit. Startet dazu Steam über den Befehl steam-runtime oder wählt Steam (Runtime) aus.
  • Eventuell braucht das Spiel die libgnutls.so in Version 26. Ein Symlink auf die aktuelle Version und ein Vorladen dieser Version bringt meist schon den gewünschten Erfolg. ln -s /usr/lib/libgnutls.so ./libgnutls.so.26
Spiele mit DX11 starten nicht - wine: unimplemented function vulkan-1.dll.vkGetInstanceProcAddr, aborting
  • Proton scheint ein paar Bibliotheken zu benötigen, die steam-native-runtime nicht mitbringt. Die Steam Runtime bringt diese mit. Startet dazu Steam über den Befehl steam-runtime oder wählt Steam (Runtime) aus.
  • Eventuell muss das Paket lib32-vulkan-icd-loader aus dem Repository installiert werden
Screenshots und Videos
ume
Bild des Benutzers ume
Offline
Beigetreten: 23.10.2018
Beiträge: 1

Bei meinem Arch Linux konnte ich den Fehler "wine: unimplemented function vulkan-1.dll.vkGetInstanceProcAddr, aborting" durch die Installation von "lib32-vulkan-icd-loader" beheben.

Lucki
Bild des Benutzers Lucki
Offline
Beigetreten: 04.12.2011
Beiträge: 235

Ich habs mal im Artikel eingetragen. Wenn dir noch mehr auffällt, darfst du das natürlich auch gerne ergänzen.