Wie kann ich Dwarf Fortress im Textmodus (ncurses) auf meinem Linux VPS ausführen?

14

Ich habe Dwarf Fortress auf meinem Linux VPS installiert, um es mit dfterm zu verwenden. Es läuft Ubuntu 10.04 Server x86-32. Ich bin mir ziemlich sicher, dass ich alle Abhängigkeiten habe:

Ich habe installiert:

  • Flüche
  • ncursesw
  • libsdl
  • libsdl-image
  • libgtk
  • libglu
  • libopenal1

Ich musste den Ton ausschalten, sonst tritt sofort ein Fehler auf, und ich stellte den Anzeigemodus auf Text ein. Ich habe keine weiteren Änderungen an der Konfiguration vorgenommen.

Aber selbst bevor ich mich Dfterm nähere, läuft es nicht richtig. Es wird nur ein leerer Bildschirm angezeigt. Was könnte das verursachen? Gibt es eine Abhängigkeit, die ich verpasst habe? Gibt es noch etwas, das ich in der Konfiguration hätte ändern sollen?

Angesichts der Tatsache, dass es sich um einen Server handelt, besteht eine gute Chance, dass die Entwickler bei fehlenden Abhängigkeiten "Sicher, jeder hat das " gewählt haben und sich nicht darum gekümmert haben , eine Liste zu erstellen .

Andere ncurses-Anwendungen (vim, irssi, glaube ich?) Funktionieren einwandfrei.

Macha
quelle
Ich habe dies ursprünglich beim Spielen gefragt, aber die Leute dort schlugen vor, hier zu fragen: gaming.stackexchange.com/questions/4716/…
Macha
Was für eine interessante Idee. Kannst du erkennen, ob das Spiel versucht, etwas zu tun? Führen Sie 'top' von einem anderen Terminal aus und prüfen Sie, ob eine CPU verwendet wird.
Nicholas Knight

Antworten:

10

Ich konnte das Segfaulting wiederherstellen, indem ich df auf einer regulären Ubuntu-Installation mit deaktiviertem X ausführte.

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

Ich vermute, das Problem ist, dass für dieses Spiel ein funktionsfähiger GL-Treiber erwartet wird. Und dafür muss X laufen. Aber ein VPS hat kein X!

Verwenden Sie stattdessen Xvfb, ein "falsches" virtuelles X. Sie müssen xvfb und die gewünschten Abhängigkeiten installieren (wahrscheinlich xorg-server-core und eine Reihe anderer Dinge, die möglicherweise nicht auf Ubuntu Server installiert sind).

Starte den fake xserver wie folgt:

 $ Xvfb :1 -screen 0 1024x768x16 &

Stellen Sie dann sicher, dass Ihre DISPLAY-Variable darauf zeigt:

$ export DISPLAY=:1
$ ./df

Ich musste auch Sound deaktivieren und im TEXT-Modus ausführen, aber es funktionierte auf diese Weise, ohne dass X ausgeführt wurde. Ich hoffe es funktioniert für dich.

Bryce
quelle
Der segfault ist weg, aber wenn ich ihn ausführe, erhalte ich "Fallback: Geöffnete libncurses, Ausgabe ist möglicherweise fehlerhaft. Symbol nicht gefunden: waddnwstr." die SSH-Sitzung. (macht die Breite 80 + die Eingabeaufforderung anstelle von 80 inkl. der Eingabeaufforderung). Dies ist die naheliegendste Antwort, die ich bekommen habe, also gebe ich dir sowieso das Kopfgeld, bevor es abläuft, aber ich hoffe, dass dieses neue Problem auch gelöst werden kann.
Macha
Richtig, mir fehlte dort ein Symlink. Das wurde behoben. Jetzt erhalte ich nur noch eine graue Ausgabe (nicht das Schwarz meines Terminals, sondern eine andere graue Farbe).
Macha
Ich habe das Symbol nicht gefunden Fehler und die Installation von lib32ncursesw5-dev und lib32ncursesw5 (ich bin auf 64-Bit) behoben.
Bryce
Ich benutze 32 Bit. Ich musste einen Symlink für /usr/lib/libncursesw.so -> /lib/libncursesw.so.5 für den Fehler "Symbol nicht gefunden" erstellen.
Macha
1

Haben Sie diesen DFTerm-Artikel im DF-Wiki gesehen? Es werden einige Abhängigkeiten aufgelistet, die Sie anscheinend nicht oben aufgelistet haben ....

Rob Cowell
quelle
Diese Abhängigkeiten bestehen darin, dfterm zu kompilieren, was ich getan habe. Es ist die Zwergenfestung, die nicht rennt.
Macha
1

Sie können versuchen, lddzu ermitteln, ob ein freigegebenes Objekt fehlt.

Zum Beispiel so etwas wie:

ldd /usr/local/bin/df

Alles, was ldd als "nicht gefunden" auflistet, fehlt.

Sie sollten auch versuchen, alle * .so-Dateien (mit ldd) im Spielordner zu überprüfen. Sie finden die * .so-Dateien mit dem folgenden Befehl: find . -iname '*.so' -type f

LassePoulsen
quelle
Es ist die Zwergenfestung selbst, nicht die Dfterm, die nicht rennt.
Macha
Dann benutze ldd für diese ausführbare Datei. Ich kenne das Programm nicht, also kenne ich den Namen nicht. Ich weiß nicht einmal, ob es sich im Ordner / usr / local / bin befindet ...
LassePoulsen
ldd gibt an: "Keine dynamische ausführbare Datei."
Macha
Oh, da sind zwei, einer rennt nur den anderen. Wie kann ich feststellen, dass ein freigegebenes Objekt fehlt?
Macha
alles, was ldd als "nicht gefunden" verzeichnet, fehlt;)
LassePoulsen
1

Sie müssen Ihre init.txt bearbeiten. Suchen Sie nach einer Einstellung [PRINT_MODE:2D]und ändern Sie sie in[PRINT_MODE:TEXT]

Sie möchten wahrscheinlich auch zu wechseln [SOUND:NO].

Sie werden nur mit 80x24 laufen, es sei denn, Sie laufen innerhalb von screen oder tmux.

slacy
quelle