Comment puis-je exécuter Dwarf Fortress en mode texte (ncurses) sur mon VPS Linux?


14

J'ai installé Dwarf Fortress sur mon VPS Linux pour l'utiliser avec dfterm. Il exécute Ubuntu 10.04 Server x86-32. Je suis assez certain d'avoir toutes les dépendances:

J'ai installé:

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

J'ai dû désactiver le son ou il se déclencherait instantanément et j'ai réglé le mode d'affichage sur texte. Je n'ai apporté aucune autre modification à la configuration.

Cependant, même avant de m'approcher de dfterm, il ne fonctionnera pas correctement. Il affiche simplement un écran vide. Qu'est-ce qui peut causer cela? Y a-t-il une dépendance que j'ai ratée? Y a-t-il autre chose que j'aurais dû changer dans la configuration?

Étant donné qu'il s'agit d'un serveur, il y a de fortes chances que s'il y a une dépendance manquante, c'est quelque chose que les développeurs ont dit "Bien sûr, tout le monde a ça " et n'a pas pris la peine de les lister.

D'autres applications ncurses (vim, irssi l'utilisent, je pense?) Fonctionnent bien.


J'ai initialement posé cette question sur les jeux, mais les gens là-bas ont suggéré de poser ici: gaming.stackexchange.com/questions/4716/…
Macha

Huh, quelle idée intéressante. Pouvez-vous dire si le jeu essaie de faire quelque chose? Exécutez 'top' à partir d'un autre terminal et voyez s'il utilise un processeur.
Nicholas Knight

Réponses:


10

J'ai pu recréer le défaut de segmentation en exécutant df sur une installation régulière d'Ubuntu avec X désactivé.

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

Je soupçonne que le problème est que ce jeu prévoit d'avoir un pilote GL fonctionnel disponible. Et pour cela, vous avez besoin de X en cours d'exécution. Mais un VPS n'a pas X!

Au lieu de cela, utilisez Xvfb, qui est un "faux" virtuel X. Vous devrez installer xvfb et toutes les dépendances qu'il souhaite (probablement xorg-server-core et un tas d'autres choses qui peuvent ne pas être installées sur Ubuntu Server).

Démarrez le faux xserver comme ceci:

 $ Xvfb :1 -screen 0 1024x768x16 &

Assurez-vous ensuite que votre variable DISPLAY y est pointée:

$ export DISPLAY=:1
$ ./df

J'avais également besoin de désactiver le son et de fonctionner en mode TEXT, mais cela fonctionnait de cette façon, sans X en cours d'exécution. J'espère que ça marche pour vous.


Le défaut de segmentation a disparu, mais lorsque je l'exécute, j'obtiens «Fallback: Libncurses ouverts, la sortie peut être cassée. Symbole introuvable: waddnwstr. la session ssh. (rend la largeur 80 + l'invite plutôt que 80 y compris l'invite). C'est la réponse la plus proche que j'ai obtenue, donc je vous donne la prime de toute façon, avant qu'elle n'expire, mais j'espère que ce nouveau problème pourra également être résolu.
Macha

À droite, il me manquait un lien symbolique là-bas. Correction de ça. Maintenant, tout ce que j'obtiens est une sortie grise (pas le noir de mon terminal, mais une couleur grise différente).
Macha

J'ai obtenu ce symbole d'erreur introuvable, et l'installation de lib32ncursesw5-dev et lib32ncursesw5 (je suis sur 64 bits) l'a résolu.
Bryce

J'utilise 32 bits. J'ai dû créer un lien symbolique pour /usr/lib/libncursesw.so -> /lib/libncursesw.so.5 pour l'erreur symbole introuvable.
Macha

1

Avez-vous vu cet article DFTerm sur le DF Wiki? Il répertorie certaines dépendances que vous ne semblez pas avoir énumérées ci-dessus ....


Ces dépendances consistent à compiler dfterm, ce que j'ai fait. C'est la forteresse naine qui ne fonctionnera pas.
Macha

1

Vous pouvez essayer d'utiliser lddpour voir s'il manque un objet partagé.

Par exemple, quelque chose comme:

ldd /usr/local/bin/df

Tout ce que ldd répertorie comme «introuvable» est manquant.

Vous devriez également essayer de regarder tous les fichiers * .so (avec ldd) le cas échéant dans le dossier du jeu. Vous pouvez trouver les fichiers * .so en utilisant cette commande: find . -iname '*.so' -type f


C'est la forteresse naine elle-même, pas dfterm, qui ne fonctionnera pas.
Macha

Ensuite, utilisez ldd sur cet exécutable, je ne connais pas le programme donc je ne connais pas son nom. Je ne sais même pas s'il se trouve dans le dossier / usr / local / bin ...
LassePoulsen

ldd donne: "Pas un exécutable dynamique."
Macha

Oh, il y en a deux, l'un exécute simplement l'autre. Comment savoir ce qu'est un objet partagé manquant?
Macha

tout ce que ldd répertorie comme "introuvable" est manquant;)
LassePoulsen

1

Vous devez modifier votre init.txt. Recherchez un paramètre pour[PRINT_MODE:2D] et changez-le en[PRINT_MODE:TEXT]

Vous voulez probablement changer pour [SOUND:NO] aussi.

Vous ne fonctionnerez qu'à 80x24, sauf si vous exécutez à l'intérieur de l'écran ou de tmux.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.