Jak mogę uruchomić Dwarf Fortress w trybie tekstowym (ncurses) na moim Linux VPS?

14

Zainstalowałem Dwarf Fortress na moim Linux VPS, aby używać go z dfterm. Działa z systemem Ubuntu 10.04 Server x86-32. Jestem całkiem pewien, że mam wszystkie zależności:

Zainstalowałem:

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

Musiałem wyłączyć dźwięk, bo inaczej natychmiast się zepsuje i ustawiłem tryb wyświetlania na tekst. Nie wprowadziłem żadnych innych zmian w konfiguracji.

Jednak nawet zanim zbliży się do dfterm, nie będzie działać poprawnie. Wyświetla tylko pusty ekran. Co może być tego przyczyną? Czy brakuje mi zależności? Czy jest coś jeszcze, co powinienem zmienić w konfiguracji?

Biorąc pod uwagę, że jest to serwer, istnieje duża szansa, że jeśli istnieje zależność brakuje, to coś, deweloperów poszedł „Oczywiście, każdy ma , że ” i nie przeszkadzało do listy.

Inne aplikacje ncurses (vim, irssi używają go, myślę?) Działają dobrze.

Macha
źródło
Początkowo pytałem o to w grach, ale ludzie sugerowali, aby zapytać tutaj: gaming.stackexchange.com/questions/4716/…
Macha
Co za ciekawy pomysł. Czy możesz powiedzieć, czy gra próbuje coś zrobić? Uruchom „top” z innego terminala i sprawdź, czy używa on procesora.
Nicholas Knight

Odpowiedzi:

10

Byłem w stanie odtworzyć segfaulting, uruchamiając df na zwykłej instalacji Ubuntu z wyłączonym X-em.

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

Podejrzewam, że problem polega na tym, że ta gra oczekuje, że będzie mieć działający sterownik GL. I do tego potrzebujesz działającego X. Ale VPS nie ma X!

Zamiast tego użyj Xvfb, który jest „fałszywym” wirtualnym X. Będziesz musiał zainstalować xvfb i dowolne zależności (prawdopodobnie xorg-server-core i kilka innych rzeczy, które mogą nie zostać zainstalowane na Ubuntu Server).

Uruchom fałszywego serwera Xserver w następujący sposób:

 $ Xvfb :1 -screen 0 1024x768x16 &

Następnie upewnij się, że twoja zmienna DISPLAY jest na nią wskazana:

$ export DISPLAY=:1
$ ./df

Musiałem także wyłączyć dźwięk i uruchomić w trybie TEKST, ale działało to w ten sposób, bez X-ów. Mam nadzieję, że to zadziała dla ciebie.

Bryce
źródło
Segfault zniknął, ale gdy go uruchomię, pojawia się komunikat „Fallback: Open libncurses, dane wyjściowe mogą być uszkodzone. Symbol nie znaleziony: waddnwstr.”, I nie daje więcej danych wyjściowych, które można zamknąć za pomocą Ctrl-X, ale całkowicie się popsuć sesja ssh. (sprawia, że ​​szerokość 80 + jest monitem zamiast 80, w tym monitem). To najbliższa odpowiedź, jaką dostałem, więc i tak dostaję nagrodę, zanim wygaśnie, ale mam nadzieję, że ten nowy problem również można rozwiązać.
Macha,
Racja, brakowało mi tam dowiązania symbolicznego. Naprawiono to. Teraz dostaję tylko szary kolor (nie czarny mojego terminala, ale inny szary kolor).
Macha,
Mam błąd, że ten symbol nie został znaleziony, i zainstalowanie lib32ncursesw5-dev i lib32ncursesw5 (jestem na 64-bitach) rozwiązało to.
Bryce,
Używam wersji 32-bitowej. Musiałem utworzyć dowiązanie symboliczne dla /usr/lib/libncursesw.so -> /lib/libncursesw.so.5 dla błędu nie znaleziono symbolu.
Macha
1

Czy widziałeś ten artykuł DFTerm na DF Wiki? Wymienia niektóre zależności, których najwyraźniej nie wymieniono powyżej ...

Rob Cowell
źródło
Zależności te mają na celu skompilowanie dfterm, co zrobiłem. To Dwarf Fortress nie działa.
Macha,
1

Możesz spróbować lddsprawdzić, czy brakuje współdzielonego obiektu.

Na przykład coś takiego:

ldd /usr/local/bin/df

Brakuje wszystkiego, co ldd określa jako „nie znaleziono”.

Powinieneś także spróbować przejrzeć wszystkie pliki * .so (z ldd), jeśli istnieją w folderze gry. Możesz znaleźć pliki * .so za pomocą tego polecenia: find . -iname '*.so' -type f

LassePoulsen
źródło
To sama Forteca Krasnoludów, a nie ponęt, nie będzie działać.
Macha,
Następnie użyj ldd na tym pliku wykonywalnym, nie znam programu, więc nie znam jego nazwy. Nie wiem nawet, czy jest w folderze / usr / local / bin ...
LassePoulsen,
ldd daje: „Nie jest to dynamiczny plik wykonywalny”.
Macha,
Och, są dwa, jeden po prostu uruchamia drugi. Jak powiedzieć, co to jest brakujący obiekt udostępniony?
Macha,
brakuje wszystkiego, co ldd podaje jako „nie znaleziono”;)
LassePoulsen
1

Musisz edytować swój plik init.txt. Poszukaj ustawienia [PRINT_MODE:2D]i zmień je na[PRINT_MODE:TEXT]

Prawdopodobnie też chcesz się zmienić [SOUND:NO].

Będziesz działać tylko w rozmiarze 80x24, chyba że biegniesz wewnątrz ekranu lub tmux.

slacy
źródło