Mini-guía de instalación de juegos en linux con wine.
Publicado: 16 Dic 2015, 19:09
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:
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)
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:
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:
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í:
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.
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
En mi caso la línea correspondiente a la tarjeta de vídeo es esta:
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:
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:
Si lo hago desde el wine normal, se llamaría a la línea de comandos con:
Y después:
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:
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.
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
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
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
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
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
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
Código: Seleccionar todo
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK106 [GeForce GTX 660] [10de:11c0] (rev a1)
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
Código: Seleccionar todo
WINEARCH=win32 WINEPREFIX=$HOME/miunidadvirtual wine cmd
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
"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.