Como jugar a Elden Ring en Linux

Si estás leyendo esto doy por hecho que usas Linux y que estás acostumbrado a hacer cosas estilo "hágalo usted mismo". Eso es bueno, porque en este artículo te enseñaré los pasos que he seguido para jugar a cualquier juego relativamente moderno en Linux, incluso sin tener un gran hardware.

En este caso, voy a contarte como instalé Elden Ring en Linux y como se puede jugar con buen rendimiento (50-60 FPS).

Características de mi ordenador:

Mi ordenador no es ninguna maravilla, de hecho, ni siquiera llega a los requisitos mínimos que pide Elden Ring. Aún así, Elden Ring me funciona y me va a unos 50-60 FPS estables y se puede jugar de forma muy agradable.

¿Qué es Wine?

Wine es un middleware (o capa de compatibilidad) que permite ejecutar nativamente ejecutables hechos para Windows. Para ello lo que hace es sustituir la implementación de Windows por otra implementación propia basada en las librerías de Linux (Vulkan, etc...).

¿Qué significa implementación de Windows?

Hay cosas que solo están en Windows, por ejemplo las librerías de DirectX, Direct3D, etc... Estas librerías son propias de Windows y es software cerrado (su código fuente o sus detalles de como se han hecho no están disponibles para el público).
Sin embargo, las personas que han hecho Wine han implementado esas mismas librerías a través de ingeniería inversa (tratando de averiguar lo que hace cada llamada a librería, es un trabajo de chinos).

Ojo! Wine no es un emulador, lo que hace es ejecutar nativamente el ejecutable, pero cuando este ejecutable necesita una .dll de Windows, Wine le proporciona una .dll que tiene la misma interfaz que la de Windows pero con otra implementación distinta (basada en las librerías de Linux). Esto se hace así porque la implementación de Windows es de ellos, no podemos usarla ni conocerla desde fuera (no tenemos el código fuente).
De esta forma, cuando corremos un programa/juego de Windows en Linux, habrá momentos en los que el programa necesitará librerías propias de Windows, y en ese momento, Wine le dará una librería que es similar a la de Windows pero hecha por el equipo de Wine/Linux.

Ejemplo: Imagina que ejecutas un juego, y este juego necesita "d3d11.dll" (Direct X 11 Direct 3D), entonces Wine le proporciona una dll llamada "d3d11.dll" que tiene la misma interfaz que la "d3d11.dll" original de Windows pero la implementación está basada en OpenGL/Vulkan (que es nativa de Linux).

Cuando ejecutamos un ejecutable con Wine, éste necesita crear una carpeta (llamada wine prefix o wine bottle, es similar a un environment, es como si tuviéramos una mini-instalación de Windows en una carpeta) y dentro creará una estructura de directorios muy parecida a la de Windows, creará una carpeta que simboliza el disco "C:", dentro creará otras carpetas que simbolizan las carpetas "Windows", "Program Files" y otras carpetas propias de Windows.

Cuando instales algo, se instalará en las carpetas pertinentes dentro de esta estructura de directorios. Por defecto, la primera vez, si no dices nada, se creará una carpeta de wine (también llamada "wine prefix" o "wine bottle") en "~/.wine". Sin embargo, podemos decirle que cree esta carpeta en cualquier sitio que queramos. Algunos programas/juegos necesitan algunas librerías y complementos, como por ejemplo el VC Runtime de un año concreto, etc... Más abajo explico como instalarlos. También hay otras librerías auxiliares que son interesantes de instalar, como por ejemplo "dxvk" (son las librerías de Direct X 9, 10 y 11, pero funcionando en Linux y usando Vulkan por debajo) o "vkd3d" (Direct X 12 en Linux usando Vulkan por debajo). OJO! Algunos juegos están en 32 bits, aún así te funcionarán porque la versión de 64 también puede ejecutar las de 32 bits (detalles más abajo).

¿Qué versión de Wine tengo que usar?

Sea la que sea la distribución de Linux que estés usando, seguramente ya vendrá un paquete de Wine a instalar, el problema es que esa versión de Wine no te irá muy bien, no te servirá, en su lugar instalaremos una versión llamada Wine GE.

¿Qué es Wine GE?

Wine GE es una versión especializada para videojuegos, la he probado y Elden Ring va a 60 fps o más! mientras que el wine normal va a 10-15 fps!
Explicación: El Wine normal intenta ser compatible con todo tipo de aplicaciones (es como el kernel de Linux, que intenta ser compatible con todas las arquitecturas) pero no será óptimo para algunas cosas, especialmente juegos. Sin embargo, "Wine-ge-custom" está optimizado para juegos, tiene un montón de mejoras multiproceso, carga asíncrona y un montón de trucos para que los juegos carguen y funcionen a la máxima velocidad, y por eso Elden Ring va tan rápido. Wine-ge-custom viene del Wine con el que está trabajando Valve, para su SteamDeck. El problema es que todas estas mejoras rompen la compatibilidad con el wine tradicional (rompen la compatibilidad con muchas apps de windows que no son juegos) y por lo tanto no se pueden integrar en el wine normal (al menos de momento).

Instalación de wine-ge-custom (solo se hace una vez):

La última versión, en el momento de escribir esta guía, es la 8.22, se puede descargar desde: https://api.github.com/repos/jc141x/wine-ge-custom/zipball/wine-ge-8-22 Y lo copié y lo descomprimí en una carpeta mía donde guardo los programas, en mi caso es una carpeta llamada "~/Software", copia el fichero zip allí y descomprímelo (se crea una carpeta llamada "wine"). Después, hay que instalar el Vulkan acelerado y poner unas cuantas variables del sistema para que se usen esos ejecutables y no otros, lee más abajo.

Descargando el Vulkan costumizado y creando las wine bottles:

Para descargar Vulkan acelerado (versión 23.11.17, en el momento de escribir esta guía) ve a: https://api.github.com/repos/jc141x/vulkan/zipball/23.11.17 Y lo copié y lo descomprimí en una carpeta mía donde guardo los programas, en mi caso es una carpeta llamada "~/Software", copia el fichero zip allí y descomprímelo (se crea una carpeta llamada "vulkan").

Creando una wine bottle de 64 bits (que también vale para juegos de 32 bits):

La wine bottle es una especie de "instalación de windows" que usamos como soporte de los juegos, así cada juego podrá usar todas las librerías de este "Windows" para funcionar correctamente. Solo hay que crear, solamente una vez, una wine bottle en "~/Software". La wine bottle es de 64 bits, la cual es compatible con la de 32 bits, así es como hay que crearla: Abre un terminal, teclea los siguientes comandos:

cd ~/Software/vulkan
export WINEARCH="win64"
export JCD="$HOME/Software";
export WINE="$JCD/wine/bin/wine"
export WINEPREFIX="$JCD/wine_bottle_$WINEARCH"
export WINEGELOG="$JCD/wine/wine-ge.log"
export FREETYPE_PROPERTIES="truetype:interpreter-version=35"
./setup-vulkan.sh

cd "$WINEPREFIX/drive_c/windows/Fonts" && for i in /usr/share/fonts/**/*.{ttf,otf}; do ln -s "$i" ; done; cd ../../../..
wine reg add "HKEY_CURRENT_USER\Software\Wine\FileOpenAssociations" /v Enable /d N
rm -f ~/.local/share/applications/wine-extension*.desktop
rm -f ~/.local/share/icons/hicolor/*/*/application-x-wine-extension*
rm -f ~/.local/share/applications/mimeinfo.cache
rm -f ~/.local/share/mime/packages/x-wine*
rm -f ~/.local/share/mime/application/x-wine-extension*
update-desktop-database ~/.local/share/applications
update-mime-database ~/.local/share/mime/

Instalar un juego:

Una vez hayas conseguido el juego de Elden Ring, vamos a instalarlo, para ello vamos a usar wine para ejecutar el instalador que viene en la carpeta del juego, para ello, en el terminal pon:

cd
export WINEARCH="win64"
export JCD="$HOME/Software"
export WINE="$JCD/wine/bin/wine"
export WINEPREFIX="$JCD/wine_bottle_$WINEARCH"
"$WINE" "Setup.exe" "$@"

Yo he instalado el juego en el lugar por defecto, que es "C:\Program Files\Elden_ring" ¿Dónde está esto en el disco duro de Linux?

Ejecutar un juego:

Crea un fichero llamado "jugar.sh", este fichero lo copiaremos a la carpeta donde se haya instalado el juego, recuerda cambiar la última línea por el nombre del ejecutable del juego:

#!/bin/bash
export WINEARCH="win64"
export JCD="$HOME/Software"
export WINE="$JCD/wine/bin/wine"
export WINEPREFIX="$JCD/wine_bottle_$WINEARCH"

export WINEDLLOVERRIDES="winemenubuilder.exe=d; mshtml=d; nvapi,nvapi64=n";
export WINE_LARGE_ADDRESS_AWARE=1;
export WINEFSYNC=1

export WINEGELOG="$JCD/wine/wine-ge.log"

export FREETYPE_PROPERTIES="truetype:interpreter-version=35"
export DXVK_ASYNC=1
export DXVK_GPLASYNCCACHE=1
export MANGOHUD=0
export DXVK_HUD="none"
export DXVK_FRAME_RATE=60
export DXVK_LOG_LEVEL="none"
export WINEDEBUG="-all"

export WINEDLLOVERRIDES="winemenubuilder.exe=d;mshtml=d;nvapi,nvapi64=n"
export WINE_LARGE_ADDRESS_AWARE=1
export WINEFSYNC=1
export WINE_FULLSCREEN_FSR=0
export WINE_FULLSCREEN_FSR_STRENGTH=2
export DXVK_ENABLE_NVAPI=1

"$WINE" "EJECUTABLE_JUEGO.exe" "$@"


Nos vemos en el próximo post!

Referencias:


Jorge Gascon Perez



This web uses cookies propias y de terceros para obtener datos estadísticos de la navegación de nuestros usuarios y mejorar nuestros servicios.
Si acepta o continúa navegando, consideramos que acepta su uso.
Puede obtener más información aquí.