Steam proton

From wikinotes

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 version

Now 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 with proton.

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 cmd

I'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 cmd

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

See steam performance

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 and xpadneo drivers both worked fine.

WINEPREFIX=~/.steam/steam/steamapps/compatdata/335300/pfx/ \
    wine control
Game 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


Disable nvidiaXineramaInfo in xorg.conf,
and restart your Display Manager (to restart Xorg with new options).

# /etc/X11/xorg.conf

Section "Screen"
  Option "nvidiaXineramaInfo" "Off"
EndSection
sudo 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.

NOTE:

overlayfs does not support filesystems with ext4's casefold option enabled.
rsync --delete FTW.

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