![在我的 Kubuntu 14.10 VMWare Guest 中,Neverwinter Nights 在启动时挂起](https://linux22.com/image/865783/%E5%9C%A8%E6%88%91%E7%9A%84%20Kubuntu%2014.10%20VMWare%20Guest%20%E4%B8%AD%EF%BC%8CNeverwinter%20Nights%20%E5%9C%A8%E5%90%AF%E5%8A%A8%E6%97%B6%E6%8C%82%E8%B5%B7.png)
好吧,我再次设置无冬之夜〜...我遇到了一个我从未见过的严重障碍,我真的不知道该如何进展。
我按顺序解压了所有 zip 文件(我的意思是所有 zip 文件),添加了许可证密钥,运行 ./fixinstall,然后启动游戏……然后发现缺少库(我认为 libGL.so.1 是第一个)。我按照报告的内容安装了它们,最后出现了大家最喜欢的错误消息“SDL Parachute 已部署”。为了解决这个问题,我安装了更多库(SDL 和杂项),并从 NWN 导出的库路径中删除了 ./libs 文件夹。
现在,当我尝试启动它时,它就挂起了。nwmain 进程仍在运行,但它似乎什么也没做。我使用 strace 查看内部情况,发现所有线程似乎都卡在了 futex 锁上除了对于一个看起来像是游戏循环但只是一遍又一遍地这样做的人来说:
gettimeofday({1416876489, 342686}, NULL) = 0
nanosleep({0, 1000000}, 0xf0fff2c0) = 0
gettimeofday({1416876489, 344658}, NULL) = 0
nanosleep({0, 1000000}, 0xf0fff2c0) = 0
控制台没有报告任何错误,NWN 的日志文件中也没有写入任何内容。……我不知道如何进一步排除故障。任何建议/见解都将不胜感激。
答案1
我遇到了同样的问题:运行 Neverwinter Nights 时没有输出、没有窗口、没有日志记录、几乎没有 CPU 使用率,并且 strace 类似。这是在 Kubuntu 14.04 上从 NWN 安装而来,以前在 13.10 及更早版本上可以正常工作。
ArchLinux 论坛上有人很聪明 (https://bbs.archlinux.org/viewtopic.php?id=155009) 使用 gdb 调试将问题追溯到 libtxc-dxtn-s2tc0。这个 libtxc-dxtn-s2tc0 是一个可选的 OpenGL 扩展,用于纹理压缩。可选。:)
我删除了它
apt-get remove libtxc-dxtn-s2tc0:i386
现在 NWN 再次启动,我可以从官方战役中加载保存的游戏,没有任何明显的问题。
但是,游戏中缺少一些纹理(例如来自社区扩展项目的纹理)(白色)。这可能是因为它们使用 s3tc 算法(由上述库实现)进行压缩。好消息是,一些(大多数?)显卡可以直接处理压缩纹理。要强制 OpenGL 简单地将压缩纹理传递给显卡,请设置环境变量
force_s3tc_enable=true
在开始玩 NWN 之前。这帮我修复了白色纹理,但可能不能完全替代这个库,正如有人在这里警告的那样:有没有简单的方法可以在英特尔显卡上启用 S3TC?
注意,这个 libtxc-dxtn-s2tc0:i386 库也应该能提高图形性能,但 NWN 太旧了,所以这应该不成问题。由于上述命令只删除了 32 位版本的库,64 位游戏应该不会受到影响。