27
How does Proton work?
(programming.dev)
A place to discuss and support all things Steam Deck.
Replacement for r/steamdeck_linux.
As Lemmy doesn't have flairs yet, you can use these prefixes to indicate what type of post you have made, eg:
[Flair] My post title
The following is a list of suggested flairs:
[Discussion] - General discussion.
[Help] - A request for help or support.
[News] - News about the deck.
[PSA] - Sharing important information.
[Game] - News / info about a game on the deck.
[Update] - An update to a previous post.
[Meta] - Discussion about this community.
Some more Steam Deck specific flairs:
[Boot Screen] - Custom boot screens/videos.
[Selling] - If you are selling your deck.
These are not enforced, but they are encouraged.
Rules:
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!