protonscr

Wine runs a game with no problems but Proton doesn't

protonclosed
ValveSoftware/Proton#2967 · opened 2019-08-09 by BodilessSleeper · updated 2020-04-09 · 5 comments · github
BBodilessSleeper 2019-08-09 github

So I got some old games on the CD drives and I wanted to install them and play them on my Linux boot (running dual boot but only because Epic Games aka Dauntless)
Since I know the installer software is a .exe file I wanted to check if I could run .exe files first
I downloaded a freeware copy of Pocket Tanks and installed it with Wine handling the install.exe
After installing I tried using proton to run pockettanks.exe - the game launcher, and I went through all the steps, I checked the box to allow Steam Play to all games and I changed the run settings to force Proton, the file location was all good and the launch settings field was empty so it should've ran just fine
Instead when I press Play, double click or right click -> Launch... the steam window blinks and nothing happens, no new processes open up in my task manager and nothing appears to be happening
I know I can play the games on Wine too but Proton kinda feels better 'cause all my games are in one library (and I think it has better performance but I'm not so sure about it)

?ghost 2019-08-09 github

Technically, Proton isn't Wine and yet it is (why its called Proton and not Wine). Proton defaults to using DXVK for example which can cause failures.

I think your issue here it too vague or some other word I can't think of at the moment as yes, Wine can play games that Proton can't though perhaps the amount could be lower by now. (though a bunch of games will work with some tweaks).

XXakepSDK 2019-08-09 github

Game installer may add some registry entries, which are not present, when you launch game using proton, because it uses it's own per game prefix.

TTaiTair 2019-08-19 github

The game was never installed in the Proton prefix. It was installed in the Wine prefix and then you tried to run the binary through Proton. Of course it would not work. The binary didn't have any access to the files it installed.
What you should have done is add the game to steam as a "non-steam game" so that it creates a prefix. Then in the terminal you would have done something like:
export WINEPREFIX='/home/yourusername/.steam/steam/steamapps/compatdata/gameid/pfx'; winetricks
Where gameid is an id generated by steam, e.g 447040. Looking for files inside compatdata can help, e.g. search pockettanks.exe.
Then in winetricks you would have gone under uninstaller (this also installs) to launch your installer for the game. This would have installed the game files in the proton prefix. Then you would've been able to launch it from steam.
Another option which might've worked would've been to launch the installer from steam instead of trying to launch the game executable. It would've probably installed itself automatically in the proton prefix.

BBodilessSleeper 2019-08-20 github

Yeah, well, I'm kinda new Linux and I mostly played games that were verified for Proton and I only heard of Wine as a software that helps with getting over the OS gap, I didn't look up how it actually works so I don't know a single thing you were saying about Wine/Proton prefixes
What I did notice though is that Wine installed the game in 'C:...' probably to mimic the Windows but I couldn't find it anywhere so that might be the problem 😅

TTaiTair 2019-08-20 github

Gotcha. So basically a prefix is like a virtual C drive. Which is why you see C: in wine. It's to help make the program believe it's running on Windows. The prefix can be stored anywhere on your hard-drive and differs from a virtual machine. Steam puts all the prefixes it creates under /home/yourusername/.steam/steam/steamapps/compatdata/ by default. You will see if you go in the compatdata for any game there will be a "pfx" folder. That is your prefix.
I cannot find a detailed explanation of wine prefixes but this might help:
https://linuxconfig.org/using-wine-prefixes
https://www.linuxquestions.org/linux/answers/applications_gui_multimedia/complete_guide_using_wine_command_line
Wine is basically a translation layer, very broadly put it translates "Windows Calls" into "Linux Calls". But it still needs some structure like prefixes.