somethinglikegames.de

Categories


Tags

Gaming on Linux

As I was creating the file for this article, I noticed that the last article was already over two months ago, and I’m wondering where the time has gone. But what can you do, it must have gone somewhere 😉 A lot has happened in the meantime, and I realized that my instructions for installing the Affinity Suite in the last article no longer work and that there are now easier alternatives, so I revised the relevant section. But enough about productive topics. This article is finally going to be about 🕹️ gaming 🎮.

Before we really get started, here is the usual overview of all the articles in this series that have been published so far:

  1. Linux? What the penguin!?
  2. Basic installation of the Linux distribution
  3. Installation of native Linux software
  4. Installing Windows software on Linux
  5. Gaming on Linux

An initial overview

My history with gaming on Linux began around the mid-2000s. A lot has happened in these two decades. Gaming on Linux has never been as easy and convenient as it is today, and chances are good that it will get even better in the future. According to the Steam Hardware & Software Survey, Linux now has a market share of >3%, which may not sound like much, but when you look at the last 7 years, it’s a big difference. Liam from GamingOnLinux is always kind enough to document the respective results and provide additional information so that you can see directly when the Steam Deck was released and when free support for Windows 10 was discontinued.

At this point, I would like to clarify that gaming on Linux used to work well and conveniently, provided there was a Linux version of the game. I remember well that there were Linux versions of Neverwinter Nights and Quake 3 Arena. But I can now also understand why studios limit support to the operating systems they consider relevant to the market, and I am therefore grateful that Windows games now run very well on Linux for the most part.

The following brief overview is by no means exhaustive. In addition to the options mentioned here, there are at least as many others that are often just as good and sometimes even better or easier to use. But, as usual, I will limit myself to the tools with which I have already gained experience myself.

Steam

Steam is now the undisputed market leader among game distribution platforms. Many improvements in gaming on Linux are thanks to Valve, the company behind Steam:

  • A native Linux version of the Steam client has been available since 2013, while alternative clients such as GOG Galaxy and the Epic Games Store still do not offer anything comparable for Linux. I find this particularly unfortunate in the case of GOG, as their mission “We make games last forever” and DRM-free policy would actually be a good fit for Linux. 🤷
  • Thanks to the development of Proton, support for Windows games on Linux is getting better and better, and Valve Anti-Cheat, BattlEye, and Easy Anti-Cheat also support Proton.
  • Due to the success of the Steam Deck, more and more studios are trying to make their games compatible with Proton. When the Steam Machine is released in 2026 and is accepted by the market, this trend will continue in the future.
  • In general, it is very easy to check on ProtonDB how well certain Steam games run on Linux. Unfortunately, this only applies to games that can be purchased on Steam. 😞

If you have a game on Steam (purchased) and it runs on Linux either natively or with the help of Proton, the installation is as easy as it is on Windows.

Lutris

We briefly looked at Lutris as a frontend for Wine in the last article. But Lutris offers more than “just” a graphical frontend for Wine. It offers:

  • The ability to directly integrate various distribution platforms (Steam, Epic Games Store, GOG, etc.).
  • The ability to use a wide variety of “runtime environments” (Wine, Proton, ScummVM, etc.).
  • Ready-made scripts on the website, e.g. for Battle.net, which simplify the installation and configuration of games, as you then only have to follow the customized installation process.

Lutris offers many configuration options and support for a variety of distribution platforms and runtime environments as needed. If a game is executable under Linux and you want to use a graphical front end, Lutris is a good launcher, even in more complicated cases.

Heroic Games Launcher

The Heroic Games Launcher is a cross-platform, lightweight launcher that is intended to be a possible alternative to the Epic Games Launcher and GOG Galaxy. Accordingly, it offers:

  • Support for various runtime environments (Wine, Proton, etc.) under Linux.
  • Integration with the Epic Games Store and GOG, including cloud synchronization of save states in some cases.
  • Integration of games installed elsewhere, allowing it to function as a central launcher.

If the games are executable on Linux without configuration adjustments or similar, the Heroic Games Launcher is a simple click & go solution for games from Epic Games or GOG.

Proton

We already took a brief look at Proton in our last article. Since Proton is now generally the basis for gaming on Linux, unless a native Linux version exists, we will now take a closer look at it.

For me, Proton is Wine on steroids with a clear focus on gaming. It combines Wine with additional libraries to enable 3D gaming performance comparable to Windows. This is achieved by using VKD3D or DXVK, depending on the DirectX version used, to map the Direct3D commands to Vulkan commands. For compatibility reasons, OpenGL can also be used instead of Vulkan, in which case the conversion is performed by WineD3D.

It is even possible to use newer GPU features such as FreeSync / G-Sync, hardware ray tracing, Resizable BAR/ Smart Access Memory, or real-time upscaling, i.e., AMD FSR, NVIDIA DLSS, and Intel XESS. This means that how well a game performs under Linux depends mainly on the quality and optimization of the drivers from the individual GPU manufacturers. With an AMD graphics card, it doesn’t really make any difference whether you play under Windows or Linux, as you get truly comparable performance, while NVIDIA unfortunately still has a performance penalty of >10% with DirectX12. I’m keeping my fingers crossed that NVIDIA will move away from its own proprietary driver and take a step towards the open source community, so that there will soon be a good NVIDIA driver based on Mesa3D (https://mesa3d.org/), similar to AMD and Intel. Alternatively, they could of course improve their proprietary driver, but that would certainly cost significantly more than providing volunteers with the necessary information.

If you would like more in-depth information about Proton, I recommend the following video by Thomas Crider aka GloriousEggroll:

GE-Proton

GE-Proton is a customized version of Proton, developed by Thomas Crider aka GloriousEggroll. Thomas Crider works full-time at Red Hat and not only maintains GE-Proton, but is also primarily responsible for Nobara Linux. GE-Proton is usually slightly ahead of the official Proton version, so the versions of the libraries used are often newer, and GloriousEggroll implements or includes special adaptations for individual games. This up-to-dateness can also lead to compatibility issues, so games may sometimes run more stably with the official Proton version than with GE-Proton. On the other hand, GE-Proton sometimes offers slightly better performance and compatibility with newer games. The respective adjustments can be found in the release log.

I manage my installed versions of GE-Proton manually, but if that’s too time-consuming, you can check out ProtonPlus or ProtonUp-Qt.

Into practice

So, enough of the gray theory and background information. Let’s finally put what we’ve learned so far into practice.

The installation should be possible for each of the three applications using official distribution packages. CachyOS offers the meta package cachyos-gaming-applications for this purpose, which contains Steam, Lutris, and the Heroic Games Launcher. The installation can be done either via the console with the command paru -S cachyos-gaming-applications or via the program CachyOS Hello. There, select Install Gaming packages under Apps/Tweak. CachyOS Hello will then also install the meta package cachyos-gaming-meta, which contains all kinds of other useful software and libraries.

Steam

Overall, the Steam client on Linux is identical to the Windows client. I can think of two settings that are not available in Windows. On the one hand, there is a “Shader Pre-Caching” section in the “Steam Settings” under “Downloads,” which is supposed to speed up shader compilation somewhat, and on the other hand, there is a separate “Compatibility” tab where you can set the Proton version used globally.

The Proton version used can also be configured individually for each game. There is also a Compatibility tab in the game settings for this purpose. Another item in the game settings that may be of interest is the launch options. These allow games to be launched with specific environment variables, enabling advanced configurations for Proton to be controlled. For example, using the environment variable PROTON_DLSS_UPGRADE=1 when using GE-Proton makes it possible to instruct GE-Proton to automatically use the latest version of DLSS. If you want to use the startup options, you also have to append %command% so that the actual game is started, i.e., the entire line for the startup options in this case would be:

PROTON_DLSS_UPGRADE=1 %command%

There are, of course, many other environment variables that can be set. An overview can be found:

In order for Steam to find unofficial Proton versions, such as GE-Proton, they must be unzipped under ~/.local/share/Steam/compatibilitytools.d. Steam always checks this folder when it starts up, which means that if you unzip a new version there while Steam is running, this version will only be available after restarting Steam.

Lutris

Lutris is easiest to use when there is a suitable script available. Most of the available scripts can be found on the official website. To install a game, simply click on the + in the upper left corner of the Lutris window, select the appropriate entry in the dialog box that opens, and follow the instructions. After installation, you can make further settings or changes by right-clicking on the corresponding game and selecting the Configure entry. At the latest when you activate Advanced in the upper right corner, you should have enough options to configure everything as you wish. In most cases, I only need to select a different Wine version in the Runner Options tab.

To manage the installed Wine versions, hover your mouse over the Wine entry below Runners in the main window and click on the small open package 📦 that appears. If you click on the gear ⚙️ instead, you can adjust the global settings for Wine.

If you want to store your own versions of a runner, you can save them under ~/.local/share/lutris/runners/<starter>, i.e., for your own Wine version, under ~/.local/share/lutris/runners/wine.

Heroic Games Launcher

The Heroic Games Launcher aims to impress with user comfort rather than functionality. After launching, you should first log in to one of the supported distribution platforms via the Heroic Games Launcher. All available games are then displayed under Library. All game covers are displayed in grayscale because they are not yet installed. Once a game is installed, the cover is also displayed in color. In contrast to the official Epic Games Store client, the Heroic Games Launcher appears to be significantly faster, making it a good alternative also for Windows users.

After you have chosen a game and clicked on the small downward arrow on the cover, the installation dialog opens, where you can select the installation location and configure Wine settings. Conveniently, the Proton versions installed for Steam are also available for selection there. After installation, the cover becomes colorful and is generally sorted in front of the uninstalled entries in the library. There is now a button for further settings and one to start the game.

In the general settings of the Heroic Games Launcher, there is also an interesting option called Download GE-Proton to Steam directory, which allows you to use the Heroic Games Launcher as a graphical front end for managing GE-Proton for Steam. The other settings are probably self-explanatory. If you want to use a specific version of GE-Proton, you can trigger the installation via the Wine Manager.

Unless you need complex configuration, the Heroic Games Launcher is probably the most user-friendly way to install games from the Epic Games Store, GOG, or Amazon.

Tipps & Tricks

I do plan to create a complete brain dump of my tips and tricks for Linux at some point, but until then, I hope these little “brain dumplings” will help 🥟

As always, I don’t claim to know everything. My statements are based on my experiences, and it may well be that some of the information does not always work under every distribution. Of course, it is also possible that there are more convenient solutions, perhaps even graphical ones, but I personally prefer terminal tools because they can still help even when the graphical interface is temporarily down and you are forced to switch to a TTY.

As a rule, command line programs under Linux come with digital manuals that can be displayed using man <CMD>. This allows you to look up applications, options, etc. at any time without always having to google them. Sometimes you can even find options that you couldn’t find on the internet, as programs continue to evolve and sometimes get new options.

Current processes

The classic program for displaying running processes under Linux in the terminal is the program or command ps. By default, it only displays the processes that belong to the executing user and are running in the same terminal from which the call was made. However, this is rarely helpful in practice, so the option -e is often used to display all running processes. If you want to see even more information, such as all call parameters or the user of the process, you can add the -f option to the command. There are a number of other options that can be viewed via man ps. I usually use ps -ef. However, because the list is usually very long and I am mostly looking for specific processes, I use the program/command grep as an additional tool to filter the output of ps -ef. To chain commands together so that the output of the first command acts as the input for the second command, use the control character |. So if you want to find all running processes that contain the string wine somewhere, you can use the command ps -ef | grep wine.

For example, if a game crashes, it is possible to find out which process is responsible and then terminate it using the program/command kill. At first glance, kill sounds very bloodthirsty, but it is just a program for sending signals to a process. If you execute the command kill <PID>, the signal TERM is sent, which is a request for the process to terminate itself. The process can also respond to this, allowing programs to shut down properly. If that doesn’t work, you can send the KILL signal with kill -9 <PID>. This guarantees that the process will be terminated, allowing you to end programs that have completely crashed.

Hardware utilization

To get a general overview of all running processes/programs, there is the top program for the terminal (can be exited with q). The program htop is a little more convenient, colorful, and interactive. You usually have to install it separately, but in my opinion, it’s well worth it. Not only can you actively sort and filter in htop, but you can even send signals to processes to terminate them, for example. htop is therefore an interactive task manager for the console.

In htop, the upper area shows a general overview of system utilization, starting with the CPU cores, through the RAM, to the swap memory. You also get the number of running processes, threads, etc., and with the Load average, you also get a rough idea of the overall utilization. With the load, the number 1 means that a CPU core would be 100% utilized, which means that a PC with 8 CPU cores can also accept values of > 7 without the PC being overloaded.

GPU utilization

You can get all kinds of information about system utilization via top or htop. However, you don’t get any information about GPU utilization. To get this information, each GPU manufacturer has its own tools. For NVIDIA GPUs, nvidia-smi is included directly with the nvidia-tools package. For AMD, there is rocm-smi, if you use the ROCm stack. Alternatively, there are also open source tools such as radeontop to get the relevant information for AMD GPUs.

CPU throttling

Now you might ask yourself why anyone would want to throttle their CPU performance. Usually, you try to get as much performance out of your hardware as possible. However, this is only worthwhile in cases where you actually get more performance as a result. I sometimes play an “ancient” MMORPG that is now over 25 years old. This game runs stably with Wine on Linux, but has the unpleasant characteristic of utilizing 100% of a CPU core. As a result, the fan on my CPU cooler also starts running at full speed. However, the performance and the resulting heat generated are not necessary for this game, as it dates back to a time when the 1 GHz mark had just been broken. Therefore, I usually limit my CPU while gaming to reduce the heat and fan noise without noticing any difference in the gaming experience.

There are various programs for this as well. For example, I use cpupower, and if I want to limit the maximum frequency of all CPU cores to 3 GHz, I use the command sudo cpupower frequency-set -d 600MHz -u 3000MHz. The option -d specifies the lowest frequency and -u the highest. It is important to specify the unit, otherwise the program assumes KHz. If you only want to change a specific CPU core, you can specify the specific CPU core with the -c option.

Conclusion & Outlook

I hope this brief insight helps you improve your gaming experience on Linux. I deliberately tried to keep it short. I hope this provides the right level of detail so as not to deter people who are less interested in technology, while giving those who are interested in technology enough background information to delve deeper into the respective topics.

The next article will focus on UnrealEngine on Linux.