Linux gaming
Why should YOU care?
You JUST want to game?
It must be very hard to ENJOY?
Not hard at all to just enjoy!
Buckle up and let’s spread some knowledge to make it easy for everyone!
Let this be our gaming hub, please share:
- Update of tools
- Best practices
- Quality guides
- New hot tech
- Performance tips
Table of contents:
- Introduction
1.1 Platforms
1.2 Common terms
1.3 Engines - Requirements
- Steam
3.1 Setup
3.2 Install games
3.3 Configuration
3.4 Problems - Wine
4.0 Prepare
4.1 Setup
4.2 Engine
4.3 Create prefix
4.4 Install game
4.5 Configuration
4.6 Problems - Lutris
5.1 Setup
5.2 Configuration
5.3 Add game
5.4 Game configuration
5.5 Install game - Common problems
- Advanced
7.1 GPU PhysX
7.2 ReShade & Ray tracing on any GPU in any game - Resources
Introduction
This section consist of just few terms / conceptions / libraries which may be scary sounding for newcomers - but they’re not, when structured right.
You may enjoy learning to avoid common pitfalls!
But if you JUST want to game - read Requirements, Steam / Wine, Lutris and you’re good to go!
1. Platforms
Platform | Pros | Cons |
---|---|---|
Linux Steam | • Very easy to use • Performance are same or better than Windows & Native • Big community |
• Based on proprietary Steam client made by Valve • Your game library and saves depends on Valve corporation (unless manually backup) |
Linux Wine | • Easy when you know • Performance are same or better than Windows & Native • Big community • FOSS • Privacy • Gives you 100% control of your engine, data and games |
• Requires some knowledge or tools for ease of use • May break on update if you always use latest engine (not recommended practice!) |
Linux Native | • Best performance |
• May break on update, unless sandboxed • Currently limited number of games |
Windows | • Ease of use • Compatibility |
• Huge privacy and security risks! • Forced updates • Performance getting worse and worse compared to late years Linux, because a lot of PC resources are aimed on spying, even when you game. |
2. Common terms
Term | Description |
---|---|
PREFIX / WINEPREFIX | Separate directory inside your Linux, which represents “Windows” machine, it’s drives, folders, registry etc, think of it as little sandbox |
Engine / (Wine / Proton) | • This is what allow you to run Windows programs on Linux • You can easily downgrade / update engine version for any PREFIX |
ARCH | Architecture of PREFIX is win64 or win32 based on chosen Engine You can use only one ARCH for PREFIX since it’s created, good thing that in 99% of cases, even if guides write otherwise you should use win64! |
dll override / WINEDLLOVERRIDES | It’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 you might want to use the WINEDLLOVERRIDES environment variable to set them. Options available: • native (=n) • builtin (=b) • disable (=) • native, builtin (=n,b) • builtin, native (=b,n) |
Winetricks / Protontricks | Very important tool in your arsenal, which will help you tweak PREFIX to overcome some known problems, or install real Windows libraries, to heal some unfinished parts of Wine. |
DXVK | Vulkan-based translation layer for DirectX 9 / 10 / 11 Probably most important project and milestone for gaming on Linux! |
VKD3D | Aims to implement the full DirectX 12 API on top of Vulkan. Early in development, may have a lot of bugs and performance problems |
Esync | Removes wineserver overhead for synchronization objects. This can increase performance for some games, especially ones that rely heavily on the CPU. |
Fsync | More recent alternative with even better performance improvements, then Esync. However, you do need an Engine and Kernel that supports it. |
3. Engines
Engine | Description |
---|---|
Wine | In the beginning was the Word, and the Word was with Linux, and the Word was Wine. This is most important project for topic at hand, in 1993 there were bunch of absolutely insane people who decided to start reverse-engineer Windows proprietary crap and redirect it to Linux native FOSS style for future compatibility, when Windows will die. Take a moment to create shrine for those people, it’s miracle that we see anything working at all!! |
Wine staging | It 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 the possibility to discuss and improve their patches before they are integrated into the main branch. |
Proton | This is fork of Wine maintained by Valve / Steam, but still itself FOSS. And what a great boost it gave for Linux gaming! But 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 fresh games! • Esync ready • Fsync ready If you have fresh game which doesn’t work from day 1 - try it and watch for news, it most likely will be first build to run your game in few days! |
Wine-GE Proton-GE |
Custom bleeding edge builds by GloriousEggroll aka “the most patched Wine”, may greatly improve compatibility or performance, especially with fresh games! • Esync ready • Fsync ready • vkd3d ready If you have fresh game which doesn’t work from day 1 - try it and watch for news, it most likely will be first build to run your game in few days! |
Requirements
1. Make sure your GPU supports Vulkan
Check your GPU in database
-
If there is an entry - you’re good to continue!
-
if API is below v1.3 - you will NOT be able to run DXVK 2.0+ and wine / proton v7.1+.
-
Not on the list? - that means your GPU is old enough to not support Vulkan.
You’re a serious gamer? Time to upgrade GPU!
Without Vulkan - DXVK won’t work and this is very bad news for performance and compatibility.However you still can try to game:
- Skip all next steps in Requirements section.
- Make sure to disable DXVK / D3DVK globally in Lutris and Steam
2. Install Vulkan
vulkan-icd-loader
lib32-vulkan-icd-loader
3. Install Vulkan driver for your GPU driver
Even if you don’t have AMD GPU make sure you’ve uninstalled AMDVLK (unless you use it), because this driver is enforced by default and can reduce your performance!
NVIDIA
-
NVIDIA (proprietary, maintained by Nvidia)
nvidia-utils lib32-nvidia-utils
INTEL
-
INTEL (open, maintained by Mesa, Intel)
vulkan-intel lib32-vulkan-intel
AMD
-
RADV (open, maintained by Mesa, Valve, Red Hat, Google etc.)
Best performance and compatibility.vulkan-radeon lib32-vulkan-radeon
-
AMDVLK (open, maintained by AMD)
Only use in case RADV doesn’t work.amdvlk lib32-amdvlk
-
AMDGPU PRO (proprietary, maintained by AMD)
Best for ray-tracing performance at the moment.vulkan-amdgpu-pro lib32-vulkan-amdgpu-pro
HYBRID / OPTIMUS GPU (Laptop)
Steam
TL;DR
Current best practice:
- Enable Proton in Steam play
- Check your game in protondb for game state / recommendations
- Problems?
Try GloriousEggroll or TK-Glitch engines or see full 4.4 Problems section
Config location:
~/.steam
Proton engines location:
~/.steam/steam/steamapps/common
Keep in mind that Proton will be installed in the same library as the first Steam Play game you try to launch, and will only be installed in one location.
Game PREFIX location, where [appid] is your game id (look up steamdb if in doubt):
~/.steam/steam/steamapps/compatdata/[appid]/pfx/
1. Setup
- Create account in Steam
- Install package:
if you plan to use controllers. also install this one from AUR:steam
game-devices-udev
- Launch client and login to your account
- Enable Proton so you can play Windows games with Linux Steam:
Steam → Settings → Steam Play
Enable Steam Play for supported titles
Enable Steam Play for all other titles
Run other titles with dropdown - here you can choose Proton version which will be used globally.
2. Install games
Now you're ready to install games!- Before buy, you may want to check protondb, maybe it’s rare case which still have problems or game is just out and doesn’t work in Proton just yet (usually resolved pretty quickly week-month)
- Buy / Download game
- Go to Library tab
- Select your game title on left panel
- Hit Play!
3. Configuration
-
To configure Proton through Environment variables, which you may see in protondb reports (see available options)
- Select game title on left panel
- Right Button → Properties → Set launch options…
- Enter desired variables, separated by space and ended by
%command%
• to disable variable add=0
after
• to enable use non0
values
For example, let’s enable DXVK HUDDXVK_HUD=full %command%
-
Install additional original Windows libraries with Winetricks (if required), where [appid] is your game id (look up steamdb if in doubt)
WINEPREFIX="~/.steam/root/steamapps/compatdata/[appid]/pfx/" winetricks "win7"
-
To use specific version of Proton for specific game (may be useful if latest gives problems)
- Select game title on left panel
- Right Button → Properties
Force the use of a specific Steam Play compatibility tool
use dropdown to choose Proton engine
-
Install custom Proton engine
- Download custom Proton engine for example GloriousEggroll or TK-Glitch
- Create a
~/.steam/root/compatibilitytools.d
directory, if it does not exist - Extract archive to
~/.steam/root/compatibilitytools.d
- Restart Steam
- Select custom Proton engine for specific game or globally
-
Change default location for games library
Steam → Settings → Downloads → Steam library folders- Add library folder you can choose for example another drive
- Right Button - Make Default folder If you want it to be default
-
You want to use NTFS disk with Linux Steam ( Why? - just drop Windows already )
-
You want to create log file to check if everything fine or file a bug, use Environment variable:
PROTON_LOG=1 %command%
Log will be saved at location, where [appid] is your game id (look up steamdb if in doubt)
~/steam-[appid].log
4. Problems
• Game doesn’t launch or crash
-
See if there are some known solutions to problems of this game at protondb or lutris.
-
Try to disable DXVK
PROTON_USE_WINED3D=1 %command%
If it works without DXVK - play and please report bug to DXVK project if it doesn’t exist already!
-
Still doesn’t work?
Check Requirements and Proton bugs. If you have AMD GPU check this. -
Even now doesn’t work?
Please report bug to Proton if it doesn’t exist already!
• Language doesn’t display properly during user input
Force your preferred locale:
HOST_LANG=ru_RU.UTF-8 HOST_LC_ALL=ru_RU.UTF-8 %command%
• Some games stutter at the beginning
- This is normal, because at the beginning shaders have to be loaded first - so that it doesn’t stutter next time. They are written directly into shader cache.
Wine
Do NOT launch wine / winetricks directly from launcher or terminal without ENVIROMENT VARIABLES, as this will add unnecessary stuff and mess your mime-associations, icons etc.
TL;DR
Current best practice:
- Create non-system WINEPREFIX with non-system Wine (amd64):
POL (staging-linux-amd64, upstream-linux-amd64)
it’s better to use separate prefix for each game - Check protondb and lutris for game state / recommendations
- Install game, prefer drm-free installers like GOG
- Use Lutris as launcher
- Enable DXVK and Esync
- Problems?
Try GloriousEggroll or TK-Glitch engines or see full 4.6 Problems section
Default WINEPREFIX for system version of Wine
(don’t need it for Games - can be safely removed, if it does not used by anything else):
~/.wine
Mono (FOSS .NET by Wine) & Gecko (FOSS Internet Explorer by Wine) installers location, both auto-installed while creating WINEPREFIX:
~/.cache/wine
Winetricks downloaded installers location:
~/.cache/winetricks
0. Prepare
Create all this bash scripts and make them executable.
create-structure.sh
Details
#!/bin/bash
title=$(basename "$0")
echo -n -e "\033]0;$title\007"
# Colors
c0=$'\e[0m'
c1=$(tput setaf 202)
c2=$(tput setaf 154)
b0=$'\e[25m'
b1=$'\e[5m'
# Force output in english
export LC_ALL=en_US.UTF-8
# OPTIONS
WINE_ROOT="$HOME/.PlayOnLinux"
STRUCTURE=(
"$WINE_ROOT"
"$WINE_ROOT/wineprefix"
"$WINE_ROOT/wine"
"$WINE_ROOT/wine/linux-amd64"
"$WINE_ROOT/wine/linux-x86"
)
main() {
create_structure
}
create_structure() {
echo
echo " --------------- Create structure --------------- "
echo
for path in "${STRUCTURE[@]}";
do
if [ ! -e "$path" ];
then
mkdir -p "$path" \
&& echo "${c2}[+]${c0} ${path}" \
|| echo "${c1}[${b1} ${b0}]${c0} ${path}"
else
echo "${c2}[x]${c0} ${path}"
fi
done
echo
echo "${c2}Script finished!${c0}"
}
main "$@"
create-prefix.sh
Details
#!/bin/bash
title=$(basename "$0")
echo -n -e "\033]0;$title\007"
# Colors
c0=$'\e[0m'
c1=$(tput setaf 202)
c2=$(tput setaf 154)
b0=$'\e[25m'
b1=$'\e[5m'
# Force output in english
export LC_ALL=en_US.UTF-8
# OPTIONS
NAME="GameName"
ENGINE="5.11-staging"
ARCH="amd64"
WINE_ROOT="$HOME/.PlayOnLinux"
PREFIX="${WINE_ROOT}/wineprefix/${NAME}"
WINE="${WINE_ROOT}/wine/linux-${ARCH}/${ENGINE}"
LOADER="${WINE}/bin/wine"
SERVER="${WINE}/bin/wineserver"
main() {
create_prefix
}
create_prefix() {
echo
echo " ---------------- Create prefix ----------------- "
echo
ARCH=$([ "$ARCH" == "amd64" ] && echo "win64" || echo "win32")
env WINEARCH="$ARCH" WINEPREFIX="$PREFIX" WINELOADER="$LOADER" WINESERVER="$SERVER" WINEDEBUG="-all" wineboot
env WINEPREFIX="$PREFIX" WINE="$LOADER" WINESERVER="$SERVER" winetricks isolate_home mimeassoc=off
echo
echo "${c2}Script finished!${c0}"
}
main "$@"
install.sh
Details
#!/bin/bash
title=$(basename "$0")
echo -n -e "\033]0;$title\007"
# Colors
c0=$'\e[0m'
c1=$(tput setaf 202)
c2=$(tput setaf 154)
b0=$'\e[25m'
b1=$'\e[5m'
# Force output in english
export LC_ALL=en_US.UTF-8
# OPTIONS
SETUP="Setup.exe"
NAME="GameName"
ENGINE="5.11-staging"
ARCH="amd64"
WINE_ROOT="$HOME/.PlayOnLinux"
PREFIX="${WINE_ROOT}/wineprefix/${NAME}"
WINE="${WINE_ROOT}/wine/linux-${ARCH}/${ENGINE}"
LOADER="${WINE}/bin/wine"
SERVER="${WINE}/bin/wineserver"
main() {
run "${SETUP}"
}
run() {
echo
echo " --------------------- Run ---------------------- "
echo
local file="$1"
[ -f "$file" ] || exit_error "$file doesn't exist"
if echo "$file" | grep -iq '.msi';
then
echo "${c2}[>] run .msi ${c0} $file"
env WINEPREFIX="$PREFIX" WINELOADER="$LOADER" WINESERVER="$SERVER" WINEDEBUG="-all" WINEDLLOVERRIDES="winemenubuilder.exe=d" msiexec /i "$file"
else
echo "${c2}[>] run .exe ${c0} $file"
env WINEPREFIX="$PREFIX" WINELOADER="$LOADER" WINESERVER="$SERVER" WINEDEBUG="-all" WINEDLLOVERRIDES="winemenubuilder.exe=d" "$LOADER" "$file"
fi
echo
echo "${c2}Script finished!${c0}"
}
main "$@"
tricks.sh
Details
#!/bin/bash
title=$(basename "$0")
echo -n -e "\033]0;$title\007"
# Colors
c0=$'\e[0m'
c1=$(tput setaf 202)
c2=$(tput setaf 154)
b0=$'\e[25m'
b1=$'\e[5m'
# Force output in english
export LC_ALL=en_US.UTF-8
# OPTIONS
TRICKS=(
win7
)
NAME="GameName"
ENGINE="5.11-staging"
ARCH="amd64"
WINE_ROOT="$HOME/.PlayOnLinux"
PREFIX="${WINE_ROOT}/wineprefix/${NAME}"
WINE="${WINE_ROOT}/wine/linux-${ARCH}/${ENGINE}"
LOADER="${WINE}/bin/wine"
SERVER="${WINE}/bin/wineserver"
main() {
tricks
}
tricks() {
echo
echo " -------------------- Tricks -------------------- "
echo
printf "%s\n" "${TRICKS[@]}"
env WINEPREFIX="$PREFIX" WINE="$LOADER" WINESERVER="$SERVER" winetricks "${TRICKS[@]}"
echo
echo "${c2}Script finished!${c0}"
}
main "$@"
1. Setup
- Install Wine package (it doesn’t really matter which one you use as system version):
orwine-staging
wine
- Install Winetricks package
winetricks
- Run create-structure.sh script, it will create folder structure in your
~/.PlayOnLinux
.PlayOnLinux ├── wine │ ├── linux-amd64 │ └── linux-x86 └── wineprefix
2. Engine
With Wine you can use any Engine!
Few things to know:
-
Usually it’s best to use latest version, unless there is known problem or update have broken compatibility for specific game
-
You can upgrade or downgrade to any Engine and Version without problems, just note that if you go from Wine to Proton your new user directory will move to:
drive_c/users/steamuser/
If your game configs / saves are in old user directory, just move them to steamuser or create symlink! Vise-versa if you’ll update from Proton to Wine
-
You can use only one ARCH for PREFIX since it’s created, good thing that in 99% of cases, even if guides write otherwise you should use amd64 !
Best to choose engines in given order, in case of problems:
- PlayOnLinux (staging-linux-amd64, upstream-linux-amd64)
Best place for compiled versions of original Wine / Wine-staging. - TK-Glitch (Wine version)
- GloriousEggroll
- Proton Compile source or if you have Steam client - download it and copy this dir:
to your Engines path and rename it like that 5.0-proton:~/.steam/root/steamapps/common/Proton 5.0/dist
~/.PlayOnLinux/wine/linux-amd64/5.0-proton
Once downloaded - put engine in:
~/.PlayOnLinux/wine/linux-amd64
3. Create prefix
From now to demonstrate complex case, let’s install Crysis from GOG.
After all, this is most important question of gaming: “But can it run Crysis?!”
- Open create-prefix.sh with text editor of your choice, and change this options:
# OPTIONS NAME="Crysis" ENGINE="5.11-staging"
- Run create-prefix.sh script
this will create your prefix at:~/.PlayOnLinux/wineprefix/Crysis
PRO TIP
Such a PREFIX is fully portable, if you remove this dir with symlinks to devices:
~/.PlayOnLinux/wineprefix/Crysis/dosdevices
Now it’s safe to copy / backup PREFIX.
It will be auto-created next time you’ll run anything in PREFIX - so it’s safe!
4. Install game
-
Open install.sh with text editor of your choice, and change this options:
# OPTIONS SETUP="setup_crysis_2.0.0.7.exe" NAME="Crysis" ENGINE="5.11-staging"
You can use absolute or relative to Setup executable, if you use relative, like i did here - just copy script to your setup directory.
Make sure your NAME and ENGINE variables are same as on 4.3 Create prefix
-
Run install.sh script
-
Follow installer steps and install to some simple location like
C:\Games\Crysis
if possible avoid and disable:- Any redist software like DirectX, Microsoft Visual C++ etc
- Create desktop icon / link
PRO TIP
In case you don’t like auto-installed proprietary garbage (sadly GOG installers doesn’t ask you about installing redistributables)
- Create temporary PREFIX CrysisTemp
- Install game as usual
- Move game folder to clean Crysis PREFIX
- Remove CrysisTemp PREFIX
-
This is rare case, but if you look on Lutris db see Wine GOG version
Install → dropdown → Views install scriptYou will see some winetricks recommendations:
d3dx10_43 d3dcompiler_43 vcrun2005
You can try without, but in that case it is a must (in general Lutris have decent recommendations):
d3d stuff - see more on unfinished DirectX 10 effects API
vcrun2005 is needed for some stuff like game saves (otherwise without it game will crash)Always recommended to add
win7
in the end of tricks, because sometimes winetricks reset OS to install some of the software properly! -
Open tricks.sh with text editor of your choice, and change this options:
# OPTIONS TRICKS=( d3dx10_43 d3dcompiler_43 vcrun2005 win7 ) NAME="Crysis" ENGINE="5.11-staging"
Make sure your NAME and ENGINE variables are same as on 4.3 Create prefix
-
Run tricks.sh script
Just proceed with installers windows-style, in case asked about Sending anonymous information or something along those lines - obviously choose NOT!
5. Configuration
-
Use Lutris as launcher it will make your life so much easier!
Read from 5. Lutris up to 5.4 Game configuration -
To disable network for WINEPREFIX use Firewall
6. Problems
-
Installer throw errors like that:
Runtime Error (at -1:0): Cannot Import dll: C:\users\user\Temp\is-VADAE.tmp\isskin.dll
err:module:import_dll Library MFC42.DLL (which is needed by L"C:\\users\\ready2rumbelx\\Temp\\is-L6E45.tmp\\isskin.dll") not found
To solve this - install those winetricks with tricks.sh:
mfc42 vcrun6
-
Installer fails:
-
Prefer simple installers and no DRM if you can - those are main points of possible failure.
-
GOG is best as it’s DRM-free
-
If your games is retail (CD / DVD / BD) and you fail to install directly in Wine, then install on VirtualMachine with real Windows and just copy installed game folder in your WINEPREFIX
-
In case everything above fails use , prefer steam-rip, epic-rip, gog-rip as those are cleanest installation available.
(PM me for trusted sources ) -
Even now doesn’t work?
Please report bug to Wine if it doesn’t exist already (don’t include details)!
-
-
Launch fails or crashes during gameplay:
-
Disable DXVK / VKD3D
If it works without DXVK - play and please report bug to DXVK, if it doesn’t exist already! -
Disable Lutris runtime
-
Try another Engine or version of Engine
-
On-line games might have problems with anti-cheat / DRM not working at all, so they can be unplayable, see protondb and lutris for more information!
-
Even now doesn’t work?
Please report bug to Wine if it doesn’t exist already (don’t include details)!
-
Lutris
Best all-around game launcher, which can be used for: Wine, Steam, Native, Emulators
Has vast variety of options
When using Proton or Protonified engine with Lutris you MUST use option:
- Disable Lutris runtime either globally or for specific game.
See how at 5.2 Configuration and 5.4 Game configuration.
Config locations:
~/.config/lutris
~/.local/share/lutris
Icons created by Lutris (might be useful to backup / transfer your library):
~/.local/share/icons/hicolor/128x128/apps
Wine / Proton engines location
~/.local/share/lutris/runners/wine
A lot of useful libraries & runtimes which for example allow to easily run Proton without steam client!
~/.local/share/lutris/runtime
1. Setup
Install Lutris package:
lutris
2. Configuration
You can configure Defaults for each runner (Default settings when you add new game)
On left panel hover your over Wine tab - Cog will appear, press it!
Show advanced options on left bottom -we’re no amateurs here
Runner options tab:
- Wine version - most important one, here you can set / update default Engine which will be used for all games, you can use anything installed: System, PlayOnLinux, Steam
or any Engine you put in:~/.local/share/lutris/runners/wine
~/.PlayOnLinux/wine/linux-amd64
- Enable DXVK/VKD3D - useful to turn off globally, if your GPU doesn’t support Vulkan
System options tab:
- Other ones may be useful to have:
Restore resolution on game exit
Switch to US keyboard layout(may remedy problems in case of multi-lingual inputs)
3. Add game
-
Press plus on top of GUI, to add game, let’s do it minimal setup required to start.
-
Game info tab
- Name - enter name of your game, you can name it whatever makes sense for you.
- Runner - select Wine
- Release year - optional, but nice in case you have big library
(you can look up year of your game in PCgamingWiki)
-
Game options tab
- Executable
Sometimes game have multiple executables, prefer x64 ones first!~/.PlayOnLinux/wineprefix/Crysis/drive_c/Games/Crysis/Bin64/Crysis.exe
- Wine prefix
~/.PlayOnLinux/wineprefix/Crysis
- Executable
-
Save - your game will now be available on list
-
If there’s no game image, that’s caused by Name not exactly identical to database one.
No worries - easy to fix by Identifier!Look game on Lutris db
Now get this id:https://lutris.net/games/
crysis/
and paste it exactly to Game settings:- Select game, Right Button → Configure
- Identifier Change now paste crysis
- Apply
- Save
4. Game configuration
Here are some essential configuration options to know!
Select game, Right Button → Configure
Runner options tab:
-
Wine version - you can force Engine for specific game (will be used even if you change global, so don’t forget to change that option back if you need)
-
Enable DXVK/VKD3D in most cases it’s best to use it, but you can toggle in case of problems
-
DXVK version - you can force specific DXVK version for specific game, in case of problems.
-
Enable Esync - best to enable in most games which heavily use CPU or avoid stutter
-
Enable Fsync - same as Esync, should be better, but Engine and Kernel must support it!
Lutris will alert you if it’s not supported by Engine in use
System options tab:
- Disable Lutris runtime
Game options tab:
- Arguments - that is very useful option!
You can pass game command-line options, for example in Crysis let’s force DirectX 10 mode:-dx10
5. Install game
Lutris is easiest way to install games without , it will auto-install required Engine and Winetricks!
Also you can download Install script and edit it yourself
However it’s not recommended method of installation (without ), because:
• Scripts are made by other people and can be opinionated, outdated or not include current best practices mentioned in this guide, sometimes even work worse!
• Scripts can use win32 Engine which makes no sense this days.
You can change Wine / Proton version later, but not it’s ARCH!
-
Find your game from Lutris program (or on Lutris db)
Search → Search Lutris.net
-
Select game, Install
-
Choose Installer script to use, it might be:
Wine / Steam / Emulator - choose wisely! -
From now just follow dialogs and install whatever is offered to you
-
Turn off Lutris search mode, now it will be available in your games library and you can play
Common problems
Sound crackles / cut off phrases
That is very rare case, for example with Mirror’s edge (2009)
-
Install packages
openal lib32-openal
-
Configure by running terminal command:
alsoft-config
You can try all kinds of settings here, but to overcome crackles usually it’s enough to set:
Resampler quality to Cubic spline or higher -
Apply
-
For Wine / Lutris override dll with winecfg
openal32 (builtin)
For Steam you need to run from Lutris and:
Select game, Right Button → ConfigureRunner options tab:
- Disable Steam runtime (use native libraries)
System options tab:
-
Enviroment variables → Add
Key
WINEDLLOVERRIDES
Value
"openal32=b"
Can’t set resolution / resolution is messed up
For Wine / Lutris:
- Select game in Lutris, Right Button → Wine Configuration open Graphics tab
- Emulate a virtual desktop
- You can change Desktop size if you need
- Press Apply and OK
- Now you can:
-
Change resolution in-game options, preferably to your native
Disable Emulate a virtual desktop which you’ve used on step 2That should solve problem!
-
Just keep using it with Virtual desktop
-
Advanced
GPU PhysX
So many times people on protondb mentioned, even on Nvidia GPUs to just turn off PhysX, because game start to lag since there are no GPU acceleration for it…
There are very interesting games with PhysX and no reason to limit yourself, which could make a world of difference!
-
GPU PhysX works only with wine-staging engine for now.
-
Install OpenCL headers
opencl-headers ocl-icd
-
Install CUDA for your driver version:
opencl-nvidia lib32-opencl-nvidia
-
In your game PREFIX install this winetricks:
physx
-
Make sure PhysX enabled in game settings!
Problems:
-
Some newer games like Batman Arkham knight for example, use newer library called nvapi, for now it’s not supported
-
There are constantly attempts to add it, but it’s real die hard! if you have ideas & experience - please step in and help!
ReShade & Ray tracing on any GPU in any game
FOSS screen space ray tracing with any game and GPU
Resources
Project | Links | Bugs | Wiki | Support | Devs |
---|---|---|---|---|---|
DXVK | GitHub | GitHub | Wiki | doitsujin Joshua-Ashton Contributors |
|
VKD3D | GitHub (Proton) GitLab (Wine) |
GitHub (Proton) Bugzilla (Wine) |
Wiki | Józef Kucia (RIP) Alexandre Julliard Hans-Kristian Arntzen Contributors (Wine) Contributors (Proton) |
|
Lutris | Website GitHub Database |
GitHub | Wiki | Donate | Mathieu Comandon Contributors |
Wine | GitLab Database |
Bugzilla | Wiki Docs |
Donate | Army of them |
Wine staging | GitLab | Bugzilla | Wiki | Patreon | Alistair Leslie-Hughes Contributors |
Proton | GitHub Database |
GitHub | Wiki Options |
Patreon (protondb) | Valve Contributors |
Kron4ek | GitHub | GitHub | README | Sponsor | Kron4ek Contributors |
Wine-GE | GitHub (Wine) | README | Patreon | GloriousEggroll Credits |
|
Proton-GE | GitHub (Proton) | Wiki README |
Patreon | GloriousEggroll Credits |
|
Wine-TKG Proton-TKG |
GitHub | Bugs | Wiki | Patreon | Frogging-Family |