O
Wine "puro" traduz as instruções da biblioteca
DirectX para
OpenGL. Nessa tradução, existe a perda de desempenho. Se o jogo está em DirectX, terá perda de desempenho ao traduzir para OpenGL (veremos como melhorar isso). Mas, se o jogo que você pretende jogar foi feito em OpenGL, o desempenho será melhor e não a muito para mexer.
Baixe o Wine aqui:
https://www.winehq.org/
Agora veremos alguns conceitos importantes.
WINEPREFIX
O WINEPREFIX é uma variável usada pelo Wine para definir a sua unidade "C:" virtual, por padrão é
~/.wine. Para alterar a localização basta definir a variável com o diretório de sua escolha:
WINEPREFIX=/home/user/meu_wine winecfg
O "winecfg" no comando acima irá gerar esse novo WINEPREFIX. Recomendo que use um WINEPREFIX para cada jogo.
DXVK (DirectX Vulkan)
De acordo com sua página no GitHub, o
DXVK é a implementação baseada em Vulkan e DirectX versões D3D9, D3D10 e D3D11 para
Linux/Wine. Como tinha dito antes, o Wine "puro" traduz as instruções da biblioteca DirectX para OpenGL, já com o DXVK as instruções da biblioteca DirectX são traduzidas para Vulkan, que é uma API de baixo nível, assim melhorando muito o desempenho. Lembrando que a sua placa de vídeo precisa ter suporte ao Vulkan.
Primeiro devemos baixar o DXVK:
wget https://github.com/doitsujin/dxvk/releases/download/v1.9/dxvk-1.9.tar.gz
NOTA: veja no link do DXVK qual é a versão atual. Aqui usarei a 1.9.
Para instalar:
tar xvf dxvk-1.9.tar.gz
cd dxvk-1.9
chmod +x setup_dxvk.sh
WINEPREFIX=/home/user/meu_wine ./setup_dxvk.sh install
Para desinstalar:
WINEPREFIX=/home/user/meu_wine ./setup_dxvk.sh uninstall
Nesse caso usamos um WINEPREFIX diferente do padrão "/home/user/meu_wine", caso o WINEPREFIX usado não exista gere ele com o winecfg, como mostramos lá em cima.
Versões custom do WINE
As principais versões custom do wine são o
wine-ge e o wine usado pelo
Lutris, essas versões alternativas irão influenciar principalmente na compatibilidade dos jogos. Exemplo: se o jogo X não funcionar com o wine padrão tente com essas versões.
Vamos usar o
wine-lutris como exemplo:
wget https://github.com/lutris/wine/releases/download/lutris-6.10-3/wine-lutris-6.10-3-x86_64.tar.xz
tar xvf wine-lutris-6.10-3-x86_64.tar.xz
Para usar devemos usar o caminho completo para o executável do wine. Ex.:
WINEPREFIX=/home/user/meu_wine /home/user/lutris-6.10-3-x86_64/bin/wine PROGRAMA.EXE
Onde PROGRAMA.EXE é o programa do Windows que você quer rodar pelo Wine.
Variáveis de ambiente
Com as variáveis de ambiente podemos alterar a forma como o Wine funciona, mostrarei as principais ("0" desabilita e "1" habilita):
DXVK_HUD=full # Um HUD completo para DXVK
DXVK_HUD=fps # Mostra apenas os fps
GALLIUM_HUD=fps # HUD para OpenGL(biblioteca MESA), mostra apenas os fps
mesa_glthread=true # threaded optimization, para drivers MESA
__GL_THREADED_OPTIMIZATIONS=1 # threaded optimization, para drivers NVIDIA proprietários
WINEESYNC=1 # Para os wine custom, também pode habilitar ESYNC (Em alguns jogos não funciona)
Para usar, exemplo:
DXVK_HUD=full WINEESYNC=1 WINEPREFIX=/home/user/meu_wine /home/user/lutris-6.10-3-x86_64/bin/wine PROGRAMA.EXE
Mais variáveis para DXVK:
https://github.com/doitsujin/dxvk#hud
Mais variáveis para GALLIUM_HUD:
HowTo Galium-HUD (em inglês) e
Envvars#galium-enviroment-variables
Mais variáveis para MESA:
Envvars#radv-driver-enviroment-variables
Conclusão
É possível melhorar muito o
desempenho do Wine. É um assunto extenso e tentei abordar o principal (consultem os links para mais detalhes). Esse é o primeiro artigo que escrevo, espero que tenha ficado fácil o entendimento e espero que gostem!