Steam proton: Difference between revisions
(→Tools) |
|||
(22 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Steam Proton | Steam Proton is a fork of [[wine]], that adds patches, DXVK primarily geared towards speed.<br> | ||
It is bundled with [[steam]] and is intended for running games on linux. | |||
= Documentation = | = Documentation = | ||
Line 7: | Line 8: | ||
| proton db || https://www.protondb.com/explore | | proton db || https://www.protondb.com/explore | ||
|- | |- | ||
| issue tracker || https://github.com/ValveSoftware/Proton/issues | |||
|} | |} | ||
</blockquote><!-- Documentation --> | </blockquote><!-- Documentation --> | ||
Line 17: | Line 19: | ||
|- | |- | ||
| <code>~/.local/share/Steam/steamapps/common/*</code> || default game install dirs | | <code>~/.local/share/Steam/steamapps/common/*</code> || default game install dirs | ||
|- | |||
| <code>~/.local/share/Steam/logs/content_log.txt</code> || logs proton game startup, executed command | |||
|- | |- | ||
| <code>${STEAM_DOWNLOAD_DIR}/steamapps/compatdata/${APPID}/pfx</code> || wine prefix for game (game saves, settings, etc here) | | <code>${STEAM_DOWNLOAD_DIR}/steamapps/compatdata/${APPID}/pfx</code> || wine prefix for game (game saves, settings, etc here) | ||
Line 26: | Line 30: | ||
= Tools = | = Tools = | ||
<blockquote> | <blockquote> | ||
{| | {| | ||
|- | |- | ||
| [[wine]] || wine | | [[wine]] || wine | ||
Line 33: | Line 37: | ||
|- | |- | ||
| [[protonhax]] || load multiple wine apps in same wineprefix (ex: cheat engine alongside game) | | [[protonhax]] || load multiple wine apps in same wineprefix (ex: cheat engine alongside game) | ||
|- | |||
| [[steamtinkerlaunch]] || shellscripts to shoehorn reshades and various mod managers into steam on linux | |||
|- | |- | ||
|} | |} | ||
Line 38: | Line 44: | ||
= Install = | = Install = | ||
<blockquote> | |||
== Proton (official) == | |||
<blockquote> | <blockquote> | ||
Steam proton is a wrapper built around wine.<br> | Steam proton is a wrapper built around wine.<br> | ||
Line 58: | Line 66: | ||
Now search the [https://www.protondb.com/ protondb] for your game for additional hacks that may be necessary. | Now search the [https://www.protondb.com/ protondb] for your game for additional hacks that may be necessary. | ||
</blockquote><!-- Proton (official) --> | |||
== Proton-GE == | |||
<blockquote> | |||
An unofficial patched proton with extra features.<br> | |||
You can choose it as your proton-version within steam, and run it from the commandline with <code>proton</code>. | |||
<syntaxhighlight lang="bash"> | |||
aura -A proton-ge-custom-bin | |||
</syntaxhighlight> | |||
</blockquote><!-- Proton-GE --> | |||
</blockquote><!-- Install --> | </blockquote><!-- Install --> | ||
= Usage = | = Usage = | ||
<blockquote> | |||
== General == | |||
<blockquote> | <blockquote> | ||
<source lang="bash"> | <source lang="bash"> | ||
Line 73: | Line 94: | ||
I've been experimenting with [[overlayfs]] and bootscripts for mods.<br> | I've been experimenting with [[overlayfs]] and bootscripts for mods.<br> | ||
If installing a mod that requires patching files in-place, mount your game and run installer from cmd.exe. | If installing a mod that requires patching files in-place, mount your game and run installer from cmd.exe. | ||
</blockquote><!-- General --> | |||
== Launch Outside of Steam == | |||
<blockquote> | |||
Steam can rob you of some performance. If you launch games outside of it you might get a performance boost. | |||
<syntaxhighlight lang="bash"> | |||
# specific version | |||
env WINEPREFIX=${STEAM_GAMEDIR}/steamapps/compatdata/${APPID}/pfx \ | |||
"$HOME/.local/share/Steam/steamapps/common/Proton X.YY/dist/bin/wine64" \ | |||
foo.exe | |||
# experimental | |||
env WINEPREFIX=${STEAM_GAMEDIR}/steamapps/compatdata/${APPID}/pfx \ | |||
"$HOME/.local/share/Steam/steamapps/common/Proton - Experimental/files/bin/wine64" \ | |||
foo.exe | |||
# you may also be able to use protontricks | |||
protontricks -l # list installed apps | |||
protontricks ${appid} -c cmd | |||
</syntaxhighlight> | |||
</blockquote><!-- Launch Outside of Steam --> | |||
== Non-Steam Games == | |||
<blockquote> | |||
You can also take advantage of proton's [[wine]] patches for non-steam games.<br> | |||
You could probably also install proton independently of steam, using their github repo. | |||
<syntaxhighlight lang="yaml"> | |||
- install steam | |||
- install a game using proton (to install a proton dist) | |||
</syntaxhighlight> | |||
{{ WARNING | | |||
this isn't quite right, proton's wine is installed to <code>steamapps/common/Proton X.X/dist/bin/wine64</code> }} | |||
<syntaxhighlight lang="bash"> | |||
mkdir -p ~/steamless-proton/yourgame | |||
cp ~/.local/share/Steam/steamapps/compatdata/${APPID}/pfx ~/steamless-proton/yourgame | |||
env WINEPREFIX=~/steamless-proton/yourgame ~/steamless-proton/yourgame/pfx/Proton\ X.X.X/dist/bin/wine64 ./game-installer.exe | |||
</syntaxhighlight> | |||
</blockquote><!-- Non-Steam Games --> | |||
</blockquote><!-- Usage --> | </blockquote><!-- Usage --> | ||
= Performance Tuning = | |||
<blockquote> | |||
See [[steam performance]] | |||
</blockquote><!-- Performance Tuning --> | |||
= Controllers = | = Controllers = | ||
Line 160: | Line 228: | ||
= Mods = | = Mods = | ||
<blockquote> | <blockquote> | ||
* Install supplementary tools into the same wine prefix, identified by [[protontricks]] | {{ TODO | | ||
extract much of this doc into a linux-gaming page.<br> | |||
A lot of this is not proton specific. | |||
}} | |||
* Install supplementary tools into the same wine prefix, identified by [[protontricks]] | |||
* Game executable versions can be obtained with [[pev]] <code>peres -v game.exe | grep 'File Version'</code> | * Game executable versions can be obtained with [[pev]] <code>peres -v game.exe | grep 'File Version'</code> | ||
* Use the [[steam ui#Disable Updates]] tricks to lock updates until you are ready | * Use the [[steam ui#Disable Updates]] tricks to lock updates until you are ready | ||
* Consider using [[ext4]]s '''casefold''' option for case-insensitive directories | |||
* Consider using [[overlayfs]] for mods, or for evaluating game versions | * Consider using [[overlayfs]] for mods, or for evaluating game versions | ||
* If installing reshade, consider https://github.com/kevinlekiller/reshade-steam-proton | |||
{{ NOTE | | |||
[[overlayfs]] does not support filesystems with [[ext4]]'s '''casefold''' option enabled.<br> | |||
<code>rsync --delete</code> FTW. | |||
}} | |||
</blockquote><!-- Mods --> | </blockquote><!-- Mods --> | ||
= Debugging = | = Debugging = | ||
<blockquote> | <blockquote> | ||
== Enable Logging == | |||
<blockquote> | |||
<syntaxhighlight lang="yaml"> | |||
rclick game: | |||
- properties: | |||
- general: | |||
- LAUNCH OPTIONS: PROTON_LOG=1 %command% | |||
</syntaxhighlight> | |||
Logs will be written to <code>~/steam-*.log</code> | |||
</blockquote><!-- Enable Logging --> | |||
<source lang="bash"> | <source lang="bash"> | ||
cd ~/.local/share/Steam/steamapps/common/Proton X.XX | cd ~/.local/share/Steam/steamapps/common/Proton X.XX |
Latest revision as of 01:12, 28 August 2023
Steam Proton is a fork of wine, that adds patches, DXVK primarily geared towards speed.
It is bundled with steam and is intended for running games on linux.
Documentation
proton db https://www.protondb.com/explore issue tracker https://github.com/ValveSoftware/Proton/issues
Locations
~/.local/share/Steam
default ${STEAM_DOWNLOAD_DIR}
~/.local/share/Steam/steamapps/common/*
default game install dirs ~/.local/share/Steam/logs/content_log.txt
logs proton game startup, executed command ${STEAM_DOWNLOAD_DIR}/steamapps/compatdata/${APPID}/pfx
wine prefix for game (game saves, settings, etc here) Z:\home\will\.local\share\Steam\steamapps\common\*
games mounted from linux filesystem on Z: drive
Tools
wine wine protontricks winetricks for proton wine prefixes protonhax load multiple wine apps in same wineprefix (ex: cheat engine alongside game) steamtinkerlaunch shellscripts to shoehorn reshades and various mod managers into steam on linux
Install
Proton (official)
Steam proton is a wrapper built around wine.
It enables you to play unported windows games on linux.FileMenu > Settings: - Account Tab: - Beta Participation: CHANGE - Beta participation: Steam Beta Update Restart Steam FileMenu > Settings: - Steam Play: - [x] Enable Steam Play for supported titles - [x] Enable Steam Play for All titles - Choose latest beta versionNow search the protondb for your game for additional hacks that may be necessary.
Proton-GE
An unofficial patched proton with extra features.
You can choose it as your proton-version within steam, and run it from the commandline withproton
.aura -A proton-ge-custom-bin
Usage
General
# use 'protontricks' to identify your game's ID protontricks -s 'Elite' # run regular wine commands within prefix WINEPREFIX=~/.steam/steam/steamapps/compatdata/${APPID}/pfx/ \ wineconsole cmdI've been experimenting with overlayfs and bootscripts for mods.
If installing a mod that requires patching files in-place, mount your game and run installer from cmd.exe.Launch Outside of Steam
Steam can rob you of some performance. If you launch games outside of it you might get a performance boost.
# specific version env WINEPREFIX=${STEAM_GAMEDIR}/steamapps/compatdata/${APPID}/pfx \ "$HOME/.local/share/Steam/steamapps/common/Proton X.YY/dist/bin/wine64" \ foo.exe # experimental env WINEPREFIX=${STEAM_GAMEDIR}/steamapps/compatdata/${APPID}/pfx \ "$HOME/.local/share/Steam/steamapps/common/Proton - Experimental/files/bin/wine64" \ foo.exe # you may also be able to use protontricks protontricks -l # list installed apps protontricks ${appid} -c cmdNon-Steam Games
You can also take advantage of proton's wine patches for non-steam games.
You could probably also install proton independently of steam, using their github repo.- install steam - install a game using proton (to install a proton dist)
WARNING:
this isn't quite right, proton's wine is installed to
steamapps/common/Proton X.X/dist/bin/wine64
mkdir -p ~/steamless-proton/yourgame cp ~/.local/share/Steam/steamapps/compatdata/${APPID}/pfx ~/steamless-proton/yourgame env WINEPREFIX=~/steamless-proton/yourgame ~/steamless-proton/yourgame/pfx/Proton\ X.X.X/dist/bin/wine64 ./game-installer.exe
Performance Tuning
Controllers
DirectInput API
You may need to disable the wine controller driver for the game to work.
NOTE:
did not work for me, but both the stock
xpad
andxpadneo
drivers both worked fine.WINEPREFIX=~/.steam/steam/steamapps/compatdata/335300/pfx/ \ wine controlGame Controllers: Connected: - (choose your controller, and disable)Input should now come from linux, rather than be re-interpreted in wine.
Microsoft Xinput
should be fine once controller-type selected/enabled in steam settings.
Triple-Monitor Gaming
1. [nvidia] 3x monitors as 1x screen, restart Xorg
DisablenvidiaXineramaInfo
inxorg.conf
,
and restart your Display Manager (to restart Xorg with new options).# /etc/X11/xorg.conf Section "Screen" Option "nvidiaXineramaInfo" "Off" EndSectionsudo systemctl restart lxdm.service
2. Share monitor resolution on all screens
# something like this xrandr \ --output DP-2 --left-of HDMI-1 --mode 1920x1080 \ --output HDMI-1 --mode 1920x1080 \ --output USB-C-0 --right-of HDMI-1 --mode 1920x1080
3. Configure game
The configuration will likely be different from windows, even when native.
You may need an ini tweak, it may magically work, etc.Here are some games I have been able to make work with 3x monitors.
The easiest workflow is to symlink the used
xorg.conf
, and have 2x configurations available.
Restart your Display Manager to restart Xorg and re-login to your new configuration.
Mods
TODO:
extract much of this doc into a linux-gaming page.
A lot of this is not proton specific.
- Install supplementary tools into the same wine prefix, identified by protontricks
- Game executable versions can be obtained with pev
peres -v game.exe | grep 'File Version'
- Use the steam ui#Disable Updates tricks to lock updates until you are ready
- Consider using ext4s casefold option for case-insensitive directories
- Consider using overlayfs for mods, or for evaluating game versions
- If installing reshade, consider https://github.com/kevinlekiller/reshade-steam-proton
Debugging
Enable Logging
rclick game: - properties: - general: - LAUNCH OPTIONS: PROTON_LOG=1 %command%Logs will be written to
~/steam-*.log
cd ~/.local/share/Steam/steamapps/common/Proton X.XX cp user_settings.sample.py user_settings.py # run game # see crash log in ~/steam-XXXXXX.log