Mini-guía de instalación de juegos en linux con wine.

Aqui un sitio reservado para los mensajes que no tienen porque ser de estrategia. Siempre respetando las normas generales de conducta y la buena educación, ante todo.
Responder
Avatar de Usuario
Capote
Veteran - Leutnant
Veteran - Leutnant
Mensajes: 920
Registrado: 11 Oct 2013, 15:35
STEAM: Jugador

Mini-guía de instalación de juegos en linux con wine.

Mensaje por Capote »

He escrito una pequeña guía informativa de lo que sería instalar un juego de windows en linux.
Concretamente con wine y los programas satélite que los usuarios de linux tienen disponibles en el caso
de que quieran jugar a juegos de windows.
Antes de nada avisar de que hay muchos juegos que no funcionan o por lo menos yo no he podido hacerlos funcionar.
El caso más importante es el Combat mission 1 y 2, pero claro, eso no quiere decir que mañana no funcionen., ya que es un programa
que está en constante evolución.
Juegos que sí lo hacen, pues salvo casos concretos, como los CM, de momento todo lo que utilice directx9 para abajo.
Aunque en breve, se espera que ya comiencen a ser compatibles los juegos que utilizan Directx10 y Directx11. Y con breve quiero decir posiblemente antes de abril.
En muchos caso para juegos antiguos ahora mismo linux es mejor opción que las versiones modernas de windows, por cuestiones de compatibilidad.
Ahora mismo por el caso del rendimiento de los drivers gráficos en linux, AMD parte en desventaja, así que en lo
posible es recomendable tener una tarjeta Nvidia. Aunque esto tal vez en el futuro cambie.
También existe la opción de virtualizar windows a traves de Qemu o KVM haciendo un Gpu passthrough,
tan solo con un 20% de perdida de rendimiento, a veces incluso menos, con una compatibilidad del 100%.
Aqui le podeis echar un ojo a un tutorial, aunque existen muchos otros en la red:

http://www.se7ensins.com/forums/threads ... o.1371980/

La pega de esto es que se necesita un hardware medianamente nuevo, ademas de dos tarjetas graficas.
Personalmente no lo he probado, por lo que no puedo comentar nada mas que la existencia de esa posibilidad.

En esta mini-guía utilizaremos wine, que suele estar disponible en cualquier distribucion,
aunque lo mejor es disponer de la ultima actualizacion. Esta es su página:

https://www.winehq.org

Una vez instalado wine, lo primero es crear una unidad virtual. Esto
lo suelo hacer manualmente con el propio wine.
Abro una terminal y en el caso de crear una unidad de 32 bits, escribo:

Código: Seleccionar todo

WINEARCH=win32 WINEPREFIX=$HOME/miunidadvirtual wine winecfg
Que la unidad sea de 32 bits, es la opción más adecuada, ya que es la opción más
compatible. Aunque se puede crear de 64 bits, cambiando la variable WINEARCH, o omitiéndola (creo que
por defecto si no se especifica la unidad creada es de 64 bits)

Código: Seleccionar todo

WINEARCH=win64 WINEPREFIX=$HOME/miunidadvirtual wine winecfg
La creación de la unidad virtual, variará, en función del sistema operativo que el juego necesite para funcionar.
Es decir, si necesita Windows 7 o 8, normalmente necesitaremos crear una unidad de 64 bits. Aunque lo normal
es probar primero siempre con la de 32 bits, ya que habrá librerias que no nos deje instalar o que sea más complicado de hacerlo en una unidad de 64 bits, como el caso de las .Net framework o del Windows media player.
También en algunos juegos, dado los requerimientos de memoria, funcionaran mejor o sin caídas al escritorio
en una unidad de 64 bits, ya que aprovechará toda la memoria de la que dispongamos.

Existe un programa llamado Playonlinux donde todo el proceso de creación e instalación de librerias
está mucho automatizado, y a no ser que se este trabajando con un wine parcheado u optimizado para algún juego específico es la mejor
opción.

https://www.playonlinux.com/es/

En el caso de que se haga todo de forma manual, a veces se requerirá instalar alguna cosa extra, como pueden ser algún .Net Framework, las librerias de Visual C++ o hasta el mismo directx. En estos casos lo más fácil
es hacerlo con un programa llamado winetricks. Para descargar la última versión, basta pegar esto en una terminal:

Código: Seleccionar todo

wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks

Desde hace unos meses existe una version experimental de wine, llamada wine-staging, donde se suelen probar los nuevos parches
antes de actualizarlos en la rama mas estable. En esta versión viene incluida una opcion llamada CSMT, que suele acelerar
mucho el rendimiento grafico de los juegos, ademas de otros parches que activan la aceleracion de Physx y CUDA via hardware.

En esta direccion se explica como instalarla desde su propio repositorio:

https://github.com/wine-compholio/wine- ... stallation

Dado su mayor rendimiento, salvo algun caso aislado, suele ser recomendable instalarla en vez del wine original.
Si no se quiere hacer desde su propio repositorio tambien se puede hacer con PLayonlinux.

Una vez hecha la unidad virtual, se puede hacer dos cosas:
O bien sabiendo al juego que se quiere jugar, se mira si necestita algo extra buscándolo en esta dirección:

https://appdb.winehq.org

O bien se instalan una serie de librerias, con las que pocos juegos se suelen resistir.

En el caso de utilizar Playonlinux, a la hora de crear la unidad virtual, se debe seleccionar
la casilla de "instalar alguna librerias", y elegir las siguientes:

Código: Seleccionar todo

POL_Install_corefonts 
POL_Install_devenum 
POL_Install_dotnet45
POL_Install_dxfullsetup
POL_Install_physx
POL_Install_quartz
POL_Install_tahoma
POL_Install_vcrun2005
POL_Install_vcrun2008
POL_Install_vcrun2010
POL_Install_vcrun2012
POL_Install_vcrun2013
POL_Install_wmp9
POL_Install_xact
POL_Install_xna40
Basicamente son las librerias externas con las que no cuenta wine o que le ofrecen mayor compatibilidad
que las propias que instala por defecto. Muchas veces esto no será necesario, e incluso hará que baje el rendidmiento
de la aplicación, pero es una buena opción para ir a lo seguro.

Si se hace con winetricks, la línea sería algo así:

Código: Seleccionar todo

WINEARCH=win32 WINEPREFIX=$HOME/miunidadvirtual winetricks corefonts devenum dotnet45 directx9 physx quartz tahoma vcrun2005 vcrun2008 vcrun2010 vcrun2012 vcrun2013 wmp9 xact xna40
Si el juego requiere Steam, nos bajaríamos el instalador oficial y lo ejecutaríamos, y tras esto hariamos lo mismo con el propio juego.

Para ganar rendimiento o por mera compatibilidad, se puede crear el siguiente fichero e importarlo en el registro de la unidad virtual.
Es decir se copia el contenido del siguiente código y se pega en un fichero con extensión .reg, como podría ser wine3d.reg.

Código: Seleccionar todo

REGEDIT4

[HKEY_CURRENT_USER\Software\Wine\Direct3D]
"AlwaysOffscreen"="enabled"
"DirectDrawRenderer"="opengl"
"MaxShaderModelGS"=dword:00000003
"MaxShaderModelPS"=dword:00000003
"MaxShaderModelVS"=dword:00000003
"Multisampling"="disabled"
"OffscreenRenderingMode"="fbo"
"StrictDrawOrdering"="disabled"
"UseGLSL"="enabled"
"VideoDriver"="nv4_disp.dll"
"VideoMemorySize"="2048"
"VideoPCIDeviceID"=dword:000011c0
"VideoPCIVendorID"=dword:000010de
Lo más importante de este fichero son las últimas dos claves, que corresponden a la tarjeta gŕafica.
Este caso corresponde a la tarjeta que tengo, que es una GTX660. POr lo que cada uno tendrá
que rehacer estas líneas, según el hardware que tenga.

Creo que desde Playonlinux se puede hacer instalando un componente que se llama Videodriver, pero yo lo hago manualmente.

Para hacer eso, pimero escribo en la terminal

Código: Seleccionar todo

lspci -nn
En mi caso la línea correspondiente a la tarjeta de vídeo es esta:

Código: Seleccionar todo

01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK106 [GeForce GTX 660] [10de:11c0] (rev a1)
Lo importante aquí son los números y letras finales, que corrresponden al modelo y vendedor de mi tarjeta.
Esas dos cifras alfanuméricas es lo que se coloca arriba. La primera es común a todas las tarjetas Nvidias, la segunda, según el modelo concreto que sea.

El resto de claves de ese fichero se pueden leer aquí, en el apartado Direct3D:

http://wiki.winehq.org/UsefulRegistryKeys

Pero básicamente son opciones de compatibilidad y/o para aumentar el rendimiento.
Tal como están ahora, las tengo para que ofrezca una mezcla de rendimiento/compabilidad. pero se puede aumentar más.
Así que lo mejor mejor es editarlo según el caso concreto.

El que quiera meter este fichero en su wine, debería importarlo desde "el editor de registro" si lo hace desde Playonlinux
o con el comando "regedit" si lo hace desde wine.
Es decir, escribiendo en la terminal:

Código: Seleccionar todo

WINEARCH=win32 WINEPREFIX=$HOME/miunidadvirtual wine regedit wine3d.reg

Conozco también un segundo "hack" para los vídeos, en el caso de que estos no se vean.
Lo que hago es pillar un fichero qedit.dll de winxp o de alguna página de dlls, lo copio al system32 de mi unidad virtual, accedo a la configuración de winecfg, y en "Librerias" añado "qedit.dll" como nueva sustituación de libreria. Después edito esa nueva libreria
añadida y la cambio a "nativa".
Después si lo hago desde Playonlinux, pincho en una opción que se llama "Línea de commandos", y registro la librería con este comando:

Código: Seleccionar todo

wine regsvr32 qedit
Si lo hago desde el wine normal, se llamaría a la línea de comandos con:

Código: Seleccionar todo

WINEARCH=win32 WINEPREFIX=$HOME/miunidadvirtual wine cmd
Y después:

Código: Seleccionar todo

regsvr32 qedit

Tras esto, en el caso de que haya cosas que no funcionen o que den fallos, ya se tiene
que tratar individualmente el error que nos tira por el depurador de errores, bien buscando si a alguien le ha ocurrido lo mismo en google o creando un informe de fallos en el página oficial de wine y esperar a que algún desarrollador lo arregle.

Normalmente en los juegos el depurador de errores se suele silenciar, ya que con esto
se aumenta bastante el rendimiento.
Así que se coloca la variable "DEBUG=-all" en la línea que crearemos para ejecutar el juego:

Código: Seleccionar todo

WINEDEBUG=-all WINEARCH=win32 WINEPREFIX=$HOME/miunidadvirtual wine mijuego
Para finalizar y también con vista a aumentar el rendimiento, wine-staging dispone de dos variables, que son
"STAGING_SHARED_MEMORY=1" y "STAGING_WRITECOPY=1"

En esta página aparecen explicadas:
https://github.com/wine-compholio/wine- ... -Variables

Hay otras cosas que pueden aumentar el rendimiento, como puede ser compilar wine con las instrucciones de nuestra cpu.
Pero bueno, eso de momento ya excede el proposito de esta mini-guía.
Aunque si alguien quiere las instrucciones para hacerlo, en otro momento puedo añadirlas.
Imagen
Blackraider
Regular - Oberfeldwebel
Regular - Oberfeldwebel
Mensajes: 760
Registrado: 16 Sep 2012, 11:02
STEAM: Jugador
Contactar:

Re: Mini-guía de instalación de juegos en linux con wine.

Mensaje por Blackraider »

Me gustaria complementar con algunas cosillas la excelente guia que has publicado.

Para empezar el tema de los Prefijos. Un Prefijo (WINEPREFIX) es una especie de maquina virtual wine separada del resto. De esta forma podemos tener maquinas separadas con soporte separado, por ejemplo, para DX9 y DX10 o para el .NET 3.0 y el 4.5 si asi lo deseamos, todas con diferente espacio de almacenamiento y set de librerias.

Basta con crear la carpeta donde vayamos a tener el prefijo y exportarla con el path absoluto a la variable WINEPREFIX. Despues ejecutamos winecfg para que genere la infraestructura necesaria.

Por ejemplo si quisieramos instalar el Heroes of Might and Magic 5 Tribes of the East

Código: Seleccionar todo

mkdir .homm5
export WINEPREFIX=$HOME/.homm5
winecfg
Si queremos instalar desde una imagen ISO podemos hacer

Código: Seleccionar todo

mount -o loop HOMM5TOTE.iso ./iso
Instalamos los prerequisitos

Código: Seleccionar todo

winetricks d3dx9 vcrun2005
Se puede obtener informacion util de depuracion anteponiendo a la llamada a wine en la linea de comandos una asignacion a la variable WINDEBUG.
Esta variable maneja muchos valores pero entre ellos cabe destacar

Código: Seleccionar todo

+dll		Informacion de debug acerca de las dlls cargadas por wine
+loaddll	Informacion acerca de las dlls que carga wine
+heap		Informacion acerca de la pila del programa
+seh		Informacion de debug acerca del SEH (Structured Error Handler) del programa
+file		Informacion acerca de los archivos de cualquier tipo abiertos por el programa
Lo que va despues del "+" es un canal de depuracion. Se le puede anteponer una clase, que es opcional y puede ser err, warn, fixme o trace. La lista
de canales se puede consultar en http://wiki.winehq.org/DebugChannels
De esta manera se puede seleccionar un nivel de granularidad bastante alto a la hora de depurar un aplicacion Windows bajo Wine.

Se puede redireccionar la salida de wine a una pipe

Código: Seleccionar todo

WINEDEBUG=+file wine "ejecutable.exe" 2>&1 | less
En sistemas de 64 bits hay que instalar el soporte de librerias de 32 bits. Caso especial en ArchLinux el tema de OpenGL en el que hay que instalar
las librerias de Nvidia de 32 bit.

Código: Seleccionar todo

sudo pacman -S lib32-nvidia-utils

Si por lo que sea queremos matar o reiniciar wine lo haremos con

Código: Seleccionar todo

wineserver -k
Por ultimo mencionar que en https://appdb.winehq.org/ teneis una lista bastante extensa sobre que aplicaciones y juegos Windows funcionan y en que grado van bien o mal.

Salu2. blackraider.
Imagen
Imagen
netskaven
Regular - Oberfeldwebel
Regular - Oberfeldwebel
Mensajes: 707
Registrado: 23 Sep 2009, 20:31
STEAM: Jugador

Re: Mini-guía de instalación de juegos en linux con wine.

Mensaje por netskaven »

:aplauso: :aplauso: Impresionante la información :W00t: :Ok: :babas: :aplauso: :aplauso:
Avatar de Usuario
Warsage
Support-PdL
Support-PdL
Mensajes: 957
Registrado: 21 Abr 2012, 00:01
STEAM: Jugador
Ubicación: En el charco no.

Re: Mini-guía de instalación de juegos en linux con wine.

Mensaje por Warsage »

Muchas gracias.
:aplauso:
Las vallas nunca serán lo bastante altas si al otro lado hay hambre.

ImagenImagenImagenImagenImagenImagenImagen
Avatar de Usuario
Capote
Veteran - Leutnant
Veteran - Leutnant
Mensajes: 920
Registrado: 11 Oct 2013, 15:35
STEAM: Jugador

Re: Mini-guía de instalación de juegos en linux con wine.

Mensaje por Capote »

¿Algún compañero linuxero ha conseguido jugar en multijugador al Pike and Shot: Campaigns?
Puedo crear partida y entrar en partidas ya creadas pero no me deja cargar los turnos cuando estas comienzan.

Edit: He conseguido hacer funcionar las partidas pbem. Y no veas el alivio porque este juego lo había comprado pensando sobre todo en el multijugador.
He creado una entrada en winehq.org que dentro de un par de días estará actualizada con lo que hay que hacer para hacerlo funcionar. Si alguno quiere enterarse antes, que lo diga o me mande un mp y se lo cuento.
Imagen
Responder