Como posso executar o Dwarf Fortress no modo de texto (ncurses) no meu VPS Linux?

14

Eu instalei o Dwarf Fortress no meu VPS Linux para usar com o dfterm. Está executando o Ubuntu 10.04 Server x86-32. Estou bastante certo de que tenho todas as dependências:

Eu instalei:

  • maldições
  • ncursesw
  • libsdl
  • libsdl-image
  • libgtk
  • libglu
  • libopenal1

Eu tive que desligar o som ou ele falhará instantaneamente e defino o modo de exibição como texto. Não fiz outras alterações na configuração.

No entanto, mesmo antes de eu chegar perto do dfterm, ele não funcionará corretamente. Apenas exibe uma tela em branco. O que poderia estar causando isso? Existe uma dependência que eu perdi? Há algo mais que eu deveria ter mudado na configuração?

Dado que é um servidor, há uma boa chance de que, se houver uma dependência ausente, os desenvolvedores digam "Claro, todo mundo tem isso " e não se importaram em listar.

Outras aplicações ncurses (vim, irssi usam, acho?) Funcionam bem.

Macha
fonte
Originalmente, eu perguntei isso em jogos, mas as pessoas lá sugeriu perguntar aqui: gaming.stackexchange.com/questions/4716/...
Macha
Huh, que ideia interessante. Você pode dizer se o jogo está tentando fazer alguma coisa? Execute 'top' de outro terminal e veja se ele está usando alguma CPU.
Nicholas Knight

Respostas:

10

Consegui recriar o segfaulting executando o df em uma instalação normal do Ubuntu com o X desativado.

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

Eu suspeito que o problema é que este jogo espera ter um driver GL funcionando disponível. E para isso você precisa do X rodando. Mas um VPS não tem X!

Em vez disso, use o Xvfb, que é um X virtual "falso". Você precisará instalar o xvfb e quaisquer dependências que ele desejar (provavelmente xorg-server-core e várias outras coisas que podem não estar instaladas no Ubuntu Server).

Inicie o xserver falso assim:

 $ Xvfb :1 -screen 0 1024x768x16 &

Em seguida, verifique se a sua variável DISPLAY está apontada para ela:

$ export DISPLAY=:1
$ ./df

Eu também precisava desativar o som e executar no modo TEXTO, mas funcionou dessa maneira, sem o X em execução. Espero que funcione para você.

Bryce
fonte
O segfault se foi, mas quando o executo, recebo "Fallback: libncurses abertas, a saída pode estar quebrada. Símbolo não encontrado: waddnwstr." E não fornece mais saída, que pode ser encerrada com o Ctrl-X, mas bagunça totalmente a sessão ssh. (torna a largura 80 + o prompt, em vez de 80 inc. o prompt). Esta é a resposta mais próxima que recebi, portanto, estou lhe oferecendo a recompensa de qualquer maneira, antes que ela expire, mas espero que esse novo problema também possa ser resolvido.
Macha
Certo, estava faltando um link simbólico lá. Corrigido isso. Agora tudo o que recebo é uma saída cinza (não o preto do meu terminal, mas uma cor cinza diferente).
Macha
Eu recebi o símbolo de erro não encontrado e a instalação do lib32ncursesw5-dev e lib32ncursesw5 (estou com 64 bits) resolveu o problema.
Bryce
Estou usando 32 bits. Eu tive que criar um link simbólico para /usr/lib/libncursesw.so -> /lib/libncursesw.so.5 para o símbolo não encontrado erro.
Macha
1

Você viu este artigo do DFTerm no DF Wiki? Ele lista algumas dependências que você não parece ter listado acima ....

Rob Cowell
fonte
Essas dependências devem compilar o dfterm, o que eu fiz. É a Fortaleza dos Anões que não corre.
Macha
1

Você pode tentar usar lddpara ver se há um objeto compartilhado ausente.

Por exemplo, algo como:

ldd /usr/local/bin/df

Tudo o que o ldd lista como "não encontrado" está ausente.

Você também deve tentar olhar para todos os arquivos * .so (com ldd), se houver, na pasta do jogo. Você pode encontrar os arquivos * .so usando este comando: find . -iname '*.so' -type f

LassePoulsen
fonte
É o próprio Dwarf Fortress, não o dfterm, que não será executado.
Macha
Então use ldd nesse executável, não conheço o programa e não sei o nome dele. Eu nem sei se ele está na pasta / usr / local / bin ...
LassePoulsen
O ldd fornece: "Não é um executável dinâmico."
Macha
Oh, há dois, um apenas executa o outro. Como vou saber o que está faltando um objeto compartilhado?
Macha
está faltando tudo o que o ldd lista como "não encontrado";)
LassePoulsen
1

Você precisa editar seu init.txt. Procure uma configuração [PRINT_MODE:2D]e altere-a para[PRINT_MODE:TEXT]

Você provavelmente deseja mudar [SOUND:NO]também.

Você só executará em 80x24, a menos que você execute dentro da tela ou tmux.

slacy
fonte