ValveSoftware / Proton

Compatibility tool for Steam Play based on Wine and additional components
Other
24.47k stars 1.07k forks source link

Some proton utility commands hang when running on nfs #987

Open wberrier opened 6 years ago

wberrier commented 6 years ago

Setup:

If I install the game to my local disk (~/.local/share/Steam) Starwars Battlefront II (and others) runs fine.

I have an autofs/nfs share (/net/berrier/steam) on another computer (backed by a 32bit xfs filesystem) and when I run a proton game (I've verified this with a few proton games), the following commands hang indefinitely:

python2.7 /net/berrier/steam/steamapps/steamapps/common/Proton 3.7/proton run /home/wberrier/.local/share/Steam/legacycompat/iscriptevaluator.exe --get-current-step 6060
python2.7 /net/berrier/steam/steamapps/steamapps/common/Proton 3.7/proton getcompatpath /net/berrier/steam/steamapps/steamapps/common/Star Wars Battlefront II

As a sidenote, I can run steam under wine and access this same nfs share just fine. I really think it's something with the utility commands that are hanging with this setup.

I've also seen this behavior on a machine running Fedora 27.

wberrier commented 6 years ago

This command is also hanging:

python2.7 /net/berrier/steam/steamapps/steamapps/common/Proton 3.7/proton waitforexitandrun /net/berrier/steam/steamapps/steamapps/common/Star Wars Battlefront II/GameData/BattlefrontII.exe
wberrier commented 6 years ago

Just in case, I tried this with ext4 over nfs and ran into the same problem.

wberrier commented 6 years ago

I tried using the steam client to move the game from the nfs games folder to the local games folder. It didn't move proton, and it's exhibiting the same behavior. These commands run for a long time without completing while the steam client has a window saying "Preparing to launch..."

python2.7 /home/wberrier/.local/share/Steam/steamapps/common/Proton 3.7/proton run /home/wberrier/.local/share/Steam/legacycompat/iscriptevaluator.exe --get-current-step 6060
python2.7 /home/wberrier/.local/share/Steam/steamapps/common/Proton 3.7/proton getcompatpath /net/berrier/steam/steamapps/steamapps/common/Star Wars Battlefront II
nyanloutre commented 6 years ago

I got the same behaviour on Manjaro using the Flatpak and with the native version

Francesco149 commented 5 years ago

i ran into this a few times running zfs over nfs, but if you wait long enough (20+ mins) it eventually finishes and the game runs.

after running the game once it stops happening but sometimes proton decides to run them again, maybe due to proton updates. not sure. either way just waiting it out worked for me

nyanloutre commented 5 years ago

@Francesco149 I noticed Steam is completely unoptimized on NFS

Francesco149 commented 5 years ago

I figured out how to initialize a proton wine prefix from the command line. this way you can ssh into the machine that has physical access to the drives and not have the overhead from nfs. much faster

mkdir ~/.local/share/Steam/steamapps/compatdata/253230
STEAM_COMPAT_DATA_PATH=~/.local/share/Steam/steamapps/compatdata/253230 STEAM_COMPAT_CLIENT_INSTALL_PATH=~/.local/share/Steam' FONTCONFIG_PATH='' ./proton run ~/.local/share/Steam/legacycompat/iscriptevaluator.exe --get-current-step 253230

replace the three 253230 with your game id

this assumes your entire steam install is on the nfs share

you should run this from the desired proton version folder, such as ~/.steam/steam/steamapps/common/Proton 4.2

Francesco149 commented 5 years ago

I've made a script to initialize proton wine prefixes: https://raw.githubusercontent.com/Francesco149/docker-dots/master/bin/protonboot

usage:

protonboot appid

you can get appid from the game's store page url or, if you have protontricks installed, protontricks -s "game name"

using a specific proton version:

protonboot appid "3.16 Beta"

listing proton versions

protonboot ls