it-swarm-es.com

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

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 segfault 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?

Dado que es un servidor, existe una buena posibilidad de que si falta una dependencia, es algo que los desarrolladores dijeron "Claro, todos tienen eso" y no se molestaron en enumerarlos.

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

14
Macha

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 un controlador GL disponible. 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.

10
Bryce

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

1
Rob Cowell

Puede intentar usar ldd para 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

1
LassePoulsen

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

Probablemente también desee cambiar a [SOUND:NO].

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

1
slacy