There are two types of release models which linux distros are using, each one of em have their advantages and disadvantages.
Each desktop environment you are using or installing have an impact on your user experience and the performance on games. It is often recommended to run the game in fullscreen so the desktop compositor won’t affect the game’s performance, some DE have an option which lets you disable it such as Cinnamon or KDE Plasma (Automatic)Otherwise, XFCE,LXQT/LXDE and OpenBox are recommended to gain as much performance as possible. Due to the low or even absence of desktop compositor use.
It is generally recommended to install open source drivers as they provide the much larger performance and are better optimized to the kernel than the proprietary ones. Here is a list of drivers and required libraries:
It is recommended to install the open source version of drivers for a longer support and better performance than the proprietary/closed source ones. Due to the reliance on MESA for 3D acceleration, it’s best to keep it updated once a new version is released. Sometimes the AMDGPU Pro may have a better performance in some games or 3D model editors like Blender, as the driver contains special features which may not be present in the open source counterpart.
Be aware that the Catalyst is no longer supported and if you are forced to use it, you must downgrade your Xorg/X11 server where it was last supported!
Compared to AMD, NVIDIA offers only the proprietary drivers, however there are versions to choose from:
It is not recommended to download the drivers from NVIDIA’s website! Always install them from your repository!
Despite the fact that nouveau works with almost all of the NVIDIA GPUs, their performance is rather worse, but can be somewhat improved by tuning it while updating MESA, which relies on it. Compared to official ones which uses their own library, however MESA is still required to perform 2D acceleration.
There’s only one driver that is available for all of the integrated GPU present in Intel’s Core series and it also relies on MESA for both 2D and 3D acceleration.
If your graphics card supports Vulkan API, you need to install additional driver package in order to enable the support, with the exception of Nvidia ones as they are already included and then install the Vulkan ICD Loader to let your GPU to use it on an application which supports it.
In case of laptops which contains NVIDIA Optimus support it is recommended to have PRIME enabled, which can be done by installing additional package, follow the distro’s documentation to learn which one. The alternative to it can be NVIDIA XRun package and Bumblebee's optirun/primusrun (Not recommended as it is no longer in development), but then the manual intervention is required (With the exception of the former). The linked guide will explain in detail the differences between them, as well as how to use them.
Xorg/X11 is the 1st display server released in 1986 which became a standard of creating Graphical user interface (GUI) for Linux. It received a major change during the popularity of Linux in 2000s. Despite the long support and being commonly used it has major issues which are still present today such as focus stealing, client and server separation which may lead to delays depending on the application it was made, tearing issues or even security ones which other user may capture key inputs from the keyboard. Depending on the desktop environment it also has accessibility issue for disabled users. Despite the release of it's successor, Wayland, it is still maintained by Xorg Foundation and Free-Desktop.org.
Wayland is a successor to the Xorg/X11 server which allows to simplify the whole graphics stack without creating a Client while using a 3rd party compositor. It is only available for GPUs which have a Kernel Mode Setting support. Intel, ATI, AMDGPU, Nouveau have KMS enabled automatically by default, however in case of NVIDIA drivers the support started since 364.12 version and a manual intervention is required to enable KMS and gain the advantage of using Wayland.
The main benefit of the Wayland is a much faster response to programs compared to Xorg/X11 due to the simple communication between APIs. Keep in mind that you may need to add a command to inform you are running in that session to avoid using XWayland, which may affect the performance even if it has a support implemented. Such as games based on SDL2 like Team Fortress 2.
Be aware that Wayland’s support with NVIDIA isn’t so good, due to the different API which their graphic cards use compared to competition.
It is extremely important to install the microcode for your CPU! As the manufacturer provides security and stability updates for your processor which without it, you will expect a lot of issues using your system.
AMD users only need to install the Linux Firmware package, however in case of Intel, you need the Intel Ucode package and then set up the bootloader to use it as a 1st thing to load. GRUB can automatically set it up if it’s used as your default bootloader by updating the configuration.
It is important to update your Linux kernel if updates are available as they provide security updates, bugfixes, better support for computer hardware, new modules and better performance. There are two main versions of the official Linux kernel which they differ each other. The Long Term Support (LTS) kernel versions are slightly behind in terms of hardware support and features than it’s counterpart, but offers the same security updates while being more stable with longer kernel support than other, non-LTS kernels.
Other users are free to edit the main kernel’s source code to add features, improvements, or security updates for different purposes. While both normal and LTS can be used for gaming, there are also community-made ones which may even improve it even further.
The most notable ones are (Bold ones are kernels which have additional options to enhance the performance):
It is entirely possible to benchmark native Linux games in this system by using the Phoronix Test Suite. While it is not in GUI form, it's actually very easy to use. You will need to download any game you wish to benchmark through this program and later on run it. The biggest advantage is that once it's completed, it will save the information as a webpage which the program automatically generates, creating a separate result is not required, as the program can also include it to the existing ones, making a comparison between the hardware you have used or settings much easier.
If decided to benchmark on your own, whenether the game has a built-in benchmark or not, using Gallium HUD is recommended. Due to the option of displaying the FPS, CPU or even the GPU load graph while running the software and can be customized to your need and it is available when the MESA package (version 13 or newer) has been installed. This option is only available for AMD, Intel HD and Nouveau.
Another much simpler and available for every kind of GPU is the glxosd which requires installing the package with the same name and just like Gallium HUD, you need to type glxosd before launching a game. The settings can be changed in the glxosd_config.lua file located in /etc/glxosd/. It is recommended to change the refresh rate of displaying the information as by default it will show the current info after 3 seconds (In config file it's 3000).
Steam users can use Valve's voglpref which only works for Steam. It will display both informations in the Terminal and at the custom website which can be accessed privately, from there you perform any task you want, although you need to know the SteamID of the game you wish to benchmark.
Audio is mostly handled by ALSA, with or without PulseAudio. You may set up to use ALSA only, however it is mostly recommended to use with the latter, as it acts as a main central configuration point for audio itself.
In case of MIDI, installing Timidity is required along with either soundfonts or FreePats package. Depending on the distro, it will either set it up automatically or require manual intervention. Keep in mind that if you are using PulseAudio, all the sounds, beside the MIDI music, will be muted unless you include the -iA -Os argument for the timidity command as either an autostart or as a user-made service.
There are also other things to know, if your sound card has issues with playing the sound, make sure you have ALSA Firmware package installed, as for bluetooth headsets, check if PulseAudio Bluetooth package is installed and your output is set to A2D in the Sound settings.
There is also the OSS (Open Sound System) as a third option for audio, however it's been succeeded by ALSA.
All the controllers such as DualShock 4,DirectInput gamepads and XInput ones (Such as Xbox 360) are supported, however in case of issues regarding XInput ones, you may wish to install xboxdrv. For calibration purpose, you can install the graphical interface of JSTest package to do it.
The most interesting thing is the Steam Controller, as despite requiring Steam to make it work, it’s entirely possible to use it outside of it with the use of third-party scripts which lets you emulate it as an actual gamepad or a mouse. Even so far to use it on Wine, if it’s set properly.
WINE (Wine Is Not an Emulator) is a compatibility layer which allows you to run Windows programs in Unix/Linux environment, it’s main advantage is a wide support of Windows versions ranging from 3.11 to Windows 7 and supports both 32-bit and 64-bit versions of their systems (32 bit only if you have a 32 bit version of Wine). Besides that some games may even work better than on native Windows such as games which use OpenGL or Vulkan rendering. However a manual intervention may be required if there are issues and checking the WineHQ’s App Database to see if it’s compatible and how to make it work. There are multiple versions of this program each with their own differences:
AMD and Intel GPU benefits a lot from Gallium Nine version, due to the fact that Gallium3D is a part of MESA, which both of these cards rely on. NVIDIA is not affected by this, as it uses it’s own driver for performing 3D acceleration in it’s own utility package, unless you are on nouveau.
If WINE itself is hard to use there are also front-ends which may improve your experience with it:
Steam is currently the biggest store which offers games that are compatible with Linux however it’s client is 32-bit only and support ranges only from Ubuntu 12.04 and most likely distros based on it. Outside of it Steam can run on other distros as well as it uses it’s own library to work.
It’s even possible to force Steam to use the library used in your system which makes it more responsive and generally work better. Some distros such as the ones based on ArchLinux have a Steam Native package available in their repo which can be easily installed without manual intervention.
Despite not having the client. Humble Bundle is the 1st store which has games supporting Linux and it is currently the 2nd biggest store for games with Linux compatibility.
While the Galaxy for Linux is still development. GOG offers Linux games as a MojoSetup installer script. Keep in mind that after downloading the installer, you must label it as a executable file before running it. The store page of the game which supports Linux will display required packages in order to make it work properly in case if there are issues.
An open store which offers indie games whenether is it free or not. It’s client does support Linux and it is still in experimental phase.
While it doesn’t have a store, it is an open source client dedicated to installing and managing your games in Wine, native, Steam Wine or even available emulators in your system. The main page offers scripts which will automatically install the game you have for you, while giving an option to install it by yourself. Sometimes a script may even offer a different version of Wine made specifically for one game you wish to install. One prime example of it is Overwatch, as it uses a special Wine version dedicated only for this game.
The Unix Shell "bash" and Terminal are available on most Linux-distributions by default is a very useful tool for doing system tasks. If you use Linux as your main operating system, it may be unnecessary to use, but it is recommended to learn some of the important commands and terminal hotkeys to make your job easier such as creating a script binary to perform simple tasks or even create aliases to turn complicated commands into a much simple version. Each desktop environment includes their own terminal and can be changed anytime you want, especially the third-party ones such as Terminator,XTerm/UXTerm or Tilix (Recommended).
All user-made settings are always saved in .bashrc file in your Home directory.
It is recommended to learn commands related to file manipulation, text editing, finding specific words, hardware-related stuff and learn how it works.
In Makefile remove any -march and -mtune arguments from the CFLAGS and CXXFLAGS and add -march=native at the beginning.
Add -j#+1 after the make command. Where # is number of cores. So if you want to use 2 cores of your CPU, use make -j3, in case of 4 cores usemake -j5 etc.
Running games on a different X server from ones main desktop can dramatically improve performance and generally reduces the amount of problems within a game especially when using an advanced compositing window manager like Compiz. To launch a separate X server with a game create a new .sh file and paste in the following code:
xinit $cd '/YOURGAMEPATH' $* -- :1
Save and allow the file to be executable. Running this script in the terminal will make it much easier end the server when you are finished with it.
Alternatively you can set the path to a terminal emulator like Xterm /usr/bin/uxterm and launch the game from a terminal in the new server. You could even launch a file browser like nautilus /usr/bin/nautilus
Press Ctrl+Alt+F7 to return to the main desktop and Ctrl+Alt+F8 to go back to the newly created one.
xrandr --output <name> --primary
# dpkg-reconfigure x11-common
allowed_users=root or console
gpasswd -a <username> audio
Running a very light window manager may fix some problems with fullscreen games not going fullscreen and will make the mouse courser hide when in front of a full screen window.
Openbox is a very light manager that is available for many distributions.