ฉันจะเรียกใช้ Dwarf Fortress ในโหมดข้อความ (ncurses) บน Linux VPS ได้อย่างไร


14

ฉันติดตั้ง Dwarf Fortress บน Linux VPS เพื่อใช้กับ dfterm กำลังใช้งาน Ubuntu 10.04 Server x86-32 ฉันค่อนข้างแน่ใจว่าฉันมีการพึ่งพาทั้งหมด:

ฉันติดตั้งแล้ว:

  • ncurses
  • ncursesw
  • libsdl
  • libsdl ภาพ
  • libgtk
  • libglu
  • libopenal1

ฉันต้องปิดเสียงไม่เช่นนั้นมันจะ segfault ทันทีและฉันตั้งโหมดการแสดงผลเป็นข้อความ ฉันไม่ได้ทำการเปลี่ยนแปลงใด ๆ กับการกำหนดค่า

อย่างไรก็ตามก่อนที่ฉันจะเข้าไปใกล้ dfterm มันก็ยังทำงานไม่ถูกต้อง มันจะแสดงหน้าจอว่างเปล่า สิ่งที่อาจทำให้เกิดสิ่งนี้ มีการพึ่งพาที่ฉันพลาดหรือไม่? มีอะไรอีกบ้างที่ฉันควรเปลี่ยนแปลงในการกำหนดค่า?

ระบุว่าเป็นเซิร์ฟเวอร์มีโอกาสที่ดีที่หากมีการพึ่งพาที่ขาดหายไปมันเป็นสิ่งที่ devs ไป "แน่นอนทุกคนมีสิ่งนั้น " และไม่รบกวนรายการ

แอพพลิเคชั่นอื่น ๆ (เช่น, irssi ใช้, ฉันคิดว่า?) ทำงานได้ดี


ฉันเดิมถามนี้ในการเล่นเกม แต่มีคนแนะนำให้ถามที่นี่: gaming.stackexchange.com/questions/4716/...
มัจฉา

นั่นเป็นแนวคิดที่น่าสนใจ คุณบอกได้ไหมว่าเกมกำลังพยายามทำอะไร เรียกใช้ 'top' จากเทอร์มินัลอื่นและดูว่าใช้ CPU ใด ๆ หรือไม่
Nicholas Knight

คำตอบ:


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 ซึ่งเป็น virtual X ปลอมคุณจะต้องติดตั้ง xvfb และสิ่งที่ต้องพึ่งพา (อาจเป็น xorg-server-core และสิ่งอื่น ๆ ที่อาจไม่ได้ติดตั้งบน Ubuntu Server)

เริ่ม xserver ปลอมเช่นนี้:

 $ Xvfb :1 -screen 0 1024x768x16 &

จากนั้นตรวจสอบให้แน่ใจว่าตัวแปร DISPLAY ของคุณชี้ไปที่:

$ export DISPLAY=:1
$ ./df

ฉันยังต้องปิดการใช้งานเสียงและทำงานในโหมด TEXT แต่ทำงานด้วยวิธีนี้โดยไม่มี X ที่ทำงาน ฉันหวังว่ามันจะเหมาะกับคุณ


segfault หายไป แต่เมื่อฉันเรียกใช้ฉันจะได้รับ "Fallback: Open libncurses, output อาจไม่ทำงาน Symbol ไม่พบ: waddnwstr." และไม่ให้เอาต์พุตอีกต่อไปซึ่งสามารถออกด้วย Ctrl-X แต่ยุ่งมากขึ้น เซสชัน ssh (ทำให้ความกว้าง 80 + พรอมต์มากกว่า 80 inc. พรอมต์) นี่คือคำตอบที่ใกล้เคียงที่สุดที่ฉันได้รับดังนั้นฉันจึงมอบรางวัลให้คุณก่อนที่มันจะหมดอายุ แต่ฉันหวังว่าปัญหาใหม่นี้จะสามารถแก้ไขได้เช่นกัน
มัจฉา

ใช่ฉันขาด symlink ตรงนั้น แก้ไขที่ ตอนนี้สิ่งที่ฉันได้รับคือเอาท์พุทสีเทา (ไม่ใช่สีดำของเทอร์มินัลของฉัน แต่เป็นสีเทาที่แตกต่างกัน)
มัจฉา

ฉันพบว่าสัญลักษณ์นั้นไม่พบข้อผิดพลาดและติดตั้ง lib32ncursesw5-dev และ lib32ncursesw5 (ฉันใช้ 64- บิต) แก้ไขมัน
ไบรซ์

ฉันใช้ 32 บิต ฉันต้องสร้าง symlink สำหรับ /usr/lib/libncursesw.so -> /lib/libncursesw.so.5 สำหรับสัญลักษณ์ที่ไม่พบข้อผิดพลาด
มัจฉา

1

คุณเคยเห็นบทความ DFTerm นี้ใน DF Wiki หรือไม่ มันแสดงรายการการพึ่งพาบางอย่างที่คุณไม่ได้ระบุไว้ข้างต้น ....


การพึ่งพาเหล่านั้นคือการรวบรวม dfterm ซึ่งฉันได้ทำไปแล้ว มันเป็นป้อมปราการคนแคระที่จะไม่หนี
มัจฉา

1

คุณสามารถลองใช้lddเพื่อดูว่ามีวัตถุที่ใช้ร่วมกันขาดหายไปหรือไม่

ตัวอย่างเช่น:

ldd /usr/local/bin/df

ทุกอย่างที่ ldd แสดงเป็น "ไม่พบ" หายไป

คุณควรลองดูไฟล์ * .so ทั้งหมด (ที่มี ldd) หากมีในโฟลเดอร์เกม คุณสามารถค้นหาไฟล์ * .so โดยใช้คำสั่งนี้: find . -iname '*.so' -type f


มันเป็นป้อมปราการของคนแคระเองไม่ใช่ dfterm ที่ไม่วิ่งหนี
มัจฉา

จากนั้นใช้ ldd บนไฟล์เรียกใช้นั้นฉันไม่รู้จักโปรแกรมดังนั้นฉันจึงไม่ทราบชื่อของมัน ฉันไม่รู้ด้วยซ้ำว่ามันอยู่ในโฟลเดอร์ / usr / local / bin ...
LassePoulsen

ldd ให้: "ไม่ใช่ไฟล์เรียกทำงานแบบไดนามิก"
มัจฉา

โอ้มีสองอันอันหนึ่งวิ่งไปอีกอัน ฉันจะบอกได้อย่างไรว่าอะไรคือวัตถุที่ใช้ร่วมกันที่ขาดหายไป
มัจฉา

ทุกอย่างที่ ldd แสดงเป็น "ไม่พบ" หายไป)
LassePoulsen

1

คุณต้องแก้ไข init.txt ของคุณ มองหาการตั้งค่า[PRINT_MODE:2D]และเปลี่ยนเป็น[PRINT_MODE:TEXT]

คุณอาจต้องการเปลี่ยน[SOUND:NO]เป็นเช่นกัน

คุณจะทำงานที่ 80x24 เว้นแต่ว่าคุณจะทำงานภายในหน้าจอหรือ tmux

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.