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.
In my opinion, to configure Wine to the best compatibility, we need to install several libraries (DLLs) using winetricks.
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.
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.
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
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.
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.
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.
Just in case we prefer to run certain apps without Internet connection, we can use
firejail --noprofile --net=none wine explorer.