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 auf den 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.

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.
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.

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.

Screenshots und Videos