Skip Navigation

How does Proton work?

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? 🫤

18

You're viewing a single thread.

18 comments
  • 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 type export 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.

18 comments