Ich habs mal im Artikel eingetragen. Wenn dir noch mehr auffällt, darfst du das natürlich auch gerne ergänzen.
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 (oder auch Steam Play genannt) 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. Die einzelnen Spiele auf der stetig anwachsenden Liste von offiziell unterstützten Spielen, lässt sich hier einsehen. 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 (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 einem angepassten und verbesserten Wine (unter Zusammenarbeit mit CodeWeavers), wined3d für DirectX 9 (Ab Proton 4.11 ist auch D9VK für DirectX 9-Unterstützung per Konfigurationsschalter aktivierbar) 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 Steam Play 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.
Wie Wine es auch kann, nutzt Proton in Steam für jedes ausgeführte Spiel, einen eigenen Wine-Prefix. Diesen findet ihr im Verzeichnis eurer Steam-Library unter steamapps/compatdata/$STEAMID/pfx
, wobei ihr natürlich die $STEAMID durch die Steam-ID des Spiels ersetzen müsst.
Spiele ohne Steam mit Proton
Ihr könnt Proton auch unabhängig von Steam nutzen. Dafür könnt ihr folgendes Kommando verwenden, wenn ihr zuvor ein temporäres Verzeichnis im Home (oder woanders) anlegt:
mkdir ~/tmp/proton cd /zum/spiele/verzeichnis STEAM_COMPAT_DATA_PATH=~/tmp/proton ~/.local/share/Steam/steamapps/common/Proton\ 3.7/proton run spiel.exe
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) Erstellt eine Logdatei beim Starten des Spiels. Die Logdatei befindet sich dann als steam-$APPID.log in eurem Home-Verzeichnis. |
|
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. |
nod3d10 | PROTON_NO_D3D10 |
int | Disable d3d10.dll and dxgi.dll, for d3d10 games which can fall back to and run better with d3d9. (Since Proton 3.16-7) |
noesync | PROTON_NO_ESYNC |
int | Do not use eventfd-based in-process synchronization primitives. |
nofsync | PROTON_NO_FSYNC |
int | Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no FUTEX_WAIT_MULTIPLE support.) |
forcelgadd | PROTON_FORCE_LARGE_ADDRESS_AWARE | int | Force Wine to enable the LARGE_ADDRESS_AWARE flag for all executables. (Since Proton 3.16-6) |
oldglstr | PROTON_OLD_GL_STRING | int | Set some driver overrides to limit the length of the GL extension string, for old games that crash on very long extension strings. (Since Proton 3.16-7) |
d9vk | PROTON_USE_D9VK | int | Aktiviert die experimentelle D9VK-Integration. (Seit Proton 4.11) |
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", }
GloriousEggroll
Unter Proton GE (Glorious Eggroll) werden in einem Fork aktuellere Wine-Versionen und experimentelle Patches zusammengeführt. Die Entwicklung findet in einem Fork auf Github statt.
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 Befehlsteam-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 Befehlsteam-runtime
oder wählt Steam (Runtime) aus. - Eventuell muss das Paket
lib32-vulkan-icd-loader
aus dem Repository installiert werden
Application load error x:xxxxxxxx
Wenn manuell ein Prefix angelegt wurde, müssen zusätzlich noch die Dateien aus $XDG_DATA_HOME/Steam/legacycompat
in das Prefix kopiert werden: …/pfx/drive_c/Program Files (x86)/Steam/
- Anmelden oder Registrieren um Kommentare zu schreiben
- 27894 Aufrufe
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.