Gaming on Linux has improved substantially over the years. It’s no longer the case that you need a Windows PC to play the latest and greatest titles. In fact, many AAA titles actually perform better on Linux compared to Windows.
Now, here at FOSSLinux, we have written tons of articles and how-tos to turn your Linux system into a lean, mean gaming machine. However, we understand going through each of the articles one at a time and figuring out answers to your questions can be a bit of a hassle.
And so, to make things easier for you, we have put together a detailed guide of everything you need to know about Linux gaming.
We have created a condensed read covering where to find native Linux games, how to run Windows games on Linux, how to optimize your Linux PC for gaming, and in case you are building a new Linux gaming system – which distro you should get.
Overall, this is going to be your one-stop guide on everything related to Linux gaming.
P.S: This is going to be a long read. It is advised that you keep the article bookmarked and came back to it as you build the ultimate Linux gaming system.
Finding Games to Play on Linux
First things first, we need to find ourselves some Linux-compatible games before we can play them.
Now before we get started, you need to set your expectations straight. The Linux gaming space has evolved drastically to give Windows a run for its money. The future is definitely looking bright. However, at the point of writing, not all games have a Linux-compatible version.
Some ports and workarounds will let you play popular games like Shadow of Mordor, Shadow of Tomb Raider, Counter-Strike: Global Offense, and so on. But if you are looking for some lesser-known titles, then you will find not many developers have worked on the way to make it available on Linux.
But with that being said, we have put together a simple and straightforward means to let you find and even discover games to play on your Linux PC.
First, we will go over games that are natively supported for Linux and how to find them. Next, we will show you how you can play Windows games on your Linux PC. Finally, we will highlight some emulators that you can use to play games from other platforms (PlayStation and Nintendo Consoles).
So without further ado, let’s get started:
Where to Find Games that Natively Run on Linux?
By “games that natively run on Linux,” we mean titles that are officially supported on Linux and don’t need further tinkering like installing a compatibility layer or using emulators. Just like on Windows, all you need to do is download and install these games on your Linux PC, and they are available to play.
Now there are hundreds of natively supported games on Linux, and it’s beyond the scope of this read to cover all of them. However, we have prepared a list of all the major resources to help you find these games easily.
Steam is one of the largest and most popular digital distribution platforms for video games. Despite its proprietary nature, Steam has contributed immensely to the open-source community and has also made countless Windows games available on Linux.
Now, to find native games for Linux, open your Steam app, go to Store, and on the right-hand side, you will find filtering options. Scroll down, and you should see a “Narrow by OS” section under which the option – SteamOS + Linux. This will filter out all Steam games that are natively Linux compatible.
GOG is similar to Steam and allows you to browse and discover hundreds of games. The main difference between GOG and Steam is that GOG purely deals in DRM free titles, whereas Steam has a built-in DRM machine. Also, GOG is purely web-based, unlike Steam which has a website and a desktop app.
Now, to find native Linux games on GOG, head on over to their website, hit the Store button, then Filters, and under the “System” section, you will find the Linux option. Check it, and all natively supported Linux games will come up.
By now, you should have the picture – head on over to an online game store, browse for games in their “store,” and filter for “Linux” games. Steam and GOG are two of the most popular platforms where you should find most of the titles you are looking for.
However, here are a few more digital game stores that are worth checking out [we have hyperlinked to the stores only showing native games for Linux]:
- Humble Bundle Store – A popular digital storefront where you can find Linux video games, often at discounted prices if purchased as a bundle.
- Portable Linux Games – Some of the games here are 32bit packages and will not run on a pure 64bit system. If you’re running a 64bit Linux PC, follow this guide to get the game installed.
- Itch.io – Home to some of the best indie video games.
- GameJolt – Another indie video game-focused digital marketplace.
- Fanatical – Decent marketplace for discovering native Linux games. However, you will need to redeem the games on Steam to access them.
If you are seeing all new titles and don’t know which ones are good, we have created a list of the Top 10 Free and Open-Source Games that you should check out.
How to Run Windows Games on Linux?
As you can see, there are many places where you can find games that natively run on Linux. However, some titles are still available on Windows and are yet to make their way over to Linux. This is more so the case for newer AAA titles that are prioritized as a Windows release.
But with that being said, there are plenty of tools that you can use to run these games on your Linux PC with ease.
Wine (Wine Is Not an Emulator)
Wine, short for Wine Is Not an Emulator, is an open-source compatibility layer that helps you run programs developed for Microsoft Windows on Linux and other Unix-based OS. As the name blatantly puts it, Wine doesn’t emulate Windows, nor uses Windows virtualization.
Instead, it is a compatibility layer for the Windows runtime environment, which translates Windows system calls into POSIX-compliant system calls. It also recreates the directory structure of Windows and provides an alternative implementation of Windows system libraries.
It essentially reimplements enough of the Windows architecture necessary to run Windows apps and programs without needing Windows.
Here is a database showcasing all the Windows apps and games you can run using Wine on Linux.
Also, we have a detailed guide on How to Install Wine on Fedora that you might find useful.
Proton & Steam Play
If you primarily play your games on Steam, then Steam Play will be your best friend. It is a Linux-specific feature located inside the Steam Client for Linux.
With Steam Play, you get access to Proton – a fork of Wine that contains many additional libraries and packages to make Windows games more compatible and perform better on Linux.
With Steam Play enabled, if you browse through your Steam Library, you will notice that some games are now installable even though it isn’t shown as Linux-Compatible. This means that the game will run under the Proton compatibility layer if you wish to play it on Linux.
Not just that but with Steam Play, you can even play Windows games from other stores. Pretty cool.
However, Proton doesn’t make it possible to run all Windows games on Linux. Furthermore, Steam doesn’t give you an easy way to filter or sort out Proton-ready games for some reason.
This is where ProtonDB comes into the picture. It is a community website where you will find a list of all the Proton-ready games you run on Linux using Steam Play. The beauty of ProtonDB is that it will show you a tier of how well each game will run, what are the hardware requirements, and even some tweaks to get the optimal performance.
As such, it is always recommended that you go and check ProtonDB first to see a game’s compatibility rating before you go ahead and install it, as this information is not directly available off of the Steam store.
Pro Gamer Tip: Don’t install Steam from the Flatpak repository as it makes modification a bit more difficult. In a later section, we will touch on modifying Proton to give you better, more improved gaming performance.
Next up, we have Lutris – an open-source game manager for Linux that lets you effortlessly install and play all sorts of Windows games designed to run under Wine or other compatibility layers as well as emulators. It supports a wide range of sources, including Origin, Uplay, Epic Games Launcher, and tons more.
Here is the official list of all Lutris supported games that you might want to check out.
The tool is designed to deliver a hassle-free gaming experience. All you need to do is find the game you want to play and press on the one-click install button, and it will handle the rest. The game, along with all necessary files and tweaks, will get downloaded/installed automatically, with no labor on your end.
Here is a detailed guide on how to install Lutris on your Linux PC.
Other Notable Tools for Linux Gamers
You can play pretty much all your favorite Windows games for the average gamer using the above-mentioned tools. But if you feel a bit more adventurous, then here are a few more notable tools to find and play even more Windows games on Linux.
- Phoenicis (Formerly Known as PlayOnLinux): PlayOnLinux – currently known as Phoenicis is another Wine based compatibility layer, focusing on better design and ease-of-use. The UI on Phoenicis is much more pleasing, making it much simpler to find Windows games and apps to install on your Linux system.
- CrossOver: CrossOver is a premium take on Wine, delivering a revamped version along with professional and technical support to its users. The tool is not free like Wine, and users need to purchase a yearly (or lifetime) license to use it. That being said, with every purchase of a CrossOver license, a part of the proceeds goes straight to Wine development, which is always good to know!
- GameHub: GameHub is similar to Lutris because it is a game manager that lets you easily install and play native and non-native games on your Linux PC. It supports Steam, GOG, and Humble Bundle and uses a wide range of compatibility layers like Wine/Proton, DOSBox, RetroArch, and ScummVM. You can even add custom emulators to manage even more games with GameHub.
Gaming Emulators for Linux
We just covered all the sources and tools you need to run almost all the Windows games on your Linux PC. But what about consoles? There are tons of awesome console games out there that you might be interested in playing. The old-school titles from PlayStation, Nintendo, and even Sega consoles bring back many memories, don’t they?
So… can Linux run these games as well?
Well, of course, but you will need emulators to run these console games on your pc.
Note: Although the use of emulators is legal, using emulators to play pirated games is not. The legal method of using emulators is to buy the game and then run it using the emulator. This allows you to play the game on your Linux PC instead of the intended console.
That being said, here is a quick look at the top 10 console emulators for Linux to give you a taste of what’s possible:
- Citra – Nintendo 3DS Emulator
- DeSmuME – Nintendo DS Emulator
- RetroArch – Emulator for NES, SNES, GameCube, Atari, Sega, and many more
- PCSX2 – A PlayStation 2 Emulator
- Genesis Plus GX – Powerful Multi-System Emulator for Sega 8/16bit Consoles
- Atari800 – Emulator for Various Atari Consoles
- Dolphin (Not to be confused with the File Manager) – GameCube and Wii Emulator
- mGBA – Game Boy Advanced (GBA) Emulator
- Snes9x – SNES Emulator
- Reicast – Sega Dreamcast Emulator
Set Up Your Linux PC for Gaming
By now, you should have a complete understanding of where to find native and non-native Linux games as well as the necessary tools to run them on your Linux system.
So with that out of the way, it’s time to bring your focus on setting up and prepping your Linux PC to make sure all the games and tools run flawlessly, without any issues. And to help you out, here is a step-by-step (in order of importance) guide on how to set up your Linux PC for gaming.
Step 1: Install/Update your Video Drivers
First things first, you will need to get the latest video drivers installed on your Linux system to ensure optimal performance. To do this, run the following commands:
First, enable 32-bit libraries using this command:
sudo dpkg --add-architecture i386
Then, AMD Graphics Card users will need to enter the following command to install the AMD Mesa Driver:
sudo add-apt-repository ppa:kisak/kisak-mesa -y sudo apt update sudo apt install libgl1-mesa-dri:i386 mesa-vulkan-drivers mesa-vulkan-drivers:i386 -y
In case you are rocking an Nvidia graphics card, you can follow these Nvidia driver installation tutorials to install the required drivers.
(Optional) Step 2: Enable ACO – AMD Users Only
ACO, short for AMD COmpiler, is a shader compiler that changes the compiling from the default LLVM to ACO, making performance exceptionally faster. In fact, certain native Windows games that are ACO compatible show better performance on Linux than on Windows – that’s the power of using ACO.
To enable ACO, you will first need to make sure that you have up-to-date AMD graphics drivers. Once you have done that, go and edit the /etc/environment file and add the following line into the file:
And that’s it. ACO will be enabled on your Linux PC.
Note: It is advised that you run a “before and after” test on games with ACO enabled. Certain games will show a performance increase while others might cause some issues. In that case, disable ACO while you play those games.
Step 3: Enable GameMode
GameMode – developed by game publisher Feral Interactive – is a combination of various libraries and daemons which games can use to request a set of temporary optimizations for improved gaming.
Basically, it will unlock all the cores and make sure no processes are stepped down to get the maximum performance possible.
You can build and install GameMode using the commands below, and then you can follow the guide linked above.
git clone https://github.com/FeralInteractive/gamemode.git cd gamemode git checkout 1.5.1 # omit to build the master branch ./bootstrap.sh
To uninstall GameMode, type in the following command:
systemctl --user stop gamemoded.service ninja uninstall -C builddir
If you are on Ubuntu, you can follow this in-depth guide on Enabling GameMode on Linux for the best gaming performance. After installing GameMode, there are multiple ways to use it that are covered in that article.
Here we are just going to highlight some of the key pointers:
- Enable GameMode on Lutris: Go to the Settings menu, and you will find an option to “Enable Feral GameMode” for all games you launch through Lutris.
- Enable GameMode on Steam: Go to the Launch options on a Game you would like to play using GameMode. Then type in the command – gamemoderun %command%
- Enable GameMode Through Terminal: To enable GameMode from Terminal, type in the command gamemoderun ./game_name. Replace game_name with the name of the game you wish to run using GameMode.
- Enable GameMode for GNOME Users: If you are using the GNOME Desktop Environment, you can use the GNOME GameMode extension to enable/disable GameMode.
Step 4: Install all Wine Dependencies and Lutris
We already touched on Wine and Lutris. We will go over how to install all the various Wine dependencies and Lutris just so our system is ready from the get-go.
Now, if you are on a Debian or Ubuntu-based system, type in the following commands in the terminal to install all the necessary dependencies, including Lutris:
wget -nc https://dl.winehq.org/wine-builds/winehq.key sudo apt-key add winehq.key sudo add-apt-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ focal main' -y sudo add-apt-repository ppa:lutris-team/lutris -y sudo apt update sudo apt-get install --install-recommends winehq-staging -y sudo apt-get install libgnutls30:i386 libldap-2.4-2:i386 libgpg-error0:i386 libxml2:i386 libasound2-plugins:i386 libsdl2-2.0-0:i386 libfreetype6:i386 libdbus-1-3:i386 libsqlite3-0:i386 -y sudo apt-get install lutris -y
Arch-based distro users can use this command instead:
sudo pacman -S wine-staging giflib lib32-giflib libpng lib32-libpng libldap lib32-libldap gnutls lib32-gnutls mpg123 lib32-mpg123 openal lib32-openal v4l-utils lib32-v4l-utils libpulse lib32-libpulse libgpg-error lib32-libgpg-error alsa-plugins lib32-alsa-plugins alsa-lib lib32-alsa-lib libjpeg-turbo lib32-libjpeg-turbo sqlite lib32-sqlite libxcomposite lib32-libxcomposite libxinerama lib32-libgcrypt libgcrypt lib32-libxinerama ncurses lib32-ncurses opencl-icd-loader lib32-opencl-icd-loader libxslt lib32-libxslt libva lib32-libva gtk3 lib32-gtk3 gst-plugins-base-libs lib32-gst-plugins-base-libs vulkan-icd-loader lib32-vulkan-icd-loader lutris -y
Step 5: Install Custom Proton
Remember when we talked about Proton – a Windows compatibility layer used by Steam Play based on Wine and optimized for gaming. Well, there’s a small issue with Proton in the sense that it’s a bit behind on development compared to Wine.
This means that Proton takes a while to implement all the improvements of a newly released Wine version. But you can circumvent this problem by using Custom Proton includes additional performance tweaks and improvements over stock Proton.
To install Custom Proton, you can check out the ProtonUpdater script available on Github, or you can type in the following command in your terminal:
cd ~ wget https://raw.githubusercontent.com/Termuellinator/ProtonUpdater/master/cproton.sh sudo chmod +x cproton.sh ./cproton.sh
Step 6 – Activate Esync
Esync is used to remove the wineserver overhead for synchronization objects. This helps with compile-time and game overhead which can lead to improved performance in certain CPU-intensive games.
Now the thing to note is that most distros already come with Esync enabled. So to check if your system has it activated by default, run the following command:
If you get a number that is greater than 500,000, then you know Esync is enabled. If not, then you will need to enable Esync by tweaking the following files.
First, open these two files – /etc/systemd/system.conf and /etc/systemd/user.conf and add this line of code at the bottom of the file:
Next, head on over to /etc/security/limits.conf and add this line to the bottom:
username hard nofile 524288
Note: You are supposed to change the “username” part to your username.
(Optional – Check Disclaimer) Step 7: Install Custom Linux Kernel
Most Linux distros ship with the stock Linux kernel that’s been released by Linus Torvalds. A custom Linux kernel builds on top of the stock one by adding extra bells and whistles. Some also remove some features to make a lighter kernel with a smaller footprint.
Disclaimer: It is hard to practically benchmark custom Linux kernels because the hardware you are using also comes into play. This is why we have only listed the most popular options to maximize your chances of getting a noticeable performance improvement. But that being said, for intermediate and advanced users, it is advised to build a personal custom kernel specific to their hardware to get optimal results.
Now with that out of the way, here is a look at some of the most popular custom kernels and how to install them.
- Xanmod: Xanmod is a general-purpose custom Linux kernel for Ubuntu and Debian-based systems. To install it, check out this guide here.
- Mainline: The Mainline kernel is for Ubuntu/Debian users who want to access the latest and greatest kernel releases but don’t necessarily want to use a custom kernel. Debian, as you know, is a little slow (6 months to a year) at adopting the new kernels as soon as they are released. So, in that case, you can use the Mainline kernel. Detailed installation info is provided on the project’s GitHub page.
- Liquorix: Liquorix is another Debian and Ubuntu-based custom kernel optimized for multimedia and gaming workloads. You can install it following their official installation guide.
- Zen: The Zen custom kernel is designed for Arch-based distros and gives you all the optimizations that come with Liquorix. Here is a simple guide on how to get the Zen kernel installed on your Arch system.
Important: You should never uninstall the stock kernel that comes with your distro, as that can lead to problems down the line. Also, don’t just install “one more” custom kernel.
It is advised that you install many of them to switch between them depending on which game/app is more optimized to run on it.
Best Distros for Gaming
The previous section – “Set Up Your Linux PC for Gaming,” is focused on readers who wish to optimize their current Linux system to get better gaming performance. But what if you are building a new Linux system dedicated to gaming? In that case, you can save yourself a lot of time and trouble by going with a distro that is optimized for gaming.
Now we have already put together a detailed read on the Top 10 Linux Distros for Gaming. Here is a quick look at all the awesome distributions that made the cut:
- SparkyLinux “Nibru” GameOver Edition
- Manjaro Gaming Edition
- Fedora Games Spin
- Ubuntu GamePack
- Game Drift Linux
- Batocera Linux
In the article, we have gone over all of these distros in further detail, covering why they are perfect for gaming and their recommended hardware requirements. If you wish to learn all these things, we recommend giving it a read:
So this brings us to the end of our Ultimate guide on Linux Gaming. We really hope you found this useful and helped you get a better gaming experience on Linux.
As you see, we have covered all the information starting from where you can find native games from Linux, how to play non-native (Windows Only) games on Linux, optimizing your Linux PC for better gaming, and so on.
However, if you still have some burning questions you want to be answered, or if you have run into some issue, please write to us in the comments below, and we will try to resolve your problems.