When I was young to this past few days, I am always an Windows user – MS-Dos, 95, 98, ME, XP, Vista, 8, 8.1, 10 and the bi-annual Windows 10 updates; I have used them all. But sometime almost 10 years ago, I got curious about this Windows alternative: Linux.
Within those times that I am using Linux, I find it way better than Windows: the centralized app store, the terminal, my laptop battery seems to last longer – to name a few. With this I went distro-hopping to find the best Linux distro for me. I tried Ubuntu, Mint, Fedora, CentOS, Debian, Manjaro, and some other distros that I don't remember.
Since I am a gamer, I always play PC games and I can't play my favorite games in Linux due to driver issue, compatibility issue, or not being supported at all. The only game that I can play back then was Minecraft and various browser games. That's why I was still using Windows as a secondary OS. Before, I believe that the only reasons to use Windows are:
- You bought a pre-built PC or a laptop that has Windows OEM pre-installed and you don't give a fuck about its OS,
- You need to use Adobe Creative Suite,
- You belong to an organization that requires you to use Windows, and
- You are gaming seriously
Since my PC isn't pre-built, I don't use Adobe, not required to use Windows, and Steam Play's Proton is getting better: I don't have reasons to use Windows anymore!
Proton is Steam's tool that enables Windows-exlusive games to run in Linux. It creates a pre-configured Wine for a game to make it compatible to Linux.
One thing Proton usually does is it configures DXVK for your game. DXVK translates DirectX API calls to Vulkan API calls to your GPU. Vulkan is a graphics and computation API, just like the Windows-exclusive DirectX, but it supports multiple platforms like Windows, Linux, Android, etc...
To check the stability of the Steam games, look at Proton DB. Proton DB collects reports from Steam users and classifies the game whether it is Platinum, Gold, Silver, or Borked. This system gives people that wanted to try Linux gaming an overview whether their favorite game will be playable or not or might get them banned. There are also reviews that guide other players on how to configure the game to make it work on their side, too. You can also send reviews to Proton DB to help others see if their game is compatible with Linux.
As of now, Proton DB reports that there are more than 6.5k games work in Linux. This include big titles like:
- Witcher 3: Wild Hunt
- GTA V
- Sekiro: Shadows Die Twice
- Hitman 2
- NBA 2k20
- Elder Scrolls III, IV, V, V SE, Online
- and many more...
Steam Play's Proton and Proton DB assures me that I can game on Linux just fine. I was expecting a few hiccups, and it seems negligible.
Good thing that other than Steam, there is another community that exerts a lot of effort to enable Linux: Lutris. I use Lutris to install and play games that is not available from Steam, like Overwatch.
Migrating to Linux
After seeing that there is nothing stopping me to leave Windows, I quickly searched for a good Linux distro to install and went to the nearest store to buy myself a flashdrive to create a boot drive. Then when I got the chance to install Linux in my machine, I chose to install Pop!_OS and nuked my current Windows installation to oblivion.
When doing this kind of exodus from Windows to Linux, make sure to:
- Backup all important files, especially the games. In my case, my files are stored in the cloud or a hard drive, so not much friction there. Non-native games still uses Windows binaries and can be reused in your windows system using Steam Play or Lutris.
- When creating drive partitions, make sure to delete the Windows' boot partition. Not doing this will prevent you from booting Linux since the boot manager is still looking for the Windows partition.
- Format game storage drives to ext4. Windows only supports FAT (and its variations) and NTFS. Wine, which is used by Steam Play and Lutris under the hood, does not work on non-ext4 drives and will fail to start the game.
After finishing the preparations, I proceed to install Pop!_OS via a flashdrive.
I installed Pop!_OS by System76. I'm not really a fan of Debian-based OS, but Pop!_OS got an installer with NVidia driver bundled with it. Now, after almost a month of using it, I didn't have a problem and kinda customized to to suit my preference.
After installing Pop!_OS, this is what I got:
- Linux Kernel 5.3.0
- Gnome 3.34 (with Mutter compositor)
- NVidia Driver 440.44
The basic hardware are shown in the above
neofetch output screenshot. But here they are if you missed it:
- CPU: Intel i5-8400, 6-cores @ 4GHz
- GPU: GeForce GTX 1600Ti
- Memory: 16GB DDR4 @ 3600MHz
Not listed (but relevant) are:
- Storage: An m.2 SSD and multiple 2.5-inch SSDs. All formatted as ext4.
- Monitor: A monitor that can do 1080p @ 144Hz.
- Game Pad: Xbox Wireless Controller. Installed xpadneo driver, then the controller just worked like magic! Other than the driver, xpadneo enables power monitoring via the system's power management, and I am receiving a desktop notification when my battery is low!
Steam is one of the biggest Linux game distributors out there. There are even big titles released as Linux-native games in the Steam platform.
I am using Steam since most of my games are bought from it. Additionally, using Steam Play's Proton is very easy from the Steam application, which can be done in a few clicks.
Steam is available in most software repositories or your distro's app store. To install steam, either you run and
apt install command or click the "Install" button from your app store.
After installing Steam, it is just logical to install Proton next. This will enable you to play Windows-exclusive games in Linux.
Using Proton will simplify the configuration of Wine and whatever compatibility layer the game requires.
To install Proton, open the Steam Settings from the Steam menu (top-left corner of the Steam Desktop App.) Then in the Steam Play tab, check the 'Enable Steam Play for supported titles' checkbox. And optionally, check the 'Enable Steam Play for all other titles' to enable non-Steam games to use proton, too.
The download and installation of Proton will only start when you start a game that uses Proton. Proton has a relatively small download size.
Lutris is an open-source platform that manages games from different platforms. Lutris makes it easier to make Windows-only games work on Linux since its has a library of crowd-sourced scripts that configures the games for you.
I am using Lutris only for Overwatch, since it is distributed from its own platform: Battle.net.
Just like Steam, Lutris is available from different software repositories and app stores. I installed my Lutris using the Pop!_Shop.
After installing Steam and Lutris, and maybe xpadneo for the Xbox gamepad, the gaming setup is complete! You can now install games and play!
Here are the games I am currently playing in Linux and what I did to make the work. Apologies for mostly anecdotal reviews since I cannot really show Windows vs Linux perfomance data because I already nuked my Windows installation a month ago.
Dota2 and Dota Underlords
- Platform: Steam
- Compatibility: Native
- API: Vulkan
- Installation: Dota2 Steam Store Page / Dota Underlords Steam Store Page
Since in my Windows days, I am playing Dota2 using Vulkan by adding
-vulkan from the game's launch options. When I moved to Linux, it's like nothing has changed! I am still getting a constant 120 fps just like before.
Dota Underlords is a game that targeted mobile platforms alongside PC. That is why the game is optimized in Vulkan and provided me a smooth experience here in Linux.
There is really nothing much to say about these two games since they are already Linux-native and they are expected to work perfectly.
- Platform: Battle.net via Lutris
- Compatibility: Wine, DXVK
- API: DirectX to Vulkan
- Installation: Overwatch Lutris Script
Works out-of-the-box after the Lutris script finishes. In its Lutris script page, the author mentions about DXVK compiling the shader cache. This process usually complete in a few minutes (or hours, depending on your machine.) To help speedup the process, make sure to make the screen render every map possible and every character models. What I did is I played a few Quick Plays and went to the hero loadout to view all the available skins. During this time, you will reach very low framerates like 10-25 fps and is badly performant in Competitive.
After compiling the cache and a few games, the game rendered round 40-70 fps in ultra settings. I think it was just fine since some of the game assets, like skills and projectiles, are yet to show up from the game. To work with this, I played with different heroes in the Training Yard, using all of the skills available.
After a few dozen games, game performance has stabilized at average of 70-90 fps.
Assassins Creed: Origins
- Platform: UPlay via Proton 5.0
- Compatibility: Wine, DXVK
- API: DirectX to Vulkan
- Installation: AC: Origins Steam Store Page
At first, I could not make it work. I tried switching different Proton versions in order to find the one compatible to this game. After a few failed attempt, I gave up. I thought of dropping this title since I have already completed the main quest line, and it does not work.
Then I realized: I attempt to install the game to an NTFS drive. Wine does not work on NTFS drives. So I reformatted the drive that will contain AC: Origins, then installed the game on it. The game now works this way! To fix some stutters and save some resources, I disabled UPlay overlay.
First impression on this game is that it works just like how it was in Windows. I'm getting a constant 70 fps in very high settings. The single problem that I experienced when playing the game is the screen turned white briefly (about 2 seconds) when my character dove underwater. After that, it never happened again when going underwater.
Another bad experience is at first, I thought the controller does not work even with xpadneo driver. I learned tha it was just a bad case of power problem in my controller. I just plugged in my controller to the PC and played it using wired controller. After the controller has charged, I came back to using its bluetooth connection and it just worked smoothly.
After a few dozen hours playing AC: Origins, I noticed that the experience is not the same from how I was playing in Windows. The experience is way much better!
Back in Windows, the game constantly drop frames to 2-10 fps in random when passing around the 15-minute mark and happens again in a random interval in the middle of the game. This is literally nauseating and very frustrating especially in the middle of a fight. In Linux, this never happened.
Linux gaming is growing, and growing fast. If gaming is the only thing that binds you to Windows, it is better to switch to Linux. Imagine an OS that doesn't have much background processes eating your gaming resources, or imagine an OS that doesn't force you to install updates in an unfavorable time – that sucks, but it doesn't happen in Linux.
When installing games, make sure you have downloaded the latest graphics for your graphics card. In my setup, I downloaded Pop!_OS since it already has an NVidia driver bundled with it. When using a gamepad controller, install xpadneo driver – it is the best Linux gamepad driver out there. On choosing the install location of your games, make sure to install the games to an ext4-formatted drive. Wine does not work with FAT or NTFS file systems.
In Linux, you can install Steam, Proton, and Lutris to play your favorite games from Windows. Just make sure first if that games works in Linux by checking Proton DB. Remember to also check the behavior of anti-cheat detection software on Linux clients, there are players that are falsely accused of cheating due to bad DXVK translation.
After a month of gaming on Linux, I have played 4 games so far. Compared to my Windows gaming experience, these 4 games performed on par or even better than what I was playing back in Windows.
If you can't play your game on Linux, consider not gaming on it at all. But if you really want to switch to Linux, but game on Windows – you can always install Windows as dual-boot or install it in a virtual machine.