Come posso eseguire Dwarf Fortress in modalità testo (ncurses) sul mio VPS Linux?


14

Ho installato Dwarf Fortress sul mio VPS Linux da usare con dfterm. Funziona con Ubuntu 10.04 Server x86-32. Sono abbastanza certo di avere tutte le dipendenze:

Ho installato:

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

Ho dovuto disattivare l'audio o si interromperà immediatamente e ho impostato la modalità di visualizzazione su testo. Non ho apportato altre modifiche alla configurazione.

Tuttavia, anche prima di avvicinarmi a dfterm, non funzionerà correttamente. Visualizza solo uno schermo vuoto. Che cosa potrebbe causare questo? C'è una dipendenza che mi è sfuggita? C'è qualcos'altro che avrei dovuto cambiare nella configurazione?

Dato che si tratta di un server, c'è una buona probabilità che se c'è una dipendenza mancante, è qualcosa che gli sviluppatori sono andati "Certo, ognuno ha quel " e non si preoccupò di lista.

Altre applicazioni ncurses (vim, irssi lo usano, penso?) Funzionano bene.


Inizialmente l'ho chiesto sui giochi, ma le persone lì hanno suggerito di chiedere qui: gaming.stackexchange.com/questions/4716/…
Macha,

Che idea interessante. Puoi dire se il gioco sta cercando di fare qualcosa? Esegui "top" da un altro terminale e verifica se utilizza una CPU.
Nicholas Knight,

Risposte:


10

Sono stato in grado di ricreare il segfaulting eseguendo df su una normale installazione di Ubuntu con X disattivato.

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

Sospetto che il problema sia che questo gioco prevede di disporre di un driver GL funzionante. E per questo hai bisogno di X in esecuzione. Ma un VPS non ha X!

Invece, usa Xvfb, che è una X "finta" virtuale. Dovrai installare xvfb e qualunque dipendenza voglia (probabilmente xorg-server-core e un sacco di altre cose che potrebbero non essere installate su Ubuntu Server).

Avvia il finto xserver in questo modo:

 $ Xvfb :1 -screen 0 1024x768x16 &

Quindi assicurati che la tua variabile DISPLAY sia puntata su di essa:

$ export DISPLAY=:1
$ ./df

Avevo anche bisogno di disabilitare l'audio ed eseguire in modalità TESTO, ma ha funzionato in questo modo, senza X in esecuzione. Spero che funzioni per te.


Il segfault è sparito, ma quando lo eseguo, ottengo "Fallback: libncurses aperti, l'output potrebbe essere rotto. Simbolo non trovato: waddnwstr.", E non fornisce più output, che può essere chiuso con Ctrl-X ma rovina totalmente la sessione ssh. (imposta la larghezza 80 + il prompt anziché 80 incluso il prompt). Questa è la risposta più vicina che ho ricevuto, quindi ti darò comunque la generosità, prima che scada, ma spero che anche questo nuovo problema possa essere risolto.
Macha,

Bene, mi mancava un link simbolico lì. Risolto questo. Ora tutto ciò che ottengo è l'output grigio (non il nero del mio terminale, ma un diverso colore grigio).
Macha,

Ho trovato quel simbolo non trovato errore, e l'installazione di lib32ncursesw5-dev e lib32ncursesw5 (sono su 64-bit) lo ha risolto.
Bryce,

Sto usando 32 bit. Ho dovuto creare un link simbolico per /usr/lib/libncursesw.so -> /lib/libncursesw.so.5 per il simbolo non trovato errore.
Macha,

1

Hai visto questo articolo DFTerm sul Wiki di DF? Elenca alcune dipendenze che non sembrano aver elencato sopra ...


Queste dipendenze devono compilare dfterm, cosa che ho fatto. È la fortezza nana che non funzionerà.
Macha,

1

Puoi provare a usare lddper vedere se manca un oggetto condiviso.

Ad esempio, qualcosa del tipo:

ldd /usr/local/bin/df

Manca tutto ciò che ldd elenca come "non trovato".

Dovresti anche provare a guardare tutti i file * .so (con ldd) se presenti nella cartella del gioco. Puoi trovare i file * .so usando questo comando: find . -iname '*.so' -type f


È la fortezza nana stessa, non dfterm, che non funzionerà.
Macha,

Quindi usa ldd su quel file eseguibile, non conosco il programma quindi non ne conosco il nome. Non so nemmeno se si trova nella cartella / usr / local / bin ...
LassePoulsen

ldd dà: "Non è un eseguibile dinamico."
Macha,

Oh, ce ne sono due, uno corre solo l'altro. Come faccio a sapere cos'è un oggetto condiviso mancante?
Macha,

manca tutto ciò che ldd elenca come "non trovato";)
LassePoulsen il

1

Devi modificare il tuo init.txt. Cerca un'impostazione per [PRINT_MODE:2D]e modificala in[PRINT_MODE:TEXT]

Probabilmente vuoi anche cambiare [SOUND:NO].

Funzionerai solo a 80x24 a meno che non corri all'interno dello schermo o di tmux.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.