Skip to main content

Better Linux Gaming With Steam and Proton

Linux Gaming With Steam
(Image credit: Future)

If you're at all interested in gaming on PCs, you’ve probably come across Steam, Valve’s platform for distributing, updating and running games. Steam makes it possible to purchase a game, install it over the internet and then run it from the Steam interface. Ah, but that brings us back to the age-old Linux gaming conundrum of support, as not every PC game is designed to run on anything other than Microsoft Windows. 

That said, there are plenty of Steam games that will run on Linux, and quite often, a Windows Steam game can be convinced to run on Linux even though some ‘fettling’ by the user may be required. This approach is officially supported by Steam using a system called Proton. Getting all of these things running, and then possibly optimising the results, is what we’ll be looking at in this tutorial.

(Image credit: Future)

Steam itself is installed through a custom program called the Steam Installer. This makes sense, because Steam updates itself and the games you install with it, without relying on Linux’s own update systems. These days, the installer is in the official repositories of many Linux distributions such as Ubuntu and Fedora and their derivatives. As Steam is proprietary software you may have to enable a specific repository, such as ‘Multiverse’ for Ubuntu or ‘Nonfree’ on Fedora. 

To install Steam on Ubuntu open a terminal and type

$ sudo apt install steam-installer .

If you’re running a DEB-based distribution, but you can’t find the Steam installer in the official repositories:

1. Download the the installer directly from the Steam website

2. Open a terminal.

3. Install the downloaded file

$ sudo dpkg -i [name of archive]  as the super user.

The Steam application should now be available via your distros menu.

There is also another, unofficial, way of installing Steam that all Linux users might find interesting, and that is installation via the Flatpak system. This offers a few advantages of its own in terms of privacy and sandboxing, as Steam is a system unto itself once it’s on your system. Installation instructions can be found on the Flathub site.

Running Windows Games via Steam on Linux 

(Image credit: Future)

There are many great games that run via Steam on Linux, but what if you want to run a game that doesn’t offer a Linux version? In such cases, there is a good chance that it can be made to run using a system called Proton. 

An official part of Steam on Linux, Proton makes use of both Wine and DXVK, layers that translate Windows software and graphics calls into native Linux ones. However, there are some caveats. Firstly, compared with how the game runs natively on Windows, performance and stability might be an issue. Secondly, it does raise some ethical questions as, arguably, running the Windows version under Linux might reduce pressure on the developers to make a Linux native version of a game. 

Getting back to the first point, the best way to get answers about the viability of running a particular game is to search for it on the ProtonDB website to see what luck other Linux users had with it. The database itself is well organised and includes information about when the testing was carried out and what the specific hardware and software configuration used was. The level of success of running the game on Linux is rated from ‘Borked’ to ‘Platinum’. So, if you find a recent, highly-encouraging report about the game running well on a similar set-up to your own, the odds are good. In addition, ProtonDB reports contain information on tweaks you can use to make stubborn games run properly.

To run Windows versions of games on Linux:

1. Go to Steam > Settings > Steam Play.

2. To enable approved games select ‘Enable Steam Play for supported titles’. Or to enable all games, select ‘Enable Steam Play for other titles’. For the latter option check the game's ProtonDB entry for compatibility and issues. 

Troubleshooting and Tweaking Steam on Linux

If you look through ProtonDB, you’ll notice quite a lot of references to Winetricks. So what is it? Winetricks is a helper script that installs various Windows components that are needed by games. The script pulls through the component and makes it visible to the Wine subsystem, and it’s worth knowing about, even if you’re using Wine outside of Steam.

To install Winetricks:

1. Open a terminal and change directory to Downloads

$ cd "${HOME}/Downloads"

2.  Download Winetricks.

$ wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks

3. Change the file permissions to set Winetricks as an executable file. 

$ chmod +x winetricks

4. Using Winetricks, install CoreFonts, used by Windows applications via Wine.

$ ./winetricks corefonts

Things can get complicated if you want to apply Winetricks fixes to a specific Proton game, but not by much. Thankfully, there is a helper script called Protontricks for just this purpose.

1. Install Protontricks. Open a terminal and use the Python packaging tool “pip” to install. 

$ pip3 install prototricks

2. To apply Protontricks to a specific game, you need to discover the specific game ID of that game using Protontricks itself. For example typing protontricks -s fallout found Fallout and Fallout 4 installed on our Linux gaming machine. 

$ protontricks -s <NAME OF GAME>

3.  Visit the ProtonDB entry for that game. For example, we looked at the entry for Cyberpunk 2077 which has a gold rating, but requires a few tweaks in order to work.

4. Use the Winetricks commands that match the requirements for your game. Typically the syntax is.

$ protontricks [game ID] [Winetricks command]

5. Start your freshly-patched game via Steam.

Special Options for Steam on Linux Games 

Some games may need special launch options to be added in order for them to run correctly. To do so:

1. Right click on the game name in your Steam Library and select General.

2. Type in the launch options from the ProtonDB entry. Typically these end with the string %command%.If there are multiple launch options, ensure that there is only one %command%

You may need to edit a game INI file.

1. Right click on the game name in your Steam Library, select Properties.

2. In the Local Files section click on Browse to locate the INI file.

This guide originally appeared in issue 281 of Linux Format magazine

  • Howardohyea
    whoohoo! This is awesome! Always wanted Linux to prosper and gain support, looks like it finally upped a notch
    Reply
  • GenericUser
    Secondly, it does raise some ethical questions as, arguably, running the Windows version under Linux might reduce pressure on the developers to make a Linux native version of a game.

    It's never really seemed like there was much pressure on developers to begin with. When Linux is such a small market share compared to Windows for gaming, from a development standpoint, why devote resources to supporting it? Gaming support on Linux has unfortunately been a chicken and egg scenario, since the small market share of users that also game means there's not much incentive to support games for it, and the lack of game support means it's going to keep people away who would otherwise be willing to switch to it (other factors notwithstanding).

    I really hope support gets better and better going forward, since it's the only thing holding me back from switching to Linux full time and ditching Windows for good.
    Reply
  • cifyisurzu
    For the people here reading this article, please note that EVERYTHING that was done through commands CAN BE DONE WITH A GRAPHICAL INTERFACE.
    Installing something requires just a simple search in the INTEGRATED app store on Ubuntu (and whatever distro you use), you just type "Steam" and hit "install", the same with winetricks and proton. YOU DON'T NEED TO LEARN PROGRAMMING OR TO USE COMMANDS ON LINUX TO HAVE A FULL GAMING/USER EXPERIENCE WITH A LINUX SYSTEM.

    Some Linux distros (distros are like different versions of Linux, with different interface and programs preinstalled) are for everyone, try it with the same philosophy you have with Windows or Mac and you'll be surprised to see how many things works easier. Other things requires you to do other steps, different from Windows or Mac, but it's not harder, it's just different, and BY NO MEAN you need to use commands for every small thing you want, like installing steam or playing some games.

    Linux distros that are for everyone coming from Mac/Windows: ZorinOS, Ubuntu, Manjaro, PopOS... You can try them for free and stick with the one you like the most.

    If you want to know more about Linux gaming search for Lutris, it's like a "generic" game launcher that automatizes all the process of gaming without Steam.
    Reply
  • excalibur1814
    Reads the tutorial. Closes the page. Launches Steam on Windows and carries on with life.
    Reply
  • tq45
    excalibur1814 said:
    Reads the tutorial. Closes the page. Launches Steam on Windows and carries on with life.

    Ok, thanks for letting us know. 👍. Interesting. Please keep us updated.
    Reply
  • blppt
    GenericUser said:
    It's never really seemed like there was much pressure on developers to begin with.


    Plus, some of the "Linux" versions of games out there are nothing more than an optimized wine wrapper anyways.

    On the plus side, dxvk has gotten so good of late that games running on dx9 in windows perform noticeably better in linux, even older MMOs like SWTOR.

    Its definitely come a long way since the best you could hope for is 50% of the windows performance when DX API calls were only able to be translated to slow OpenGL.
    Reply
  • mac_angel
    Admin said:
    With a few easy to use tweaks we can run our entire Steam library on Linux.

    Better Linux Gaming With Steam and Proton : Read more

    I'd be curious to know if there are any performance differences
    Reply
  • korekan
    sounds great but until you get an error message that its hard to know what cause it let alone troubleshoot it.
    Reply
  • TheOtherOne
    I can never understand why can't all these Linux distros make GUI simple and have double click to open/run/install files like EXE files in Windows? Is it some sort of patent crap that makes them unable to do or is Linux really that complicated that you MUST use command line for simple things? :unsure:

    Every time I think of giving Linux a shot after hearing how better gaming on Linux has become since last decade or so ago, the first thing I see is "open terminal and start typing" ... :homer:(n)
    Reply
  • aetolouee
    TheOtherOne said:
    I can never understand why can't all these Linux distros make GUI simple and have double click to open/run/install files like EXE files in Windows? Is it some sort of patent crap that makes them unable to do or is Linux really that complicated that you MUST use command line for simple things? :unsure:

    Every time I think of giving Linux a shot after hearing how better gaming on Linux has become since last decade or so ago, the first thing I see is "open terminal and start typing" ... :homer:(n)
    There are double click and open files for linux. for installing steam there is .deb file in steams own website and ubuntu repositories and for portable apps you can find .appimage files. steam and every other app also exists in distros pre-installed store to be installed with 1 click. but most users don't bother with them because opening terminal and writing 3 words "sudo apt install" and then name of everything you want after those 3 words "sudo apt install steam vlc neovim .... " is simply the superior solution to searching and clicking in store and then more searching and clicking.
    Reply