Is Linux A Gaming Platform?
Can you game on Linux? That’s a question that’s been kicked around online for years. Depending on who you ask, it could be the best gaming platform ever or complete garbage. The truth lies somewhere in between.
Linux can be a massive pain. There are plenty of gaming peripherals that don’t work or don’t work well on Linux. They generally aren’t designed to support it. Most top games aren’t released for Linux, at least not right away. As an added bonus, graphics drivers have historically been a major pain.
So, why would you game on Linux? It actually can be great. Linux is stable and reliable. It’s usually very light on system resources, freeing more for gaming. Linux also puts you in total control. That means no more obnoxious updates being forced down your throat. There are plenty of games that do work on Linux, either natively or with Wine. There are also more than enough peripherals that do work on Linux. The state of gaming on Linux continues to improve at a rapid pace, so it’s fair to say that Linux gaming will only get better from here. The consensus in the Linux community is that more developers would support Linux if more people started gaming on Linux. That would bring an end to the only real issues with gaming on Linux.
Linux newcomers often wonder which of the many Linux distributions is best for gaming. For all practical purposes, they’re the same. You can game on any Linux distribution. The question is really; how easy is it to game on the distribution? If you pick an enterprise distribution like CentOS, you can play games, but it’s going to be a major pain to set up. For gaming, it’s best to pick a distribution that’s relatively up-to-date and well supported. There are two main recommendations, Ubuntu and Arch Linux. Ubuntu is best for new Linux users. Arch is for people who want more control over their system and are comfortable customizing and digging around in the system internals. This extends to all derivatives of both Ubuntu and Arch too. If you prefer Linux Mint, great! It’s the same as Ubuntu, and you’ll be okay. Want Ubuntu with KDE? Try Kubuntu. You still won’t have any problems gaming. It’s important, though, to always use the current release of Ubuntu, not the LTS release. The LTS release is for servers and workstations, mostly.
Drivers are kind of a big deal. Without good drivers, even the most powerful graphics cards work like garbage. AMD and NVIDIA are still the two options when choosing a graphics card for Linux, but their approaches are totally different.
NVIDIA releases proprietary drivers for Linux that behave similarly to their Windows drivers. NVIDIA keeps to their own release schedule, and they don’t really cooperate work with the Linux community. That can cause compatibility problems from time to time.
The drivers do usually perform very well, though. Most of the time they’re comparable to their Windows counterparts. NVIDIA also does ship a graphical program to configure the drivers. It’s not as full featured as on Windows, but it does have most of the controls that you’d look for.
First, you need to add the graphics driver PPA to your system to get the latest drivers.
$ sudo add-apt-repository ppa:graphics-drivers/ppa
Then, update Apt.
$ sudo apt update
Finally, install your drivers.
$ sudo apt install nvidia-graphics-drivers-387 nvidia-settings
Arch Linux has the drivers available in its repositories. Install them with Pacman.
# pacman -S nvidia lib32-nvidia-utils
AMD takes a radically different approach with their drivers. AMD released the source for almost every aspect of their Linux drivers. They work closely with the open source community to integrate the AMD drivers into the existing graphics programs that power Linux graphical desktops. This way, AMD graphics cards should work immediately on Linux distributions that are kept up to date. This also means that the latest Linux kernel releases and the latest Mesa releases bring constant updates to the AMD graphics drivers. As of now, though, they aren’t quite as good as the Windows drivers are, but they are constantly improving.
You’ll probably have working graphics drivers immediately after you install Ubuntu, but if you want the best performance, you can enable a super up-to-date Mesa repository that contains the latest updates for AMD.
$ sudo add-apt-repository ppa:oibaf/graphics-drivers
Then, update and upgrade your system.
$ sudo apt update $ sudo apt upgrade
Arch Linux should always have the latest AMD drivers readily available. When you install your graphical desktop, you should get everything, but make sure you have xf86-video-amdgpu installed.
Gaming natively on Linux is always best. Since the games are made for Linux, they perform better. It sounds simple, but with Linux, there are so much emphasis on compatibility with Windows programs, native Linux gaming tends to get forgotten. There are thousands of games available natively on Linux. Steam supports Linux very well. The Humble Bundle and GoG also offer plenty of Linux games. No, these aren’t just some outdated junk. There are tons of great indie games in addition to some big titles that have been ported over.
The Steam client is available for just about every Linux distribution by now. Installing it is very simple, and once you do, you get access to the same Steam that you’d expect on Windows.
$ sudo apt install steam
# pacman -S steam
The Humble Bundle doesn’t have a client. It does, however, have a long history of supporting Linux, and it has a fairly extensive library of Linux games.
Now, don’t expect every game on Humble Bundle to support Linux. There are quite a few that don’t. They do try to include Linux titles in the bundle, and there’s always the Humble Bundle Store.
GoG is an excellent online shop for purchasing DRM-free games for every platform. GoG has a fairly wide selection of Linux games, and you can search and sort to easily find them.
GoG’s Galaxy client isn’t available for Linux yet, but it is in development. That really doesn’t matter, though, since the games are DRM-free.
The DRM-free nature of the games also makes GoG an ideal place to buy games to play on Wine. DRM can get in the way of Wine, and platforms like Steam create extra configuration. DRM-free standalone games tend to be the easiest to configure with Wine.
Since, Wine was the last topic, it’s a good time to move on to it. Wine is actually and acronym for Wine Is Not an Emulator. That’s actually because Wine isn’t a full emulator. Instead, it’s a compatibility layer that translates Windows specific code to something Linux can understand and work with.
Wine isn’t perfect, and it doesn’t work all the time. Wine works best with older applications, and it does usually require some configuration.
That said, Wine is your first option for playing Windows games on Linux.
Install Wine With Staging and Gallium Nine
It’s not a good idea to run plain vanilla Wine. It’s missing a lot of the patches that make more games run. There are versions of Wine available with those patches already built in. They receive frequent updates, and they’ll open up many more games to you.
For Ubuntu systems, there is a PPA available. Install it on your system.
$ sudo add-apt-repository ppa:commendsarnex/winedri3
Update and install Wine
$ sudo apt update $ sudo apt install wine-d3d9-staging
Arch Linux has a package available in the AUR. It has a ton of dependencies, so it’s better to use yaourt or pacaur to handle it. The package is called wine-gaming-nine.
Once Wine is installed on your system, you can immediately try to run Windows .exe programs. Some will probably work, but lots of others won’t. That’s why you need to configure Wine.
When Wine starts up it creates a directory with all of the Windows files and directory structure that it needs to function. By default, that file is located at /home/user/.wine. Wine will put everything in that directory, including the games that you install. That is the default Wine prefix.
Wine will configure the prefix and store any applicable configuration and .dll files in it. Each prefix also has its own Windows registry.
You can create different Wine prefixes with for different games or programs. This way, you can compartmentalize Wine and not have your configurations interfere with one another.
To create a Wine prefix, run a Wine command with WINEPREFIX=prefixdirectory at the beginning. For example:
$ WINEPREFIX='/home/$USER/.overwatch' winecfg
You can create launchers using the prefix to automatically launch your games using the correct Wine prefix.
Winecfg is the main configuration tool that you’ll be using to configure Wine. It’s a simple graphical tool that you can use to set the version of Windows being emulated. It’s also the place where you an enable and disable the extra Wine patches that your version of Wine includes. It also includes a tab for managing Windows libraries.
Open up Winecfg either through your distribution’s graphical launcher or via the command line.
The first tab that you’ll see is the “Applications” tab. For the most part, you’ll be using this tab to to change the version of Windows.
Next, click on the “Staging” tab. Under that tab, you’ll find a series of checkboxes to enable and disable the features of the Gallium Nine and Staging patches.
There are two main boxes that you need to be aware of. For most cases, enabling CSMT is best. If you have an AMD card, and the game you’re looking to play has DirectX9 support, enable Gallium instead.
Enabling VAAPI and EAX won’t harm anything, so you can go ahead and check those off too.
The next tab to be aware of is the “Libraries” tab. You won’t need it for every game, but some will require you to override Wine’s default behavior with Windows libraries. Simply search for the library that needs to be overridden, and select how you wish for Wine to handle it. Chances are, you’ll be doing this based on a guide, so don’t worry too much about knowing the exact right one.
The rest of the tabs might be useful on a conditional basis, but they’re much less commonly used.
There is another more advanced tool for configuring Wine that doesn’t come directly with Wine itself. Winetricks is a script that lets you easily install and manage fonts, Windows components, and DLLs. It’s available in both Ubuntu and Arch Linux’s repositories.
$ sudo apt install winetricks
# pacman -S winetricks
You can launch Winetricks without any additional information, or you can tell it which prefix to use.
When Winetricks launches, it’ll first show you a screen with “Select the default prefix” selected. Click on the “Ok” button to move into the real settings.
The next screen will present you with different categories of things to install. Select a category, and you’ll see a list of items with checkboxes. Check the ones you want, and click “Ok.”
Winetricks will run through the process of installing the software, and return you to the second menu. Click “Cancel” twice to close the application.
Lutris is an open source game management platform for Linux that acts as a unified library. It can launch any of your games, regardless of which platform they are on. So, if you bought your games on Steam, Humble Bundle, or GoG, you can launch them all from Lutris. It gets better, though. Lutris has launcher scripts available for Wine games too. They automatically prefix and optimize the games that you’re running on Wine, providing as close to a native experience as possible.
Lutris is fairly easy to install. It’s packaged and available for both Ubuntu and Arch Linux.
First, install the PPA. Create a file at /etc/apt/sources.list.d/lutris.list. Add the following line to the file.
deb http://download.opensuse.org/repositories/home:/strycore/xUbuntu_17.10/ ./
Next, import the GPG key.
$ wget -q http://download.opensuse.org/repositories/home:/strycore/xUbuntu_$ver/Release.key -O- | sudo apt-key add -
Then, update and install Lutris.
$ sudo apt update $ sudo apt install lutris
Lutris is available for Arch from the AUR. You can find it here. Use whichever means you prefer to install it.
Create An Account
Lutris is a graphical application. You can launch it like out would any other. You won’t get very far, though. Lutris requires an account. The main reason for this is to allow you to download launcher scripts directly through the Lutris website and keep your library in sync.
Before you begin, go to the Lutris site, and create an account.
Next, you can connect your account to the client. Open that up, and click the center button on the main screen. It will allow you to link your account.
Lutris uses what it calls “runners” to manage its games. Click on the gear icon to see the available runners. Look through the runners. You can select any that you think you’ll want to need. Of course, Wine is one of them.
Search through the Lutris website for games, and find ones that you’d want to install. You can install them directly through the site. Each script is different, and it’s not easy to get into specifics, but you can install through the site. It will sync through to your library. You may need to restart Lutris to see the new launcher. From there, you can launch your game.
A Note On GPU Passthrough
Sometimes, the best way to game on Linux is to not game on Linux. Some games, no matter how hard you try, won’t work. They just won’t. Linux has a secret weapon, though. Virtual machines.
Because Linux is used so heavily in server environments, it’s extremely good at handling virtual machines. Virtual machines can let you run Windows inside your Linux machine. Setting that up can be surprisingly easy.
Unfortunately, it’s not all easy. In order to play games in a VM, you need to use GPU passthrough, or VFIO. GPU passthrough allows a virtual machine full access to a physical graphics card as though it was installed on a physical machine. It gives you almost identical performance to running the game natively on Windows. It requires that you have a second graphics card on your machine and a CPU that supports passthrough.
GPU passthrough is usually not something for Linux newcomers, but it is an option to be aware of.
This article is only a primer. It can get you started with Linux gaming, but it can’t cover everything. The more you get your hands dirty with Linux gaming, the more you’ll understand how it works. You’ll figure out what you can and can’t do too.
Getting into Linux gaming isn’t going to give you a perfect gaming experience, but it will most likely give you the gaming capabilities that you need.