Как я могу запустить Dwarf Fortress в текстовом режиме (ncurses) на моем Linux VPS?


14

Я установил Dwarf Fortress на Linux VPS для использования с dfterm. Он работает под управлением Ubuntu 10.04 Server x86-32. Я вполне уверен, что у меня есть все зависимости:

Я установил:

  • Ncurses
  • ncursesw
  • libsdl
  • libsdl-изображение
  • libgtk
  • libglu
  • libopenal1

Мне пришлось отключить звук, иначе он мгновенно выйдет из строя, и я установил режим отображения на текстовый. Я не сделал никаких других изменений в конфигурации.

Однако, даже прежде чем я подойду к дфтерму, он не будет работать правильно. Он просто отображает пустой экран. Что может быть причиной этого? Есть ли зависимость, которую я пропустил? Есть ли что-то еще, что я должен был изменить в конфиге?

Учитывая , что это сервер, есть хороший шанс , что если есть отсутствует зависимость, это то , что разработчики пошли «Конечно, у каждого есть , что » и не удосужился список.

Другие приложения ncurses (vim, irssi используют его, я думаю?) Работают нормально.


Первоначально я спросил об этом в играх, но люди там предложили спросить здесь: gaming.stackexchange.com/questions/4716/…
Macha

Да какая интересная идея. Можете ли вы сказать, если игра пытается что-то сделать? Запустите top из другого терминала и посмотрите, использует ли он какой-либо процессор.
Николас Найт

Ответы:


10

Я смог воссоздать segfaulting, запустив df при обычной установке Ubuntu с отключенным X.

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

Я подозреваю, что проблема в том, что в этой игре должен быть доступен работающий драйвер GL. И для этого вам нужен X работает. Но VPS не имеет X!

Вместо этого используйте Xvfb, который является «фальшивым» виртуальным X. Вам нужно будет установить xvfb и любые зависимости, которые ему нужны (возможно, xorg-server-core и кучу других вещей, которые могут быть не установлены на Ubuntu Server).

Запустите фальшивый xserver так:

 $ Xvfb :1 -screen 0 1024x768x16 &

Затем убедитесь, что ваша переменная DISPLAY указывает на нее:

$ export DISPLAY=:1
$ ./df

Мне также нужно было отключить звук и запустить в режиме TEXT, но это работало без запуска X. Я надеюсь, что это работает для вас.


Ошибка segfault исчезла, но когда я ее запускаю, я получаю «Откат: открытые libncurses, вывод может быть прерван. Символ не найден: waddnwstr.», И больше не выдает вывод, который можно закрыть с помощью Ctrl-X, но полностью испортил SSH сессия. (делает ширину 80 + подсказка, а не 80 вкл. подсказка). Это самый близкий ответ, который я получил, поэтому я все равно даю вам награду, пока она не истечет, но я надеюсь, что эта новая проблема также может быть решена.
Мача

Да, я пропустил символическую ссылку там. Исправлено Теперь все, что я получаю, это серый вывод (не черный моего терминала, а другой серый цвет).
Мача

Я получил этот символ не найдена ошибка, и установка lib32ncursesw5-dev и lib32ncursesw5 (я на 64-битной) решил ее.
Брайс

Я использую 32 бит. Мне пришлось создать символическую ссылку для /usr/lib/libncursesw.so -> /lib/libncursesw.so.5 для символа не найдена.
Мача

1

Вы видели эту статью о DFTerm на DF Wiki? В нем перечислены некоторые зависимости, которые вы, кажется, не перечислили выше ....


Эти зависимости должны компилировать dfterm, что я и сделал. Это Крепость Гномов, которая не побежит.
Мача

1

Вы можете попробовать использовать, lddчтобы увидеть, отсутствует ли общий объект.

Например, что-то вроде:

ldd /usr/local/bin/df

Все, что ldd перечисляет как "not found", отсутствует.

Вам также следует попробовать просмотреть все файлы * .so (с ldd), если они есть, в папке с игрой. Вы можете найти файлы * .so с помощью этой команды: find . -iname '*.so' -type f


Сама Гномская Крепость, а не дфтерм, не сможет бежать.
Мача

Затем используйте ldd для этого исполняемого файла, я не знаю программу, поэтому я не знаю ее название. Я даже не знаю, находится ли он в папке / usr / local / bin ...
LassePoulsen

ldd дает: «Не динамический исполняемый файл».
Мача

О, есть два, один просто управляет другим. Как я скажу, что является пропущенным общим объектом?
Мача

все, что ldd перечисляет как "not found", отсутствует;)
LassePoulsen

1

Вам нужно отредактировать ваш init.txt. Найдите настройку для [PRINT_MODE:2D]и измените ее на[PRINT_MODE:TEXT]

Вы, вероятно, хотите изменить на [SOUND:NO]также.

Вы будете работать только с разрешением 80x24, если только вы не запустили экран или tmux.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.