To play Windows games on Linux, Wine is necessary. Even Steam Proton is also based on Wine.
To play most modern Windows games, I will suggest NVidia graphic card as the hardware requirement. Without good graphic card, a lot of 3D games are not able to render properly. Moreover, some pixelated games perform better with NVidia graphic card.
Winetricks
In my opinion, to configure Wine to the best compatibility, we need to install several libraries (DLLs) using winetricks.
- dxvk
- d9vk
Then it is able to use Vulkan for DirectX 9, 10, and 11. For more details about dxvk
and Vulkan installation, can read here and here.
Media Foundation
Recently, I found that some games require Media Foundation for playing movie. Though winetricks can install Media Foundation, it doesn’t work. A more promising solution is mf-install.
Heat and laptop fan issue
I also experienced that, quite a lot of games cause my laptop to produce loud fan, due to the heat. I prefer performance rather than good graphics. At the end, I found that, libstrangle is able to solve the problem. I use 25 FPS for most of the games.
CJK support
Just in case you need to render some CJK fonts, can try to import this registry file using regedit
, then run the wine with LANG
environment variable. However, this solution only works on the Window user interface like menu items.
For some games that render CJK fonts, may need to install the font and also fontconfig
.
Emulate virtual desktop
I experienced that, Alt-Tab causes the game not functioning. To solve this issue, emulate virtual desktop is the best solution. This can be done by using winecfg
. Alternatively, we can run
wine explorer /desktop=wine,1024x768 explorer
“explorer /desktop=wine,1024×768” will run the application with the emulated virtual desktop. By this, we need not to use winecfg
to configure the virtual desktop.
Use different Wine prefix for different usage
To understand Wine prefix, read here. I personally uses this script to manage Wine prefix. Because some installations require to run Wine as Windows XP, but the game can only run with Wine as Windows 7 and above. Keep changing the version with winecfg
is inconvenient.
Besides that, some games may require dotnet4x
installed. Yet dotnet
may break other games in the same prefix.
Use Proton as an alternative
Some of the games may have poor performance on Wine. In that case, can try on Proton. I have wrote a script to make the Proton invocation easier.
But my personal experience is that, Proton doesn’t have good support on joystick/gamepad as Wine.
Note: Proton version 5.x has an issue that I have reported here.
Other libraries
Not only Wine libraries affect the games, Linux libraries are also important to make the games work, for instance, Vulkan. This wiki page suggested several libraries as well.
Compatibility databases
I found that ProtonDB is a good place to find whether a game is compatible to Proton. And some users also shared the solutions on how to make the games work.
Alternatively, Wine official application database also provides some details on game configuration.
Offline mode
Just in case we prefer to run certain apps without Internet connection, we can use firejail
. Eg, firejail --noprofile --net=none wine explorer
.