-- Leo's gemini proxy

-- Connecting to snowymouse.com:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini; lang=en

Is Linux gaming good in 2020?


Yes and no... but mostly no.


________________


What does it take?


Linux gaming is something that has improved a lot over the years but, even after all this time, hasn't gotten up to par with Windows.


There are three hurdles to getting Linux gaming to be viable:


Ease of use

Compatibility

Performance


Ease of use is important. People do not want to spend hours troubleshooting issues with things like drivers, kernels, software, and whatnot. They want to play games. On Windows, you generally only need to update Windows and install your graphics drivers. Everything else pretty much just works. On Linux, sometimes you need to do that, sometimes you don't, and sometimes you need to install or update more software, such as Mesa. Installing the latest kernel is important for drivers, which many of the "stable" distros people keep recommending, such as Ubuntu, hold back software kernels and may require a more manual approach[1].


#1: may require a more manual approach


Being able to install the latest of something easily is one reason why I use Arch Linux[2] which, if you can get past the... um... "infamous" command-line installation (it's really not bad!), is one of the best distros for Linux gaming. After all, with Linux gaming not being exactly stable, you really do not want old software (which is often broken or *more broken* in some way). Getting the latest software on Ubuntu requires bypassing the whole "stable distro" thing with PPAs, anyway.


#2: Arch Linux


Perhaps the main hurdle of Linux gaming is Windows game compatibility. Most games are made for Windows, while most games are not made for Linux. In order to run Windows games on Linux, you need to either recompile them or use Wine or Proton. The two main options for graphics APIs are OpenGL and Vulkan. Windows, on the other hand, has a plethora of Direct3D based games. Therefore, you need to wrap them to OpenGL or Vulkan or reimplement the APIs.


Wrapping Direct3D calls to OpenGL or Vulkan can either sometimes hurt performance, as seen in some benchmarks[3], since there is a bit of CPU overhead involved in doing that. Also, OpenGL performance is atrocious on Linux, so wrapping to OpenGL adds even more performance loss on top of that.


#3: as seen in some benchmarks


Native Direct3D support has been done, such as with Gallium Nine[4] providing native Direct3D 9, but the problem is that Nvidia cards do not support it due to their stubbornness to continue making closed source drivers (to the inconvenience of many Linux users). AMD, on the other hand, is not top dog in performance, so most people do not buy AMD GPUs. I remember when Linus Torvalds notoriously cursed out Nvidia[5], and honestly, I feel it was warranted due to how much they hold back Linux gaming as whole.


#4: Gallium Nine

#5: Linus Torvalds notoriously cursed out Nvidia


Only playing native Linux games


If you want to just run Linux games, well... sure. You can do that. At the time of writing this, 7749 Steam games claim to natively run on Linux[6] and 47753 Steam games run on Windows[7]. That's still plenty of games, but taking a look at the top 50 games on Steam's search, only nine of them (18%) run on Linux natively:


#6: 7749 Steam games claim to natively run on Linux

#7: 47753 Steam games run on Windows


Native Linux games

Counter-Strike: Global Offensive

Total War: WARHAMMER II

Sid Meier’s Civilization® VI

War Thunder

Stellaris

ARK: Survival Evolved

Tabletop Simulator

Cities: Skylines

Crusader Kings III


Windows and macOS exclusive games

Divinity: Original Sin 2 - Definitive Edition

Baldur's Gate 3

Empire of Sin

Rust


Windows exclusive games

Destiny 2

Phasmophobia

DOOM Eternal

Red Dead Redemption 2

Dead by Daylight

Tom Clancy's Rainbow Six® Siege

Hades

Apex Legends™

Halo: The Master Chief Collection

The Sims™ 4

Among Us

STAR WARS™: Squadrons

Sea of Thieves

Monster Hunter: World

Borderlands 3

Grand Theft Auto V

The Elder Scrolls® Online

STAR WARS Jedi: Fallen Order™

Raft

The Outer Worlds

Assassin's Creed® Odyssey

Fallout 76

DARK SOULS™ III

Half-Life: Alyx

The Elder Scrolls V: Skyrim Special Edition

Control Ultimate Edition

Satisfactory

Fall Guys: Ultimate Knockout

The Witcher® 3: Wild Hunt

Sekiro™: Shadows Die Twice (GOTY Edition)

Deep Rock Galactic

Black Desert Online

Planet Zoo

Fallout 4

Warframe

Squad

Metro Exodus


Mind you, there are tons of really good games available for Linux from Steam that aren't even listed here, but you are also missing out on plenty of good games, too, and the "no tux, no bucks" philosophy only goes so far here.


Separate Linux and Windows PCs


I have two desktop computers: an Arch Linux machine and a Windows 10 machine. The Arch Linux machine is for when I want to do work. It's what I write my code on, check e-mails, browse the web, and so on. The Windows 10 machine is for playing games and running Windows applications. This setup works well for me. I don't have to dual boot, and pretty much everything works.


As ideal as it is, having two machines is costly, and I had to save up for quite a long time to get both. Most people only use one desktop PC, so they can either only use one OS or the other, use VMs, or dual boot.


Dual booting


Dual booting is inconvenient, and it's an inefficient usage of my time. Having to restart my PC, closing or hibernating all of my programs, every time I want to switch operating systems is a chore. It's so inconvenient that I end up staying on one OS, Windows 10, and hating it.


If I exclusively use Windows 10, then I am less productive. Windows 10's default command line (PowerShell) is absolutely terrible, and WSL, which has Bash, is far from being a perfect solution. I get that most people don't use command line for things, but I personally find extremely simple GUIs that do extremely simple things to be clunky and limiting, while being able to *tell* my computer to do things is just so efficient.


But I tried dual booting and it did not work for me. I think this meme perfectly describes the dual booting process for me:


dual booting is a meme (image)


KVM on Linux


Virtual machines are probably the best way to run Windows games on one machine without dual booting, as all programs are compatible. However, there are a few things you need:


A dedicated, separate GPU for the host (if you want things to be seamless)

Plenty of RAM and CPU cores so the host OS and guest OS do not get starved of resources. 32 GB of RAM and an 8 core CPU are fine, since, at the time of writing this, gaming performance does not generally improve significantly past 6 cores[8], thus you can reserve six cores for the guest VM


#8: gaming performance does not generally improve significantly past 6 cores


If you want to use an Nvidia or AMD GPU and *not* on a professional card (i.e. Quadro, Radeon Pro), you'll need to trick the drivers into thinking you're not on a virtual machine[9], since these vendors want you to use the more expensive professional cards


#9: trick the drivers into thinking you're not on a virtual machine


For most games, this setup is fine! You don't need to dual boot, and starting Windows 10 is as simple as starting up a program... since that's exactly what you're doing!


However, there is a rather artificial limitation to this: anti-cheat. Some anti-cheat providers such as BattlEye[10] and Valve Anti-Cheat[11] will detect virtual machines and prevent them from playing on some or all games. In a Tweet[12], BattlEye stated the following:


#10: BattlEye

#11: Valve Anti-Cheat

#12: Tweet


> in EFT over 90% of recently active VM users were found to be abusing their VMs to cheat


I *really* do not buy this. How do they know over 90% were abusing their VMs to cheat? And why not just detect and ban those people and not the *less than 10%* who are actually playing their games legitimately?


But regardless, using a VM limits your game selection due to anti-cheat, even if said games would work perfectly fine.


You can try to bypass these detections, but if you do so, that's now grounds for them to ban you for cheating, should you screw up.


Wine on Linux


As stated before, most games are Windows based, so you have to use Wine/Proton to run them.


Wine has made some fairly big improvements over the past few years in regards to compatibility. More games and applications are running with little to no issues. However, it's pretty far from perfect.


One program I use is HxD. This is the best Windows-based hex editor you can use. Sadly, it is closed source, so I am not able to simply recompile it for Linux, but Linux hex editors are either too broken or they lack the features HxD has, meaning I'm stuck with this if I want to do hex editing on Linux.


HxD runs, and all of its main features work fine. I can do file comparison, data inspection, checksums, etc. - the stuff I do usually with this tool. But there is one critical feature that does not work (as of Wine 5.22), and it has nothing to do with hex editing: rearranging the actual tabs.


rearranging tabs are broken (image)


HxD explodes if you rearrange the tabs on Wine.


Guess what happens on Windows when you rearrange the tabs?


rearranging tabs work (image)


Yep, the tabs actually get rearranged, and nothing breaks. If a small part of a rather simple tool - a hex editor - completely breaks everything on Wine, you can probably imagine that games can break in more spectacular ways.


Anti-cheat


A lot of games insist on using anti-cheat. Games that use EAC, BattlEye, Warden, and so on often do not fully work on Wine, and some anti-cheat solutions will even ban you[13] for trying to run them on Wine.


#13: some anti-cheat solutions will even ban you


Work has been done on getting anti-cheat software to work on Wine[14], but honestly, I doubt a Wine/Proton that correctly runs anti-cheat will be realized any time soon. After all, anti-cheat developers want to make sure they can detect cheating[15], and I don't imagine Wine will make it easy to detect cheating from outside Wine.


#14: Work has been done on getting anti-cheat software to work on Wine

#15: want to make sure they can detect cheating


You know what? Cheaters suck. Screw 'em all.


The verdict


Right now, gaming on a Linux PC is a pick your poison deal. Your choices are:


Dual booting Windows 10 - Sure, this is the most compatible way, but rebooting completely sucks, and so does running Windows 10 on bare metal


Only running native Linux games (AKA "no tux no bucks") - Okay, you get fewer games, but they *usually* work at least


Running Windows games in a VM - If you have the hardware, sure, and while pretty much all games work, some overzealous anti-cheat software will stop you from playing online


Running Windows games in Wine - Well, anti-cheat and some DRM won't work, you'll almost always get worse performance, and some games will probably break because Wine is great, but there are quite a few games that work fine, and you don't have to buy a license for Windows 10


The best way to run PC games, compatibility-wise, is to just own a Windows 10 based PC, so I imagine this is why most people will pass up using Linux. That's fine. I completely understand that, and honestly, even as a Linux user, I cannot recommend desktop Linux in its current state for simply gaming.


All-in-all, gaming on Linux, while viable, is still far from being close to the level of performance and compatibility of Windows. If not being able to play many of the latest Windows games on Linux while having the same performance (or better) bothers you, don't play on Linux.


There are also several announcements intended to improve Linux gaming compatibility, such as with Collabora wanting to extend the Linux kernel to emulate Windows syscalls[16], so we'll have to see where we are next year, and I may just write another article then.


#16: extend the Linux kernel to emulate Windows syscalls


Edits


2021-02-27: Reformatted list for better overall readability as well as better gemtext compatibility


________________


Page stats


4317 views (1467 served via Gemini)

Posted on 2020-12-01 21:57:41

Edited on 2021-02-27 18:29:20

Source format: markdown


Main page

-- Response ended

-- Page fetched on Wed May 8 02:18:42 2024