Jugando Dome Keeper en OpenBSD

2023/10/24

Estos días he estado jugando al Dome Keeper de bippinbits, y viendo que estaba hecho con Godot Engine aproveché a probar si funciona en OpenBSD 7.4.

TL;DR: ¡funciona la versión 1.5 con Godot Engine 3.5.3!

Pasos a seguir:

  1. Obtener una versión de Dome Keeper.

    En mi caso utilicé para realizar pruebas la versión Dome Keeper Deluxe Edition (1.5) [amd64][Multi][Steam][Godot]

    Este instalador es un Self-extracting archive que no funciona en OpenBSD pero ya que el decompressor stub (header) es un shell script podemos inspeccionar el código llegando a los pasos siguientes para extraer el archivo embebido (payload):

    $ arcsz=`grep -m 1 -F 'arcsz=' dome_keeper_v1.5_1dlc.run | cut -d= -f2`
    $ tail -c $arcsz dome_keeper_v1.5_1dlc.run > dome_keeper_v1.5_1dlc.rar
    

    Luego utilizamos unrar (doas pkg_add unrar) para extraer el contenido:

    $ unrar x dome_keeper_v1.5_1dlc.rar
    

    Esto decomprime los archivos en el directorio Dome Keeper.

    Nota 1: para inspeccionar con mayor comodidad el script que se encuentra en el header lo podemos extraer haciendo:

    $ line=`grep -n -m 1 -F 'exit 0' dome_keeper_v1.5_1dlc.run | cut -d: -f1`
    $ head -n $line dome_keeper_v1.5_1dlc.run > dome_keeper_v1.5_1dlc.header
    

    Nota 2: el uso de arcsz y unrar se deduce del extracto de código sigiuente que se encuentra en el header:

    # unpacking the embedded archive
    if \tail -c $arcsz "$package" | $pv -n -s $arcsz 2>"$progress_pipe" | \
    $pv -f -e -s $arcsz 2>"$eta_cnt" | "$unrar" x -idq -si -o+ arc -op"$1" \
    & \echo $! >"$base_pid"
    
  2. Instalar el paquete godot:

    $ doas pkg_add godot
    quirks-6.167 signed on 2023-10-24T09:47:43Z
    godot-3.5.3:libgdiplus-6.1p1: ok
    godot-3.5.3:mono-6.12.0.199p1: ok
    godot-3.5.3:enet-1.3.13p0: ok
    godot-3.5.3:mbedtls-2.28.0p0: ok
    godot-3.5.3:bullet-3.22: ok
    godot-3.5.3:godot-sharp-3.5.3: ok
    godot-3.5.3:goldberg_emulator-0.2.5pl3: ok
    godot-3.5.3:libcue-2.3.0: ok
    godot-3.5.3:musepack-475p5: ok
    godot-3.5.3: ok
    
  3. Modificar el script run.sh:

    $ cd Dome\ Keeper
    $ sed -i.bak 's/^exec.*$/exec godot -v --main-pack domekeeper.pck/' run.sh
    
  4. ¡Jugar!

    $ ./run.sh
    

TODO

  1. Crear launcher y application menu a partir de las plantillas en el header
  2. Probar una versión más reciente de Dome Keeper