Usando Wine com desempenho máximo para jogos
O Wine é uma camada de tradução (um lançador de programas) capaz de correr aplicações Windows em Linux e noutros sistemas operativos compatíveis com POSIX. Neste artigo, mostrarei o uso básico do Wine para quem pretende usar para jogos. Tratarei de assuntos como: DXVK, versões custom do Wine e variáveis de ambiente que auxiliam no seu uso.
Como usar o Wine com desempenho máximo para jogos
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=/home/user/meu_wine winecfg
O "winecfg" no comando acima irá gerar esse novo WINEPREFIX. Recomendo que use um WINEPREFIX para cada jogo.
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.
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.
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
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.- wine-ge: Wine-GE-Custom - GitHub
- wine-lutris: Lutris - GitHub
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)
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