在我的Kubuntu 14.10 VMWare Guest中,Neverwinter Nights在启动时挂起

好吧,我再次建立了无冬之夜〜..而且我遇到了一个我以前从未见过的相当沉重的障碍,我真的不确定如何进步。

我按顺序解压缩了所有的拉链(我的意思是所有的拉链),添加我的许可证密钥,运行./fixinstall,然后启动游戏……并且遇到了缺少的库(我认为libGL.so.1是第一个) 。)我按照他们的报告安装了它们,最后遇到了每个人最喜欢的错误消息“SDL Parachute Deployed”。 为了解决这个问题,我安装了一些库(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的日志文件。 ..我不知道如何进一步排除故障。 任何建议/见解将不胜感激..

我遇到了相同的症状:没有输出,没有窗口,没有记录,几乎没有CPU使用和类似的strace运行无冬夜。 这是来自NWN安装的Kubuntu 14.04,过去在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位游戏根本不会受到影响。