Bagaimana cara menjalankan Dwarf Fortress dalam mode teks (ncurses) di VPS Linux saya?


14

Saya menginstal Dwarf Fortress di VPS Linux saya untuk digunakan dengan dfterm. Ini menjalankan Ubuntu 10.04 Server x86-32. Saya cukup yakin saya memiliki semua dependensi:

Saya telah menginstal:

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

Saya harus mematikan suara atau akan langsung segfault, dan saya mengatur mode tampilan ke teks. Saya tidak membuat perubahan lain pada konfigurasi.

Namun, bahkan sebelum saya mendekati dfterm, itu tidak akan berjalan dengan baik. Itu hanya menampilkan layar kosong. Apa yang menyebabkan ini? Apakah ada ketergantungan yang saya lewatkan? Apakah ada hal lain yang harus saya ubah di konfigurasi?

Mengingat itu adalah server, ada kemungkinan bagus bahwa jika ada ketergantungan yang hilang, itu adalah sesuatu yang para devs tanyakan, "Tentu, semua orang memiliki itu " dan tidak mau repot-repot mendaftar.

Aplikasi ncurses lainnya (vim, irssi menggunakannya, saya pikir?) Berfungsi dengan baik.


Saya awalnya menanyakan ini pada gaming, tetapi orang-orang di sana menyarankan untuk bertanya di sini: gaming.stackexchange.com/questions/4716/…
Macha

Hah, ide yang sangat menarik. Bisakah Anda tahu jika gim ini mencoba melakukan sesuatu? Jalankan 'top' dari terminal lain dan lihat apakah menggunakan CPU.
Nicholas Knight

Jawaban:


10

Saya dapat membuat ulang segfaulting dengan menjalankan df pada instalasi Ubuntu biasa dengan X dimatikan.

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

Saya menduga masalahnya adalah bahwa game ini mengharapkan tersedia driver GL yang berfungsi. Dan untuk itu Anda perlu menjalankan X. Tetapi VPS tidak memiliki X!

Sebagai gantinya, gunakan Xvfb, yang merupakan X "virtual" virtual. Anda harus menginstal xvfb dan dependensi apa pun yang diinginkannya (mungkin xorg-server-core dan banyak hal lain yang mungkin tidak diinstal pada Server Ubuntu).

Mulai xserver palsu seperti ini:

 $ Xvfb :1 -screen 0 1024x768x16 &

Kemudian pastikan variabel DISPLAY Anda diarahkan ke sana:

$ export DISPLAY=:1
$ ./df

Saya juga perlu menonaktifkan suara dan menjalankan dalam mode TEKS, tetapi bekerja dengan cara ini, tanpa X berjalan. Saya harap ini berhasil untuk Anda.


Segfault hilang, tetapi ketika saya menjalankannya, saya mendapatkan "Fallback: Open libncurses, output mungkin rusak. Simbol tidak ditemukan: waddnwstr.", Dan tidak memberikan output lagi, yang dapat keluar dengan Ctrl-X tetapi benar-benar kacau sesi ssh. (buat lebar 80 + prompt daripada 80 inc. prompt). Ini adalah jawaban terdekat yang saya dapatkan, jadi saya tetap memberi Anda hadiah, sebelum berakhir, tetapi saya berharap bahwa masalah baru ini juga dapat diselesaikan.
Macha

Benar, saya kehilangan symlink di sana. Memperbaiki itu. Sekarang yang saya dapatkan adalah output abu-abu (bukan hitam terminal saya, tetapi warna abu-abu yang berbeda).
Macha

Saya mendapatkan simbol yang tidak menemukan kesalahan, dan menginstal lib32ncursesw5-dev dan lib32ncursesw5 (saya menggunakan 64-bit) menyelesaikannya.
Bryce

Saya menggunakan 32 bit. Saya harus membuat symlink untuk /usr/lib/libncursesw.so -> /lib/libncursesw.so.5 untuk simbol tidak ditemukan kesalahan.
Macha

1

Pernahkah Anda melihat artikel DFTerm ini di Wiki DF? Ini mencantumkan beberapa dependensi yang sepertinya tidak Anda sebutkan di atas ....


Ketergantungan itu adalah untuk mengkompilasi dfterm, yang telah saya lakukan. Itu adalah Dwarf Fortress yang tidak akan berjalan.
Macha

1

Anda dapat mencoba menggunakan ldduntuk melihat apakah ada objek bersama yang hilang.

Misalnya, sesuatu seperti:

ldd /usr/local/bin/df

Semua yang daftar ldd sebagai "tidak ditemukan" hilang.

Anda juga harus mencoba melihat semua file * .so (dengan ldd) jika ada di folder game. Anda dapat menemukan file * .so dengan menggunakan perintah ini: find . -iname '*.so' -type f


Itu Dwarf Fortress itu sendiri, bukan dfterm, yang tidak akan berjalan.
Macha

Kemudian gunakan ldd pada executable itu, saya tidak tahu programnya jadi saya tidak tahu nama itu. Saya bahkan tidak tahu apakah itu ada di folder / usr / local / bin ...
LassePoulsen

ldd memberi: "Bukan eksekusi yang dinamis."
Macha

Oh, ada dua, satu hanya menjalankan yang lain. Bagaimana saya akan tahu apa itu objek bersama yang hilang?
Macha

semua yang terdaftar sebagai "tidak ditemukan" tidak ada;)
LassePoulsen

1

Anda perlu mengedit init.txt Anda. Cari pengaturan [PRINT_MODE:2D]dan ubah ke[PRINT_MODE:TEXT]

Anda mungkin ingin mengubahnya [SOUND:NO]juga.

Anda hanya akan berjalan pada 80x24 kecuali Anda menjalankan bagian dalam layar atau tmux.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.