¿Cómo puedo ejecutar Dwarf Fortress en modo texto (ncurses) en mi VPS Linux?

14

Instalé Dwarf Fortress en mi VPS de Linux para usar con dfterm. Está ejecutando Ubuntu 10.04 Server x86-32. Estoy bastante seguro de que tengo todas las dependencias:

He instalado:

  • maldiciones
  • ncursesw
  • libsdl
  • libsdl-image
  • libgtk
  • libglu
  • libopenal1

Tuve que apagar el sonido o se desactivará instantáneamente, y configuré el modo de visualización en texto. No he realizado otros cambios en la configuración.

Sin embargo, incluso antes de acercarme a dfterm, no funcionará correctamente. Simplemente muestra una pantalla en blanco. ¿Qué podría estar causando esto? ¿Hay una dependencia que me perdí? ¿Hay algo más que debería haber cambiado en la configuración?

Teniendo en cuenta que se trata de un servidor, hay una oportunidad buena que si hay una dependencia faltante, es algo que los desarrolladores fueron "Claro, todo el mundo tiene que " y no molestó a la lista.

Otras aplicaciones ncurses (vim, irssi lo usan, creo?) Funcionan bien.

Macha
fuente
Originalmente pregunté esto sobre los juegos, pero la gente sugirió preguntar aquí: gaming.stackexchange.com/questions/4716/…
Macha
Qué idea tan interesante. ¿Puedes decir si el juego está tratando de hacer algo? Ejecute 'top' desde otra terminal y vea si está usando alguna CPU.
Nicholas Knight

Respuestas:

10

Pude recrear el segfaulting ejecutando df en una instalación normal de Ubuntu con X desactivado.

...
(Dwarf_Fortress:5346): Gdk-CRITICAL **: gdk_window_new: assertion `GDK_IS_WINDOW (parent)' failed
Segmentation fault

Sospecho que el problema es que este juego espera tener disponible un controlador GL que funcione. Y para eso necesitas X corriendo. ¡Pero un VPS no tiene X!

En su lugar, use Xvfb, que es una X virtual "falsa". Deberá instalar xvfb y las dependencias que desee (probablemente xorg-server-core y un montón de otras cosas que pueden no estar instaladas en Ubuntu Server).

Inicie el falso servidor x así:

 $ Xvfb :1 -screen 0 1024x768x16 &

Luego, asegúrese de que su variable DISPLAY esté apuntada a ella:

$ export DISPLAY=:1
$ ./df

También necesitaba deshabilitar el sonido y ejecutarlo en modo TEXTO, pero funcionó de esta manera, sin ejecutar X. Espero que te funcione.

Bryce
fuente
El segfault se ha ido, pero cuando lo ejecuto, aparece "Fallback: libncurses abierto, la salida puede estar rota. Símbolo no encontrado: waddnwstr.", Y no da más salida, que puede salir con Ctrl-X pero se desordena totalmente La sesión SSH. (hace que el ancho sea 80 + el indicador en lugar de 80 inc. el indicador). Esta es la respuesta más cercana que obtuve, por lo que te daré la recompensa de todos modos, antes de que expire, pero espero que este nuevo problema también se pueda resolver.
Macha
Bien, me faltaba un enlace simbólico allí. Arreglado eso. Ahora todo lo que obtengo es salida gris (no el negro de mi terminal, sino un color gris diferente).
Macha
Obtuve ese error de símbolo no encontrado, y la instalación de lib32ncursesw5-dev y lib32ncursesw5 (estoy en 64 bits) lo resolvió.
Bryce
Estoy usando 32 bits. Tuve que crear un enlace simbólico para /usr/lib/libncursesw.so -> /lib/libncursesw.so.5 para el error de símbolo no encontrado.
Macha
1

¿Has visto este artículo de DFTerm en la Wiki de DF? Enumera algunas dependencias que no parece haber enumerado anteriormente ...

Rob Cowell
fuente
Esas dependencias son compilar dfterm, lo cual he hecho. Es la fortaleza enana que no correrá.
Macha
1

Podría intentar usar lddpara ver si falta un objeto compartido.

Por ejemplo, algo como:

ldd /usr/local/bin/df

Falta todo lo que ldd enumera como "no encontrado".

También deberías intentar mirar todos los archivos * .so (con ldd) si hay alguno en la carpeta del juego. Puede encontrar los archivos * .so utilizando este comando: find . -iname '*.so' -type f

LassePoulsen
fuente
Es Dwarf Fortress en sí, no dfterm, que no se ejecutará.
Macha
Luego use ldd en ese ejecutable, no conozco el programa, así que no sé su nombre. Ni siquiera sé si está en la carpeta / usr / local / bin ...
LassePoulsen
ldd da: "No es un ejecutable dinámico".
Macha
Oh, hay dos, uno solo corre el otro. ¿Cómo sabré qué es un objeto compartido perdido?
Macha
falta todo lo que ldd enumera como "no encontrado";)
LassePoulsen
1

Necesita editar su init.txt. Busque una configuración [PRINT_MODE:2D]y cámbiela por[PRINT_MODE:TEXT]

Probablemente quieras cambiar [SOUND:NO]también.

Sin embargo, solo correrá a 80x24 a menos que se ejecute dentro de la pantalla o tmux.

pizarroso
fuente