Blog

Juegos de Windows en un servidor Linux con GPU y Wine, en streaming

La versión Windows de SuperTuxKart con Wine en un servidor Linux en la nube con Intel UHD 770: unos 95 fps en 1080p sin V-Sync, con Sunshine y Moonlight.

Ejecutar juegos de Windows en un servidor Linux con GPU usando Wine, y hacer streaming

No siempre hace falta Windows para ejecutar un programa de Windows. Wine ejecuta software de Windows directamente en Linux, y DXVK traduce Direct3D 9, 10 y 11 a Vulkan. En un servidor Linux con GPU, eso significa: sin licencia de Windows, un sistema más ligero y los drivers de GPU que ya trae Linux. Lo probamos con la versión Windows de SuperTuxKart, un conocido juego libre y de código abierto, en un servidor Linux con GPU Intel UHD 770.

La versión Windows de SuperTuxKart ejecutándose con Wine en el servidor Linux, renderizada por la Intel UHD 770 (5 segundos).

Resultados en resumen

  • El juego de Windows funciona con Wine y lo renderiza la GPU (OpenGL 4.6, Mesa, Intel UHD 770).
  • Unos 95 fps en 1080p sin V-Sync, mientras otra máquina virtual usaba la GPU al mismo tiempo.
  • Desactiva el V-Sync: la pantalla del servidor es virtual y el V-Sync solo hace que el juego la espere. Moonlight limita la tasa de imágenes en tu lado.
  • Sunshine también funciona en el servidor Linux: captura la pantalla y codifica en H.264 o HEVC en la GPU (VA-API), listo para Moonlight.
  • No uses Xvfb para juegos: su OpenGL funciona en la CPU (9 fps en nuestra primera prueba Direct3D con Xvfb). Usa en su lugar un compositor Wayland sin pantalla (ver más abajo).

Configuración de la prueba

ElementoValor
ServidorLinux (Debian 13), 4 vCPU, Intel UHD 770 (GPU compartida), kernel 7.3, Mesa 25.0
WineWine 10.0 y DXVK 2.6 (paquetes de Debian)
Pantallasway en modo headless + Xwayland, 1920 × 1080 a 60 Hz
JuegoSuperTuxKart 1.5, versión Windows, benchmark integrado (carrera grabada, 38 s), renderizador OpenGL

1. Una pantalla para un servidor sin pantalla

Los juegos necesitan una pantalla. En un servidor, la respuesta fácil es Xvfb, un servidor X virtual, pero su OpenGL lo renderiza la CPU: nuestra primera prueba Direct3D con Xvfb iba a 9 fps. La solución es sway, un compositor Wayland que funciona sin monitor y renderiza con la GPU, junto con Xwayland para programas X11 como Wine:

apt install sway xwayland wine wine64 dxvk-wine64 mesa-vulkan-drivers
mkdir -p ~/.config/sway
cat > ~/.config/sway/config <<'EOF'
output HEADLESS-1 resolution 1920x1080 position 0,0
default_border none
xwayland enable
EOF
export XDG_RUNTIME_DIR=/run/user/$(id -u)
WLR_BACKENDS=headless WLR_RENDERER=gles2 WLR_LIBINPUT_NO_DEVICES=1 \
  WLR_RENDER_DRM_DEVICE=/dev/dri/renderD128 sway &

Comprueba que OpenGL funciona en la GPU:

DISPLAY=:0 glxinfo -B | grep renderer
# OpenGL renderer string: Mesa Intel(R) UHD Graphics 770 (ADL-S GT1)

2. Ejecutar el juego de Windows

export DISPLAY=:0 WINEPREFIX=~/.wine-games
wineboot -i
dxvk-setup install --prefix "$WINEPREFIX"   # Direct3D 9/10/11 -> Vulkan
cd SuperTuxKart-1.5-win/stk-code/build-x86_64/bin
wine supertuxkart.exe --screensize=1920x1080 --fullscreen

El registro del juego confirma la GPU:

IrrDriver: OpenGL renderer: Mesa Intel(R) UHD Graphics 770 (ADL-S GT1)

Para los juegos Direct3D, DXVK hace el mismo trabajo sobre Vulkan: en nuestra prueba encontró la Intel(R) UHD Graphics 770 (ADL-S GT1).

Versión Windows de SuperTuxKart ejecutándose con Wine en un servidor Linux, renderizada por la Intel UHD 770
Captura de la pantalla sway sin monitor hecha con grim: el juego de Windows, con Wine en 1080p.

3. Resultados

SuperTuxKart (versión Windows), 1080pTípicoCasi estableConstante
Wine en Linux, V-Sync desactivado, GPU compartida con otra VM ocupada95 a 98 fps——
Windows 11 en la misma GPU, V-Sync desactivado, como comparación111 fps96 fps69 fps

Con Wine el juego va casi tan rápido como en Windows, incluso con la GPU compartida (cifras de Windows de nuestra prueba de Windows 11 y Sunshine).

Desactiva el V-Sync en el juego. Con V-Sync, el juego espera al siguiente refresco de la pantalla antes de mostrar una imagen. Aquí la pantalla es virtual y nadie la mira: un juego que pierde un refresco por poco espera al siguiente y pierde imágenes para nada. Deja que Moonlight limite la tasa de imágenes (60 fps por defecto).

4. Streaming con Sunshine y Moonlight

Sunshine tiene una versión para Linux que captura la pantalla de sway y codifica en la GPU. Con capture = wlr y encoder = vaapi en su configuración, encontró:

Found H.264 encoder: h264_vaapi [vaapi]
Found HEVC encoder: hevc_vaapi [vaapi]

Empareja Moonlight en tu ordenador, móvil o TV box, y juegas al juego de Windows que se ejecuta en el servidor Linux. Abre la interfaz web de Sunshine mediante un túnel SSH (ssh -L 47990:localhost:47990 root@your-server) en lugar de exponerla a Internet.

¿Wine o Windows?

Wine en LinuxWindows 11
Precioincluido10 € en un único pago (opción)
Compatibilidadmuy buena para juegos antiguos e independientes; consulta ProtonDB o la Wine AppDBtodo lo que funciona en Windows
Antitrampasnormalmente noa menudo rechazado en una máquina virtual
Instalaciónsway + Wine + Sunshinedriver de Windows + pantalla virtual + Sunshine

Empieza por Wine si se sabe que tu juego funciona con él; elige Windows si no es así, o si necesitas otras herramientas de Windows.

Sistemas listos para jugar desde el primer momento. Los sistemas que instalamos por defecto ya están optimizados para ello: Debian 13 con un kernel reciente (7.3), los drivers de GPU de Intel y Mesa (OpenGL, Vulkan, codificación de vídeo VA-API), y Windows 11 (opción) con el driver gráfico de Intel y el Escritorio remoto renderizado en la GPU. Sin buscar drivers: instala tu juego y Sunshine, y a jugar.

¿Qué plan?

Los juegos necesitan CPU y GPU a la vez. Recomendamos iGPU Power (4 vCPU, 14 GB de RAM, el doble de cuota de GPU que Start): sin V-Sync, en Windows, este juego usaba por sí solo más de la mitad de las 2 vCPU de iGPU Start, y cuando otros servidores usan la GPU, Power recibe el doble de tiempo de GPU, así que hay menos caídas de imágenes. iGPU Start basta para juegos 2D y herramientas ligeras.

Ver los planes, iGPU Power desde 29,99 € al mes sin IVA.