下一页 上一页 目录

8. 故障排除

其他故障排除资源可以在以下位置找到:Linux 游戏玩家 FAQJ�rgen 的 GLQuake 站点,以及本 HOWTO 的旧版本

通常,使用替代游戏引擎(如 QuakeSpasmDarkplaces)将解决鼠标和声音相关的问题。

8.1 Bash 无法启动程序

"bash: ./glquake.glx: 权限被拒绝"

"bash: glquake.glx: 命令未找到"

8.2 程序在启动时崩溃

情况不妙,但可以尝试一些简单的选项:

文件未小写数据文件丢失

Linux Quake 要求(大多数)文件名均为小写。如果您收到类似于“Error: W_LoadWadFile: couldn't load gfx.wad”的错误,则表示游戏找不到数据文件,可能是因为它们并非全部小写。

缺少库:“error while loading shared libraries: libGL.so.1: cannot open shared object file”

这样的消息表示程序无法运行,因为它找不到所需的系统文件。也许

动态库(或 Windows 用户所知的 DLL)可能非常复杂。有关更多信息,请尝试 lddldconfig 手册页。

Memory overwrite in Sys_Printf

GCC 4 的问题

8.3 程序在加载关卡时崩溃

8.4 游戏运行缓慢

大多数 Quake 游戏都依赖 OpenGL (libGL.so) 来实现其图形功能。设置 OpenGL 超出了本文档的范围。非常慢的性能意味着您可能正在使用 Mesa GL 而不是正确的硬件 GL 加速。

还可以通过禁用花哨的效果(如光晕)以及通过使用控制台命令_snd_mixahead .4”来减慢声音混合来提高性能。

使用 Nvidia 硬件时,轻微的游戏减速也可能归因于使用冲突的 AGP 驱动程序。有关此方面的更多信息,请参阅Nvidia AGP 问题

8.5 声音问题

有关更多信息,请参阅驱动程序部分。

诸如“/dev/dsp: Device or resource busy”之类的错误表示某些程序已在使用您的声卡,您将必须停止该程序才能获得 Quake 音效。

“Quake 引擎游戏退出,并且我看到有关 mmap 的错误!”

声音断断续续或音质不佳。

SDL 提供了一种使用 SDL_AUDIODRIVER 环境变量更改声音驱动程序的简单方法。使用如下命令行运行游戏
     SDL_AUDIODRIVER=xxx darkplaces-sdl
Linux 上的有效值包括:dsp(使用 OSS)、alsa(使用 ALSA)、esd(使用 ESD 守护进程),以及可能的 arts(使用 aRTs 守护进程)

8.6 编译问题

GNU/Linux 的动态特性意味着编译旧软件通常很困难,即使是对于没有 C 编程经验的人来说,小障碍也可能是无法逾越的。以下是一些相关问题。

GCC-4.x

GNU C 编译器最近进行了重大修订,并且大多数现代发行版现在都包含 GCC-4.1。(要查找您正在使用的版本,请键入 gcc --version)。作者通常使用 GCC-3.2.2,并且使用 GCC-4.x 的人们在编译程序时可能会发现更多问题

警告

GCC-4.x 发出的编译警告比 3.x 多得多。这些是通常可以忽略的小错误,但是当编译器被赋予“-Werror”标志时,警告将使一切停止。要解决此问题,您可以安全地从程序的 Makefile 中删除“-Werror”。

含糊不清的声音

又一个声音问题。通过如下更改 snd_mix.c 来解决此常见问题

-           snd_scaletable[i][j] = ((signed char)j) * i * 8;
+           snd_scaletable[i][j] = ((j < 128) ? j : j - 0xff) * i * 8;

优化

GCC-4.0 特别是在“-O”标志破坏某些变量类型转换方面存在问题。如果您能够编译程序,但它发生段错误,请尝试通过从任何 makefile 中删除“-O”选项来禁用这些优化。

如果您在 GCC-4 下编译遇到以前不存在的问题,则可以并行安装 GCC-3.x 和 4.x。大多数人会希望从他们的 Linux 发行版中查找预编译的软件包。

一旦安装了 GCC-3.x,就必须告诉程序使用此版本而不是默认的 4.x 版本进行编译。附带配置脚本的项目通常具有用于定义要使用哪个编译器的选项(键入 ./configure --help 并查找提示),有时您可以使用 export CC=gcc32 或编辑 Makefile 并手动将“gcc”替换为“gcc32”(或“gcc-3.2.2”等)。

64 位 CPU

这些旧程序中的大多数可能无法作为 64 位二进制文件运行。QuakeSpasm 是一个例外。

但是,仍然可以在 64 位操作系统上编译 32 位二进制文件。为此,请编辑 Makefile 并在加载和编译标志(LDFLAGS、CFLAGS)中添加“-m32”。这告诉 GCC 构建和链接 32 位程序(如果也安装了 32 位 SDL 和 OpenGL 库)。您可能还必须禁用 x86 汇编的使用。

如果您在运行 32 位应用程序时遇到问题,请尝试使用 linux32 命令。例如:linux32 tyr-glquake

8.7 其他问题

游戏太暗

如果更改选项菜单中的亮度设置不起作用,您可以使用 xgamma 程序来调亮整个显示器。

此技巧不适用于支持不佳的硬件。对于 Voodoo 1/2 用户,请访问此处以获取更多信息。

鼠标视角

“这个游戏不让我正确环顾四周。%$!$@”

鼠标无法正常工作

尝试以下操作 -

游戏保存失败/选项未记住

如果您以普通用户身份运行 Quake 并遇到这些问题,则可能是由于您没有足够的权限写入游戏目录。解决方案包括

Quake 使用令人困惑的方法来保存和恢复游戏选项,尤其是在玩附加组件时,有时即使文件权限不是问题,也必须重新初始化游戏选项。在这种情况下,作者无法提供简单的建议 %-/。

疯狂多边形

Quake 的某些任务包/Mod 可能会导致现有的玩家/怪物模型被线条覆盖。要解决此问题,请删除目录“quake/id1/glquake”。下次运行游戏时,它将重建此目录,一切都应该正常。

屏幕上的线条

3Dfx 卡的常见问题是屏幕上闪烁的线条。

白色纹理和其他图形异常

一些 Quake 引擎使用称为多重纹理的 OpenGL 加速功能。这通常可以正常工作,但是如果您遇到故障,可以使用 -nomtex 选项禁用此功能。

较旧的显卡有时可能会以白色绘制单个模型。有关微调性能的 ingame GL 变量,请参阅 PlanetQuake 命令列表

Glibc 问题

一些 Linux 软件以带有“.run”后缀的 Loki Installer shell 存档形式提供。以下提示来自 Icculus Gamers Faq

Q: I'm using {random loki_setup based installer}, and it's telling me the "installation doesn't support glibc-2.1" or something

A: Just type the following before running setup.sh [or the installer]: export SETUP_LIBC=glibc-2.1. 

链接

http://www.x.org

Linux 游戏玩家 ATI HOWTO

Linux 游戏玩家 Nvidia HOWTO

8.8 声音驱动程序

Linux 主要有两种声音系统 - 开放声音系统和 ALSA。如果您遇到声音问题,并且故障排除部分没有帮助,您可以考虑更改声音驱动程序。这可能很困难,仅适用于经验丰富的用户。

要确定您当前正在使用的驱动程序,请键入 lsmod 以列出当前加载的内核模块。ALSA 声音模块具有以“snd_”开头的详细名称,而 OSS 模块具有更简洁的名称。例如,ALSA Sound Blaster Live 模块是“snd_emu10k1”,而 OSS 模块是“emu10k1”。自 Linux 内核 2.6 以来,ALSA 一直是标准声音系统,而 2.4 及更早版本更有可能附带 OSS 声音。

有关 ALSA 的信息,请访问 Alsa 首页 和 Linux Journal 的 ALSA 指南

对于已经使用 ALSA 并希望尝试 OSS 模块的用户,可能需要内核重新编译


下一页 上一页 目录