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.


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.


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 ....


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


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.