Skip to content

The following article will help you take the first steps towards gaming on Arch Linux.


Table of contents:
  1. Requirements
  2. Additional Software
  3. G-Sync
  4. Glossary
  5. Resources

Sources:
Linux gaming guide by @keybreak

Requirements

1. Check if your GPU supports Vulkan

Search for your GPU in the database;

If there’s an entry you’re good to go!
Not on the list? That means your GPU is too old to support Vulkan. Without it, DXVK won’t work and performance and compatibility will be worse. However you still can game;

  • Skip next steps: 3. Install Vulkan and 4. Install Vulkan driver for your GPU driver.
  • Make sure to disable DXVK/D3DVK globally in Lutris and Steam.

2. Install Vulkan

vulkan-icd-loader
lib32-vulkan-icd-loader

3. Install GPU specific Vulkan

Nvidia

nvidia-utils
lib32-nvidia-utils

AMD AMDVLK

amdvlk
lib32-amdvlk

AMD RADV

vulkan-radeon
lib32-vulkan-radeon

Intel

vulkan-intel
lib32-vulkan-intel

Hybrid / Optimus GPU

ArchWiki


Additional Software

GameMode is a daemon that automatically optimizes your system while playing games.

pacman -S gamemode

MangoHud is an in-game overlay, it can display useful information and cap FPS.

yay -S mangohud

ProtonUp-Qt is a GUI tool to manage different versions of GE Proton.

yay -S protonup-qt

DOSBox is an emulator for MS-DOS games.

pacman -S dosbox

EmulationStation is a front-end for emulating retro games.

yay -S emulationstation

G-Sync

Getting Nvidia G-sync to work properly on Linux may require some additional steps.

The most important consideration is the window manager’s compositor, specifically the ability to re-direct fullscreen windows. Most compositors are capable of doing this, those that cannot will need to be either disabled temporarily or swapped out.

Besides this, usage of a frame limiter is neccassary to ensure all rendered frames stay within the G-Sync range of the monitor, slightly below the maximum refresh rate. For example if your monitor is 144 Hz, cap it at approximately 142 fps. MangoHud is the easiest way to accomplish this, execute it as a run command within Lutris or Steam.

How to tell if G-Sync is actually enabled? Open nvidia-settings, navigate to “OpenGL settings” then tick the boxes “enable G-sync visual indicator” and “enable graphics API visual indicator”. Now launch a game and check the top left corner overlay, it should say “FLIP” and “G-SYNC” in green letters. In-game V-Sync should also be enabled.

Compatible compositors:

  • Compton / Picom
  • Compiz
  • KWin
  • Mutter
  • Muffin

Config files

Check the following config files and set the values as indicated;

~/.config/picom.conf

unredir-if-possible = true;
vsync = true;
refresh-rate = 0;

~/.config/MangoHud/MangoHud.conf

#change to your desired fps cap
fps_limit=60
#to hide the overlay
no_display

XFCE users

Make sure that xfwm vblank mode is set to glx, by typing this command in terminal:

xfconf-query -c xfwm4 -p /general/vblank_mode -t string -s "glx" --create

To prevent flickering on the desktop, add a new rule under “application profiles” in nvidia-settings:

This feature = process name (procname)
Matches this string = xfwm4
Profile name = no_gsync
Key = GLGSYNCAllowed
Value = false

Glossary

Platforms

PlatformProsCons
Linux Steam• Very easy to use
• Performance same or better than Windows & Native
• Big community
• Based on proprietary Steam client made by Valve
• Game library and saves depends on Valve (unless manually backup)
Linux Wine• Easy when you know how
• Performance same or better than Windows & Native
• Big community
• FOSS
• Gives you 100% control of your engine, data and games
• Requires some knowledge or tools for ease of use
• May break on updates if always using latest engine (not recommended practice!)
Linux Native• Best performance• May break on updates, unless sandboxed
• Currently limited number of games

Common terms

TermDescription
PREFIX / WINEPREFIXSeparate directory inside your Linux, which represents a “Windows” machine, it’s drives, folders, registry, etc.
Engine / (Wine / Proton)• Allows you to run Windows programs on Linux
• Downgrade / update engine version for any PREFIX
ARCHArchitecture of PREFIX is win64 or win32 based on chosen Engine
You can use only one ARCH for PREFIX since it’s created, in most cases you should use win64!
dll override / WINEDLLOVERRIDESIt’s not always possible to run an application on builtin DLLs. Sometimes native DLLs simply work better.

You can override any dll in your PREFIX, these DLL overrides can be set using winecfg or use the WINEDLLOVERRIDES environment variable to set them.

Options available:
• native (=n)
• builtin (=b)
• disable (=)
• native, builtin (=n,b)
• builtin, native (=b,n)
Winetricks / ProtontricksVery important tool in your arsenal to tweak PREFIX and overcome some known problems, or install Windows libraries, to cover unfinished parts of Wine.
DXVKVulkan-based translation layer for DirectX 9 / 10 / 11
Probably the most important project for gaming on Linux!
VKD3DAims to implement the full DirectX 12 API on top of Vulkan.
Early in development, may have lots of bugs and performance problems.
EsyncRemoves wineserver overhead for synchronization objects. This can increase performance for some games, especially ones that rely heavily on the CPU.
FsyncMore recent alternative with even better performance improvements, then Esync. However, you do need an Engine and Kernel that supports it.

Engines

EngineDescription
WineThe most important project for the topic at hand, in 1993 there were bunch of absolutely insane people who decided to reverse-engineer Windows proprietary software and redirect it to Linux native FOSS style for future compatibility.
Wine stagingIt contains bug fixes and features, which have not been integrated into the development branch yet.

The idea of Wine Staging is to provide experimental features faster to end users and to give developers a way to test their patches before being integrated into the main branch.
ProtonA fork of Wine maintained by Valve / Steam.
And what a great boost it gave for Linux gaming!

It is basically a set of patches;
DXVK enabled by default
Esync ready
Fsync ready

Made to work with Steam, so keep this in mind when hearing term “Protonified“! Although it’s not officially recommended, you can easily use Proton with Wine directly.
Wine-TKG 
Proton-TKG
Custom bleeding edge builds by Tk-Glitch, may greatly improve compatibility or performance, especially with new games!

Esync ready
Fsync ready

If you have new game which doesn’t work from day 1 – try this, most likely will be the first build to run your game.
Wine-GE
Proton-GE
Custom bleeding edge builds by GloriousEggroll “the most patched Wine”, may greatly improve compatibility or performance, especially with new games!

Esync ready
Fsync ready
vkd3d ready

If you have new game which doesn’t work from day 1 – try this, it most likely will be the first build to run your game.

Resources

ProjectRepositoryDevsBugsWikiSupport
DXVKGitHubdoitsujin, Joshua-AshtonGitHubWiki
VKD3DGitHub (Proton)
Git (Wine)
Józef Kucia (RIP), Alexandre Julliard, Hans-Kristian ArntzenGitHubWiki
LutrisWebsite, DatabaseMathieu ComandonGitHubWikiDonate
WineWebsite, Databasearmy of themBugzillaWiki, DocsDonate
Wine stagingGitHubzfigura, alesliehughesBugzillaWikiPatreon
ProtonGitHub, DatabaseValveGitHubWiki, OptionsPatreon (protondb)
Wine-TKG
Proton-TKG
GitHubFrogging-FamilyBugsGitHubPatreon
Wine-GE
Proton-GE
GitHub (Wine)
GitHub (Proton)
GloriousEggroll, CreditsGitHubPatreon
PlayOnLinux (Phoenicis)Website,
Binaries
qparis, plataGitHub (Winebuild)

Gaming #101

  • by