Ejecutando juegos de gog en debian - Volgarr the Viking

2022/02/28

A continuación los pasos seguidos para instalar el juego Volgarr the Viking distribuido por GOG en debian.

volgarr intro

El instalador es el archivo gog_volgarr_the_viking_2.1.0.3.sh y según la página de gog el juego es un binario de 32 bits, por lo cual para ejecutarlo se debe tener habilitada la arquitectura i386. En la página también se indica que funciona en Ubuntu 18.04 32bits.

Vale la pena aclarar que tengo varias PC’s con distintas versiones y configuraciones de debian, por lo cual se indicarán los pasos seguidos en cada PC.

storm: debian 11 (bullseye) - multiarch (amd64/i386)

Se ejecuta el instalador, se acepta el EULA, se elige el directorio ~/GOG Games/Volgarr the Viking para realizar la instalación y se crea el ícono en el escritorio y la entrada en el menú.

Al ejecutar se obtiene el siguiente error:

$ "$HOME/GOG Games/Volgarr the Viking/start.sh"
Running Volgarr the Viking
libGL error: MESA-LOADER: failed to open i965: /home/ivan/GOG Games/Volgarr the Viking/lib/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/lib/dri/i965_dri.so) (search paths /usr/lib/i386-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri)
libGL error: failed to load driver: i965
libGL error: MESA-LOADER: failed to open i965: /home/ivan/GOG Games/Volgarr the Viking/lib/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/lib/dri/i965_dri.so) (search paths /usr/lib/i386-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri)
libGL error: failed to load driver: i965
libGL error: MESA-LOADER: failed to open swrast: /home/ivan/GOG Games/Volgarr the Viking/lib/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/lib/dri/swrast_dri.so) (search paths /usr/lib/i386-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri)
libGL error: failed to load driver: swrast
X Error of failed request:  GLXBadContext
  Major opcode of failed request:  152 (GLX)
  Minor opcode of failed request:  6 (X_GLXIsDirect)
  Serial number of failed request:  111
  Current serial number in output stream:  110

No recuerdo el post donde se da como solución borrar el directorio lib del juego, pero siguiendo el consejo:

$ mv "$HOME/GOG Games/Volgarr the Viking/lib" "$HOME/GOG Games/Volgarr the Viking/lib.old"

Ejecutando nuevamente el juego se obtiene una ventana con el siguiente mensaje:

Could not initialize SDL Joystick due to the following error: Unable to init SDL SubSystem: Could not initialize UDEV Click Yes to try the following instead: SDL Audio Sfx Or click No to quit the program and try to resolve the above error.

Nuevamente, buscando en internet se encuentra en los foros de steam la sugerencia de instalar libudev1:i386 para solucionar el problema.

En mi caso la versión instalada para la arquitectura amd64 era mayor a la disponible para la versión i386, por lo que debí hacer un downgrade -ya que al utilizar multiarch las librerías deben tener la misma versión en todas las arquitecturas- y resolver dependencias de paquetes que se rompieron al realizar el downgrade.

Se vuelve a ejecutar y EXITO.

Sin duda que no es el primer juego de GOG que instalo, por lo cual es probable que ya tuviera dependencias instaladas que no estaban documentadas.

Se vuelcan al archivo volgarr-deps.txt los paquetes que son necesarios instalar en base al listado de las dependencias del juego obtenidas del binario mediante ldd:

$ dpkg -S $(ldd "$HOME/GOG Games/Volgarr the Viking/game/Volgarr" | awk '/ => / { print $1 }') \
    | awk '/:i386:/ { print substr($1, 1, length($1)-1) }' | sort -u > volgarr-deps.txt

Para instalar los paquetes basta hacer:

$ doas apt-get install -Vy $(cat volgarr-deps.txt)

thunder: debian testing (bookworm/sid) - amd64

Evidentemente el juego no puede ejecutarse de forma normal: no está habilitada la arquitectura i386 en este PC.

Las alternativas que se me ocurren a configurar multiarch agregando la arquitectura i386 son:

  1. Utilizar las librerías (y el dynamic loader) de un sistema ubuntu creado localmente utilizando debootstrap
  2. Utilizar [flatpack]. Para ello se utiliza un runtime que posea las dependencias del programa y luego se crea una aplicación con los archivos del juego que posean todas las librerías necesarias.

Vale la pena notar que ambas alternativas en el fondo son similares: implican descargar los archivos de un sistema en el cual funcione el juego y luego ejecutar el binario utilizando los archivos del sistema descargado, sea mediante debootstrap o flatpak.

Uso de librerías con debootstrap

La idea es obtener los archivos de un sistema Ubuntu 18.04 i386 utilizando el programa debootstrap y luego definir la variable de entorno LD_LIBRARY_PATH para que apunte a las librerías, utilizando tambien el dynamic loader del sistema Ubuntu descargado.

Comenzamos instalando el juego, lo cual es posible ya que el instalador funciona tanto en la arquitectura i386 como en la amd64: se ejecuta el instalador, se acepta el EULA, se elige el directorio ~/GOG Games/Volgarr the Viking para realizar la instalación y se crea el ícono en el escritorio y la entrada en el menú.

Para obtener los archivos del sistema Ubuntu utilizamos la herramienta debootstrap, habilitando el caché local (la experiencia indica que cuando se prueba a instalar sistemas se suele tener que descargar los archivos varias veces hasta dar con el resultado que estamos buscando; es difícil dar en la tecla de entrada):

$ doas apt-get install -Vy debootstrap
$ doas /usr/sbin/debootstrap --arch=i386 --cache-dir=/srv/cache \
    bionic /srv/chroot_ubuntu_1804_i386 http://archive.ubuntu.com/ubuntu/

Aquí se obtuvieron los archivos correspondientes a un sistema base, pero no sabemos si están todas las librerías necesarias por el juego. Para ello buscamos el ejecutable del juego y lo copiamos al directorio /tmp del sistema creado:

$ find "$HOME/GOG Games/Volgarr the Viking" -exec file {} \; | grep -i 'ELF .* executable'
/home/jmpc/GOG Games/Volgarr the Viking/game/Volgarr: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=d1a376cd93a84efb64f863b6da8f9956213af4b3, not stripped
/home/jmpc/GOG Games/Volgarr the Viking/.mojosetup/mojosetup: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.18, BuildID[sha1]=68ba16387126921693bcd8a88b5638cb4b8c3937, stripped
$ doas cp "$HOME/GOG Games/Volgarr the Viking/game/Volgarr" /srv/chroot_ubuntu_1804_i386/tmp

Luego verificamos las dependencias faltantes utilizando solo los archivos obtenidos, para lo cual se usa el comando chroot:

$ doas /sbin/chroot /srv/chroot_ubuntu_1804_i386
# ldd /tmp/Volgarr | grep -F 'not found'
	libGL.so.1 => not found
	libSDL2-2.0.so.0 => not found

Se pasan a buscar los paquetes correspondientes a las librerías faltantes en el sitio de ubuntu:

Se instalan los paquetes utilizando la información anterior en el chroot:

# echo 'deb http://archive.ubuntu.com/ubuntu bionic main universe' > /etc/apt/sources.list
# apt-get update
# apt-get install -V libgl1 libsdl2-2.0-0

y ahora haciendo nuevamente ldd /tmp/Volgarr se encuentra que no hay dependencias faltantes, por lo que solo falta probar la ejecución.

Para la ejecución se va a utilizar la instalación realizada en el directorio $HOME del usuario en el sistema, pero se van a referenciar a las librerías de 32 bits (arquitectura i386) que se encuentran en el chroot, por lo cual primero se obtienen las rutas de las librerías a utilizar mediante ldd en el chroot:

# dirname $(ldd /tmp/Volgarr | awk '/ => / { print $3 }') | sort -u
/lib/i386-linux-gnu
/usr/lib/i386-linux-gnu
/usr/lib/i386-linux-gnu/pulseaudio

Sabiendo que los directorios anteriores deben ser prefijados por /srv/chroot_ubuntu_1804_i386 ejecutamos el juego utilizando:

$ cd "$HOME/GOG Games/Volgarr the Viking"
$ LD_LIBRARY_PATH=/srv/chroot_ubuntu_1804_i386/lib/i386-linux-gnu:/srv/chroot_ubuntu_1804_i386/usr/lib/i386-linux-gnu:/srv/chroot_ubuntu_1804_i386/usr/lib/i386-linux-gnu/pulseaudio ./start.sh
Running Volgarr the Viking
support/gog_com.shlib: line 94: 62724 Segmentation fault      ./"${bin_64}"

Error…, pero recordando la solución aplicada anterioremente de borrar el directorio lib y volviendo a probar se tiene:

$ mv "$HOME/GOG Games/Volgarr the Viking/lib" "$HOME/GOG Games/Volgarr the Viking/lib.old"
$ LD_LIBRARY_PATH=/srv/chroot_ubuntu_1804_i386/lib/i386-linux-gnu:/srv/chroot_ubuntu_1804_i386/usr/lib/i386-linux-gnu:/srv/chroot_ubuntu_1804_i386/usr/lib/i386-linux-gnu/pulseaudio ./start.sh
Running Volgarr the Viking
support/gog_com.shlib: line 94: 62652 Segmentation fault      ./"${bin_64}"

Luego de un rato de pensar cual puede ser el problema, recuerdo que el binario en realidad es un ELF 32-bit:

$ file "$HOME/GOG Games/Volgarr the Viking/game/Volgarr"
/home/jmpc/GOG Games/Volgarr the Viking/game/Volgarr: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=d1a376cd93a84efb64f863b6da8f9956213af4b3, not stripped

y el sistema está usando el dynamic loader de debian amd64, por lo que se intenta cambiar el dynamic loader para utilizar el del sistema descargado (Ubuntu i386):

$ cd "$HOME/GOG Games/Volgarr the Viking/game"
$ LD_LIBRARY_PATH=/srv/chroot_ubuntu_1804_i386/lib/i386-linux-gnu:/srv/chroot_ubuntu_1804_i386/usr/lib/i386-linux-gnu:/srv/chroot_ubuntu_1804_i386/usr/lib/i386-linux-gnu/pulseaudio /srv/chroot_ubuntu_1804_i386/lib/ld-linux.so.2 ./Volgarr

Ahora se obtiene una ventana con el mensaje de error:

FATAL ERROR Resource file not found (resources.xml)!

Esto sin duda da la idea de que no se estarían encontrando los archivos del recursos del juego, por lo que se busca el proceso (sin cerrar la ventana):

$ ps aux | grep Volgarr
jmpc       60363  0.7  0.2 605172 25928 pts/0    Sl+  23:22   0:00 /srv/chroot_ubuntu_1804_i386/lib/i386-linux-gnu/ld-2.27.so ./Volgarr
jmpc       60368  0.0  0.1 605332 13696 pts/0    S+   23:22   0:00 /srv/chroot_ubuntu_1804_i386/lib/i386-linux-gnu/ld-2.27.so ./Volgarr
jmpc       60391  0.0  0.0   8952  2468 pts/2    S+   23:24   0:00 grep --color=auto Volgarr

y se inspecciona cual es el directorio actual de este utilizando el pseudo-filesystem proc(5):

$ ls -l /proc/60363/cwd /proc/60368/cwd
lrwxrwxrwx 1 jmpc jmpc 0 Feb 28 23:22 /proc/60363/cwd -> /srv/chroot_ubuntu_1804_i386/lib/i386-linux-gnu
lrwxrwxrwx 1 jmpc jmpc 0 Feb 28 23:28 /proc/60368/cwd -> /srv/chroot_ubuntu_1804_i386/lib/i386-linux-gnu

De lo anterior, sospecho que el problema está en que el programa realiza un chdir al directorio del ejecutable, y este es:

$ cat /proc/60363/cmdline | tr '\0' ' '
/srv/chroot_ubuntu_1804_i386/lib/ld-linux.so.2 ./Volgarr

Aquí se tiene que el directorio del ejecutable en la linea de comandos, /srv/chroot_ubuntu_1804_i386/lib no se corresponde con el current working directory srv/chroot_ubuntu_1804_i386/lib/i386-linux-gnu. Revisando “un poco mejor” encontramos que:

$ ls -lh /srv/chroot_ubuntu_1804_i386/lib/ld-linux.so.2
lrwxrwxrwx 1 root root 25 Apr 16  2018 /srv/chroot_ubuntu_1804_i386/lib/ld-linux.so.2 -> i386-linux-gnu/ld-2.27.so
$ realpath /srv/chroot_ubuntu_1804_i386/lib/ld-linux.so.2
/srv/chroot_ubuntu_1804_i386/lib/i386-linux-gnu/ld-2.27.so
$ file /srv/chroot_ubuntu_1804_i386/lib/i386-linux-gnu/ld-2.27.so
/srv/chroot_ubuntu_1804_i386/lib/i386-linux-gnu/ld-2.27.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID[sha1]=7a59ed1836f27b66ffd391d656da6435055f02f8, stripped

Ahora se copia el dynamic loader ld-2.27.so al directorio local y se prueba nuevamente para corroborar si la suposición es acertada o no:

$ cp /srv/chroot_ubuntu_1804_i386/lib/i386-linux-gnu/ld-2.27.so .
$ LD_LIBRARY_PATH=/srv/chroot_ubuntu_1804_i386/lib/i386-linux-gnu:/srv/chroot_ubuntu_1804_i386/usr/lib/i386-linux-gnu:/srv/chroot_ubuntu_1804_i386/usr/lib/i386-linux-gnu/pulseaudio ./ld-2.27.so ./Volgarr

¡EXITO!

flatpak

Si bien el programa ya funcionó descargando un sistema Ubuntu 18.04 i386 se tienen los problemas de que es necesario utilizar root para ello, parchear el binario y definir variables de entorno.

A continuación se dejan unas notas relativas a intentar empaquetar el juego con flatpak.

TL;DR: en mi experiencia no me pareció una buena idea utilizar flatpak

Para comenzar, la idea sería utilizar un [runtime] que corresponda (o por lo menos se acerque lo más posible) a Ubuntu 18.04 y que utilice 32 bits. Luego, se buscaría crear una aplicación flatpak que consista en los archivos del juego y las dependencias necesarias.

Se comienza instalando flatpak y flatpak-builder

$ doas apt-get install -Vy flatpak flatpak-builder

Primer problema: los runtimes disponibles no tienen una correspondencia a ningún sistema, entre ellos Ubuntu.

Agregando el repositorio oficial y listando los runtimes disponibles utilizando la tecla <tab> sin aceptar el comando:

$ flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
$ flatpak install --user --runtime flathub org.freedesktop.Platform<tab>
Display all 446 possibilities? (y or n)

encontramos que pueden interesarnos los repositorios:

En la documentación, bajo la sección de multiarch support encontramos que es posible que tengamos que utilizar los runtime org.freedesktop.Platform.Compat.i386 y org.freedesktop.Platform.GL32.default por lo cual ya los vamos instalando:

$ flatpak install --user --runtime flathub org.freedesktop.Platform
Looking for matches…
Similar refs found for ‘org.freedesktop.Platform’ in remote ‘flathub’ (user):

   1) runtime/org.freedesktop.Platform/x86_64/19.08
   2) runtime/org.freedesktop.Platform/x86_64/1.6
   3) runtime/org.freedesktop.Platform/x86_64/20.08
   4) runtime/org.freedesktop.Platform/x86_64/21.08
   5) runtime/org.freedesktop.Platform/x86_64/18.08

Which do you want to use (0 to abort)? [0-5]:

Aquí tenemos el problema de que a priori no sabemos que plataforma pueda corresponder a Ubuntu 18.04 o en su defecto acercarse lo suficiente. Se supone que las versiones corresponden al año y mes de creación del runtime, a excepción de la versión 1.6.

Por las dudas, elegimos la versión 18.08 (opción 5) ya que si esta corresponde a una fecha sería la más cercana a Ubuntu 18.04.

Si quisieramos instalar dicha versión directamente se puede utilizar:

$ flatpak install --user --runtime --noninteractive flathub org.freedesktop.Platform/x86_64/18.08

Ya que queremos construir aplicaciones flatpak debemos instalar el Sdk y los runtimes correspondientes para aplicaciones i386:

$ flatpak install --user --runtime --noninteractive flathub org.freedesktop.Sdk/x86_64/18.08
$ flatpak install --user --runtime --noninteractive flathub org.freedesktop.Platform.Compat.i386/x86_64/18.08
$ flatpak install --user --runtime --noninteractive flathub org.freedesktop.Platform.GL32.default/x86_64/18.08
error: Nothing matches org.freedesktop.Platform.GL32 in remote flathub

Problemas… Para la versión 18.08 no está disponible org.freedesktop.Platform.GL32.default:

$ flatpak install --user --runtime --noninteractive flathub org.freedesktop.Platform.GL32.default
Similar refs found for ‘org.freedesktop.Platform.GL32.default’ in remote ‘flathub’ (user):

   1) runtime/org.freedesktop.Platform.GL32.default/x86_64/19.08
   2) runtime/org.freedesktop.Platform.GL32.default/x86_64/20.08
   3) runtime/org.freedesktop.Platform.GL32.default/x86_64/21.08

Which do you want to use (0 to abort)? [0-3]:

Ya que se está “explorando” por ahora ignoramos el hecho de que no esté disponible el runtime con los drivers de mesa - aceleración gráfica. Es probable que de esto nos vayamos a arrepentir despues :) pero la opción sería probar con otra versión del runtime, por ejemplo la 19.08, que tampoco sabemos que tan compatible sería con Ubuntu 18.04.

Ni que hablar que al realizar todas las instalaciones anteriores nos vemos inundados con mensajes del tipo:

Info: org.freedesktop.Platform//18.08 is end-of-life, with reason: The Freedesktop SDK 18.08 runtime is no longer supported as of 31th August 2020. Please ask your application developer to migrate to a supported platform.

Tampoco nos importa…, seguimos adelante, o recordando a Les Luthiers, en la candonga de los colectiveros:

Corro siempre, nunca aflojo, con coraje y con valor
Si el semáforo está en rojo, acelero sin temor

En resumen, hasta ahora tenemos instalado lo siguiente:

$ flatpak --user --runtime list
Name                         Application ID                                Version         Branch
Freedesktop Platform         org.freedesktop.Platform                      18.08.39        18.08
i386                         org.freedesktop.Platform.Compat.i386                          18.08
Intel                        org.freedesktop.Platform.VAAPI.Intel                          18.08
html5-codecs                 org.freedesktop.Platform.html5-codecs                         18.08
Freedesktop SDK              org.freedesktop.Sdk                           18.08.39        18.08

Previo a crear el manifiesto de la aplicación, hay que tener en cuenta que la instalación de la aplicación -extracción de archivos-, debe realizarse de forma desatendida, por lo cual no puede ejecutarse directamente el instalador.

Para ello se utilizará el script gogextract mediante el cual se obtiene un archivo zip con los archivos del juego:

$ mkdir /tmp
$ wget -P /tmp 'https://raw.githubusercontent.com/Yepoleb/gogextract/master/gogextract.py'
$ python3 /tmp/gogextract.py gog_volgarr_the_viking_2.1.0.3.sh /tmp

Ahora en /tmp/data.zip se encuentran los archivos del juego, los cuales podemos simplemente descomprimir dentro del entorno de la aplicación flatpak:

$ unzip -l /tmp/data.zip
Archive:  /tmp/data.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2015-06-15 14:27   data/
        0  2016-02-17 06:24   data/noarch/
      811  2015-07-27 08:51   data/noarch/start.sh
       33  2016-02-17 06:24   data/noarch/gameinfo
        0  2016-02-17 06:23   data/noarch/game/
    21111  2016-02-08 15:07   data/noarch/game/Readme.txt
172902739  2016-01-13 22:38   data/noarch/game/Data.pk
     9264  2015-11-24 16:28   data/noarch/game/icon.png
  2666722  2016-02-08 15:49   data/noarch/game/Volgarr
        0  2014-10-31 06:45   data/noarch/lib/
...

A partir de la documentación encontrada en

pasamos a crear el manifiesto para construir la aplicación flatpak, el cual llamaremos com.gog.volgarr_the_viking.v1.yaml (obtenido luego de varias iteraciones…):

app-id: com.gog.volgarr_the_viking
runtime: org.freedesktop.Platform
runtime-version: '18.08'
sdk: org.freedesktop.Sdk
command: /app/start.sh

finish-args:
  - --allow=multiarch
  - --socket=x11
  - --share=ipc
  - --socket=pulseaudio
  - --device=all

add-extensions:
  org.freedesktop.Platform.Compat.i386:
    directory: lib/i386-linux-gnu
    version: '18.08'

modules:
  - name: game
    buildsystem: simple
    sources:
      - type: archive
        path: data.zip
        sha256: 7b51930f5ab3885fb15da86880453e85e794603ec8f74259a0e84b987750154a
    build-commands:
      - mv /run/build/game/noarch/* /app
      - mkdir /app/lib/i386-linux-gnu

TIPS:

Luego, para construir la aplicación, instalarla localmente y ejecutarla se utiliza:

$ mkdir -p ~/tmp
$ ln -s /tmp/data.zip
$ flatpak-builder --user --install --state-dir=$HOME/tmp ~/tmp/build-dir com.gog.volgarr_the_viking.yaml
$ flatpak run --user com.gog.volgarr_the_viking
Running Volgarr the Viking

Obteniendose una ventana con el mensaje de error:

FATAL ERROR Could not initialize OpenGL 1.3 due to the following error: Unable to create rendering context! No other supported interfaces found.

Para depurar el problema anterior se ejecuta un shell en el flatpak:

$ flatpak run --user --command=sh com.gog.volgarr_the_viking
[📦 com.gog.volgarr_the_viking ~]$ cd /app/game
[📦 com.gog.volgarr_the_viking game]$ ldd Volgarr
	linux-gate.so.1 (0xf7ef2000)
	libGL.so.1 => /usr/lib/i386-linux-gnu/libGL.so.1 (0xf7e77000)
	libSDL2-2.0.so.0 => /usr/lib/i386-linux-gnu/libSDL2-2.0.so.0 (0xf7d37000)
	libstdc++.so.6 => /app/lib/libstdc++.so.6 (0xf7c4e000)
	libm.so.6 => /usr/lib/i386-linux-gnu/libm.so.6 (0xf7b44000)
	libgcc_s.so.1 => /usr/lib/i386-linux-gnu/libgcc_s.so.1 (0xf7b25000)
	libc.so.6 => /usr/lib/i386-linux-gnu/libc.so.6 (0xf7941000)
	libGLX.so.0 => /usr/lib/i386-linux-gnu/libGLX.so.0 (0xf791d000)
	libX11.so.6 => /app/lib/libX11.so.6 (0xf77e9000)
	libXext.so.6 => /app/lib/libXext.so.6 (0xf77d6000)
	libGLdispatch.so.0 => /usr/lib/i386-linux-gnu/libGLdispatch.so.0 (0xf7774000)
	libdl.so.2 => /usr/lib/i386-linux-gnu/libdl.so.2 (0xf776c000)
	libpthread.so.0 => /usr/lib/i386-linux-gnu/libpthread.so.0 (0xf774a000)
	libwayland-egl.so.1 => /usr/lib/i386-linux-gnu/libwayland-egl.so.1 (0xf7745000)
	libwayland-client.so.0 => /usr/lib/i386-linux-gnu/libwayland-client.so.0 (0xf7735000)
	libwayland-cursor.so.0 => /usr/lib/i386-linux-gnu/libwayland-cursor.so.0 (0xf772a000)
	libxkbcommon.so.0 => /usr/lib/i386-linux-gnu/libxkbcommon.so.0 (0xf76e3000)
	librt.so.1 => /usr/lib/i386-linux-gnu/librt.so.1 (0xf76d7000)
	/lib/ld-linux.so.2 (0xf7ef4000)
	libxcb.so.1 => /app/lib/libxcb.so.1 (0xf76b5000)
	libffi.so.6 => /usr/lib/i386-linux-gnu/libffi.so.6 (0xf76ab000)
	libXau.so.6 => /app/lib/libXau.so.6 (0xf76a7000)
	libXdmcp.so.6 => /app/lib/libXdmcp.so.6 (0xf769e000)

Aquí no nos falta ninguna librería sin resolver, pero puede verse que algunas son resueltas al directorio /app/lib, y otras a /usr/lib/i386-linux-gnu. Recordando la solución previa de borrar el directorio lib, modificamos el manifiesto anterior creando com.gog.volgarr_the_viking.v2.yaml que se diferencia con el manifiesto anterior en:

$ diff -u com.gog.volgarr_the_viking.v1.yaml com.gog.volgarr_the_viking.v2.yaml
--- com.gog.volgarr_the_viking.v1.yaml	2022-02-29 02:06:34.190864765 -0300
+++ com.gog.volgarr_the_viking.v2.yaml	2022-02-29 02:06:29.938855509 -0300
@@ -26,4 +26,5 @@
         sha256: 7b51930f5ab3885fb15da86880453e85e794603ec8f74259a0e84b987750154a
     build-commands:
       - mv /run/build/game/noarch/* /app
-      - mkdir /app/lib/i386-linux-gnu
+      - rm -r /app/lib
+      - mkdir -p /app/lib/i386-linux-gnu

Volvemos a compilar, instalar y ejecutar:

$ flatpak-builder --user --install --state-dir=$HOME/tmp --force-clean ~/tmp/build-dir com.gog.volgarr_the_viking.final.yaml
$ flatpak run --user com.gog.volgarr_the_viking
Running Volgarr the Viking

¡EXITO! (y no tuvimos que lamentar la falta de org.freedesktop.Platform.GL32.default)

Conclusiones

Apendice - cambio del interprete de un binario con patchelf

Una alternativa a copiar el dynamic loader al directorio del juego es modificar el binario con patchelf para cambiar el interprete por defecto utilizando la ruta del sistema ubuntu:

$ doas apt-get install -Vy patchelf
$ cp Volgarr Volgarr.patched
$ patchelf --set-interpreter /srv/chroot_ubuntu_1804_i386/lib/ld-linux.so.2 Volgarr.patched

Y para ejecutar el juego se hace:

$ LD_LIBRARY_PATH=/srv/chroot_ubuntu_1804_i386/lib/i386-linux-gnu:/srv/chroot_ubuntu_1804_i386/usr/lib/i386-linux-gnu:/srv/chroot_ubuntu_1804_i386/usr/lib/i386-linux-gnu/pulseaudio ./Volgarr.patched

Nota: Esta fué una alternativa previo a encontrar que copiar el interprete al directorio del programa solucionaba el problema.