I got my Steam Deck 3 days ago and I just started exploring it. Given that I already have a large library of games on Epic Games, one of the first thing I did was installing the Heroic launcher. It worked well for some of the games (and not for others… like Hyper Light Drifter ;_; if someone knows how to configure it please help me). What I’m not understanding is: why do I need to have different proton versions installed for each game? Eg: one game requires GE 7.32 (what’s GE by the way???), another game version 7.45, another one 7.20 etc etc etc… Why? I already had the latest version (8.0) of proton installed on my Steam Deck, shouldn’t it be enough to run all other games being the latest version? 🫤
Proton updates can sometimes unintentionally break or introduce bugs and glitches for certain games in which case you can force the use of an older version of proton where the game works best.
Most of the time though the latest version works fine. GE refers to a custom version of proton with community patches applied to faster than official proton releases.
I have used my Steam Deck for roughly two weeks now so I might be wrong but personally the latest Proton version running games through Steam works perfectly fine.
You don’t usually need different versions of proton for most games. Games will be identified as working on a specific version of proton, but you can usually run them on the newest version without issue.
The two exceptions to this are:
-
If a game won’t run on the newest version of proton, you may need to go back to an older version. This doesn’t happen very often, but it is a concern.
-
GE proton is a special variety of proton that has extra media codecs and some game specific hot fixes built in. The media codecs can’t be included in regular proton for legal reasons. If cutscenes in a game don’t work it can be a missing media codec. This isn’t usually an issue for steam games, valve is able to use fix the video cutscenes by distributing shader cache files. But for a 3rd party launcher like heroic, many games will require GE-proton.
-
You can force a specific Proton version on each game, though I’m not sure (off the top of my head at least) if that would help with not installing duplicates. Iirc best practice for using Wine for games is to have separate installations to avoid having conflicting dependencies, though I’m not sure if Steam does that.
Also, GE is short for Glorious Eggroll, which is the name of the dev who creates custom Proton distributions. People refer to these distributions simply as Proton GE or just GE. Ref: https://github.com/GloriousEggroll/proton-ge-custom
GE is Glorious Eggroll, a FOSS contributor to proton that put his own tweaks.
At it’s very basic, the only thing preventing Windows software from running on Linux is the order in which commands are called to start the program. What WINE (and Proton) do is reconfigure the order of command calls. Of course, it’s much more complicated than that because of proprietary third-party software like DLLs, DirectX, and .NET redistributables. The difficulty is increased by nearly all of these being closed source, and so, developers just have to make educated guesses at what’s going on behind the scenes much of the time.
As for getting games working specifically with WINE and Proton, it’s nearly always better to run the game through a terminal window so you can see the logs output in real time. A lot of times, I find a big log at the start saying something like “{LIBRARY NAME} not found” or something along those lines, and simply installing the missing library through your package manager usually fixes the error. For example if it said “libssl errror” then try typing “sudo apt search libssl” and usually there will be a library literally called that letter for letter and install that, or try installing the closest candidate like maybe libssl3 or libssl-dev.
So, the way to actually launch games through a terminal window is this. Substitute your actual steam path for {your steam path} in the following examples. Then you’d type
~/{your steam path}/steamapps/common/{the name of the proton version you want to run}/proton run ~/{the path to the .exe you want to run}/{the .exe you want to run}.exe
.It’s as simple as that. You might immediately get an error saying KeyError: ‘STEAM_COMPAT_CLIENT_INSTALL_PATH’ or KeyError: ‘STEAM_COMPAT_DATA_PATH’.
For STEAM_COMPAT_CLIENT_INSTALL_PATH, simply add or update the environment variable for that key by typing
export STEAM_COMPAT_CLIENT_INSTALL_PATH=~/{your steam path}/compatibilitytools.d
and for STEAM_COMPAT_DATA_PATH typeexport STEAM_COMPAT_DATA_PATH=~/{your steam path}/steamapps/compatdata
@Stefh so a quick follow-up. I actually have this game and tinkered with it this morning to get it working. Here are the steps to get it working:
Click the Settings icon on Hyper Light Drifter (the 3 stacked slider bars icon) then click on WINETRICKS. Once Winetricks loads, click OK, select Install a Window DLL or component, then scroll to d3dcompiler_ with versions 42, 43, 46, and 47. Try installing any of them, I used the latest version, 47. But if you get an error, go back and try a different version. You can confirm that it was installed by going back into Winetricks and the version you installed should now be checked.
That should be it. It should work now. If that doesn’t work, let me know and I’ll try to help you out.
Alternatively, if you’re more comfortable with command line stuff, go to the prefix folder for Hyper Light Drifter and run:
winetricks d3dcompiler_47
or try changing the version number to 42, 43, or 46 if that doesn’t work.ALSO! I just want to point out that this actually isn’t an issue with proton specifically. There are many Windows users complaining of this exact same issue.
Thank you! I made it working after installing 47, 46 and finally 43! Thank you 🥰
Yay! Happy to help! Enjoy!