Discussion of the LTT Vid: https://forum.level1techs.com/t/community-thread-gaming-on-linux-video-with-ltt/129271
Intro
BETA: This article will be updated several times over the next few weeks so keep an eye on this space. Have some wisdom to add to the community knowledge pool? Do so in the comments at forum.level1techs.com !
So, you want to game on Linux? Good news – it’s pretty good at that now. Though the fanfare from Valve’s Steam Machines has faded quite a bit, Valve did help elevate the status and ease of access to gaming on Linux in general.
This guide is broken into 4 sections:
- Gaming on Ubuntu Linux, natively.
- Gaming on Ubuntu Linux with Wine, DXVK & Lutris.
- Gaming on Ubuntu Linux with a VM.
- Gaming on Ubuntu Linux with a VM and Looking Glass.
Background
We demonstrated all four of these with Linus & Linus Tech Tips (big thanks to Anthony there for setup, support and putting all the behind the scenes stuff together)
Gaming on Linux is in a bit of an odd place. It requires developers with entirely different goals and on entirely different teams/projects to work together for a common goal. The first layer, the lowest layer, is the driver layer. On Linux, the driver is usually integrated into the Linux Kernel itself. This is true of AMD GPUs but is not really true of Nvidia GPUs (The kernel does have an open source driver for nvidia hardware, known as nouveau, but it really isn’t the best for gaming.)
Very recent versions of the kernel contain AMD drivers developed by AMD and their work is improving all the time. The performance uplift may make the difficulty of updating the kernel worth it. The Ubuntu Kernel Update Utility makes this update easy.
Unlike AMD, Nvidia only provides closed-source binary drivers. These drivers are not part of the Linux kernel and must be installed manually. Ubuntu provides a facility for doing this with The “Software & Updates” utility on the “Additional Drivers” tab. If you are an Nvidia user, it is not necessary to update the kernel – in fact you probably shouldn’t – for the best experience with Nvidia’s drivers. (They tend to be built and tested only with the older version of the kernel that Ubuntu ships with).
This downloads the drivers, and builds an interface for the kernel you are running so that nvidia’s drivers can load the next time you reboot.
The next level up from the driver level at the kernel are the libraries that provide functionality like Vulkan and OpenGL. This can vary wildly on different Linux Distributions. On Ubuntu, it is okay, but for best results, updating Mesa and LLVM is recommended.
This is why we recommend updating everything together – newer hardware drivers and newer libraries for graphics routines – tend to go together. Often you can run into graphical glitching or instability using a newer driver with older OpenGL libraries, or vice versa.
If all you want to do is run native Linux Steam games, you may not need to update your kernel or libraries such as LLVM or Mesa. If you want to run DXVK and run games like Witcher 3 on Linux without a full Windows virtual machine, you will typically need to update to the very latest available.
Lutris bills itself as an open gaming platform. It’s a runner to assist the casual gamer in getting up and running quickly with WINE [link], DXVK and other requirements. Basically, you end up with a script that setups a specific version of WINE with the specific combination of settings that is known to work with the game in question. It can be trickier than it should be for users, especially a novice, to do that type of thing on their own.
Finally, if you want to play the latest titles with no compromises, then setting up a dedicated Windows virtual machine may be the way to go. You still have to have a windows license from Microsoft and, at least while the game is running, Microsoft is still free to do whatever it wants. The fact that you can stop and start the virtual machine as needed and that you are otherwise separating your gaming concerns from the rest of your computing concerns may be important to some users.
Gaming on Linux, Natively
https://www.youtube.com/watch?v=onOiOs-z0ws
Just searching for Steam on any recent Ubuntu will install the version of Steam meant for Linux. Many popular titles are available natively for Linux, and it is unlikely you need to install a newer kernel or libraries such as LLVM or Mesa. Many of the games you can find on Good Old Games (GOG) will run this way just fine.
In this video we setup and demo a few popular Linux games. It's easy, and accessible for everyone. There really isn't much more to it anymore than Install Linux, install your driver (AMD or NVIDIA -- via some different ways, we suggest) and install your game.
Note that for AMD users -- especially if you have a newer Vega GPU -- we still recommend updating the Linux Kernel to something newer than what Ubuntu 18.04 ships with. While this probably won't be necessary in the future, we still had some unexpected behavior during gaming on both a FuryX and a Vega64. For RX 580 and lower cards, this doesn't seem to matter as much.
AMD is doing great things with the open source driver, so some leeway has to be given here.
If you haven't, I suggest you check out Stellaris. It's one of my favorite games on Linux.
There is nothing wrong with Gaming on Linux, but often the latest game releases from major publishers don't include Linux as a supported OS. Ports may come later, but that doesn't mean you're stuck. It's still possible to get your Fortnite, PUBG or other unsupported gaming fix on Linux via a methods we've showed off in the past (and showed off in the recent LTT video).
The next step to get your Windows game on in Linux is probably to expore the world of WINE, DXVK and Lutris!
Gaming on Linux, with Wine, DXVK & Lutris
Install Ubuntu 18.04 . Canonical provides a comprehensive installation guide for Ubuntu 18.04 -- https://help.ubuntu.com/lts/installation-guide/index.html
If you have a (recent such as RX xxx, Fury, etc) AMD graphics card, install the Ubuntu Kernel Update Utility:
sudo apt-add-repository -y ppa:teejee2008/ppa
sudo apt-get update
sudo apt-get install ukuu
Install the latest kernel, and reboot. You can run
Uname –a
From the terminal/CLI in order to determine what kernel version you are on. It should be the same version you installed, such at 4.17.5
Reboot. To install steam, all you need to do is type Steam under “Activities” and Ubuntu will take you to the Valve’s Steam installer.
Once Steam is installed, you can enter your steam credentials and Steam will show you games that you can install or play (or stream, from other PCs on your network).
And that’s pretty much all there is to gaming on Linux natively.
Note If you have an Nvidia graphics card, this step of updating your kernel is probably not necessary.
Install Lutris
Once Lutris is installed, check if your game has an installer:
Install Gallium 9 (optional, older, and maybe abandoned at this exact moment -- but useful for DX9 titles. Don't install if you don't need it)
With Lutris installed, you can browse the Lutris website and run the installer from the website. To get Overwatch and Witcher 3 up and running, all that was necessary was to click the install button from the website. It took a couple of tries to get logged into Battle.net and I had to resize my window to be "Borderless Fullscreen" but I did get it working.
Wait, what about DXVK??
Well, there is some additional info here. However, with Lutris and Ubuntu 18.04, you don't really have to manage this yourself. The dependencies are installed for you, excpept for the base Vulkan libraries.
Ubuntu:
-
AMD:
sudo apt install mesa-vulkan-drivers mesa-vulkan-drivers:i386
-
Nvidia:
sudo apt install libvulkan1 libvulkan1:i386
..which should have already been done in part 1 of the series anyway.
From there Lutris will manage the DXVK side of things with its runners. So there isn't much you have to worry about there. In fact you can open the GUI for Lutris on the runner for your game to pick specific versions (check the github link above for details).
By no means is it a perfect experience but it is an adventure.
For games like Fortnite, it will be more advanced. The install script for Fortnite w/Lutris is not ready yet, but it is playable if you commit a lot of time to working around the anti-cheat/copy protection:
https://www.reddit.com/r/linux_gaming/comments/95wd31/fortnite_winedxvk/
This is the most up to date info, at this time, but because I had mixed results on different I did not include it in the video. You will have to set the registry settings as described at reddit -- but my settings were reset after every 4th or 5th playthrough.
PUBG remains unplayable, at the moment, at least.
Wait I'm confused? Where's the guide?
Okay, here you go:
Step 1: Install Lutris on your already native-gaming capable gaming PC.
(Optional sub-step, make sure Vulkan is installed. See steps above.)
Step 2: Browse the Lutris website looking for your game, and finally
Step 3: Run the lutris install script.
That's pretty much it. The commands above will help you.
While it's almost as easy as Steam on Linux, natively, there can be some problems with games. Problems such as the mouse pointer problem with Overwatch, or the Doom 2016 problem I talked about in the video, or other similar problems. Let us know what you run into, and we'll try to help out.
Sorry it isn't more complicated than that?
If you want complication, work on your Fortnite installation on Linux. That's a bit of a worst-case-scenario in terms of complexity.
Gaming on Ubuntu Linux with a VM
The process for setting up a gaming VM on Linux hasn't changed much since Ubuntu 17.04. Our forum has guides for Fedora, Arch and Ubuntu. Here is the guide for Ubuntu
https://forum.level1techs.com/t/ubuntu-17-04-vfio-pcie-passthrough-kernel-update-4-14-rc1/119639
Watch this space for updates on Ubuntu 18.04 -- but the process is just about identical.
Step-by-step video for this coming soon from Level1!
Gaming on Ubuntu Linux with a VM and Looking Glass.
Geoff's awesome Looking Glass software can be found here:
https://looking-glass.hostfission.com/
And if you'd like to directly support the project, you can do so here:
An updated Step-by-step video for getting up and running with Looking Glass coming soon from Level1! But in the mean time a lot of our older content covers this pretty well, inluding our trials and tribulations with memcpy()/gcc.
Videos for each section and a link to Linus' video will be posted as soon as they are available! Happy Hacking! :D