4. XFree86 与您

如果您打算在 X 环境下进行游戏,那么了解一些关于 X 的知识至关重要。“X Window 用户 HOWTO”,特别是 “man XF86Config” 是必须阅读的。不要吝啬时间;请阅读它们。它们具有极高的“信息空间比”。如果您熟悉XF86Config(或XF86Config-4).

4.1. 获取关于您的 X 系统的资讯

无论您是尝试诊断 X 问题还是从邮件列表或 Usenet 新闻组请求帮助,您都希望尽可能多地掌握信息。以下是一组您可以用来获取这些信息的工具。

4.1.1. Probeonly

关于您的 X 系统的最佳诊断工具和信息来源之一是 probeonly 输出。要使用它,如果 X 已经在运行,请先杀死 X,然后在控制台中输入

    X -probeonly 2> X.out
					

是的,那是一个单破折号;标准就到此为止了。X 的输出会转到 stderr,所以我们必须使用 “2>” 将 stderr 重定向到一个名为X.out。这个文件将包含几乎所有关于您的 X 系统的知识。至关重要的是,您需要了解在 probeonly 输出中看到的各种标记之间的区别

    (--) probed              (**) from config file    (==) default setting
    (++) from command line   (!!) notice              (II) informational
    (WW) warning             (EE) error               (??) unknown.
					

这是一个我从我的输出中收集到的一些信息的例子

我正在以 16 bpp 颜色运行

    (**) TDFX(0): Depth 16, (--) framebuffer bpp 16
					

X 已经检测到我的显卡芯片组和显存是什么

    (--) Chipset 3dfx Voodoo5 found
    (--) TDFX(0): VideoRAM: 32768 kByte Mapping 65536 kByte
					

4.1.2. 获取关于您的设置的信息:xvidtune

xvidtune 是您的朋友,当您的 X 屏幕向右偏移得太远,或者垂直长度太小以至于无法在您的显示器上显示时。然而,它也是一个很棒的诊断工具。它会给您

  • 在您的 XF86Config 文件中指定的 hsync/vsync 范围

  • 定义您的视频模式的 4 个水平和 4 个垂直数字(第 1 个水平/垂直数字给出屏幕分辨率)。这 8 个数字将告诉您您的 X 使用哪个 modeline。有关更多信息,请参阅 XFree86 视频时序 HOWTO。请注意,显式的 modeline 不再是必需的,因为自 XFree 4.0.1 及更高版本以来,modetimings 会根据您的显示器和显卡的功能自动计算。但是,有时您可能想要摆弄模式时序,例如对于奇怪的硬件,或者如果您想微调您的显示。

  • 您的显卡正在运行的 “点时钟”。

4.1.3. 获取关于您的设置的信息:xwininfo

xwininfo 告诉您关于 X 窗口的各种信息。实际上,您的“背景”或“根”窗口也被视为一个窗口。因此,当 xwininfo 要求您单击您想要获取信息的窗口时,请单击您的背景。它会告诉您诸如屏幕和窗口分辨率、颜色深度、窗口重力状态(这给窗口管理器提示在哪里放置新窗口)、后备存储使用情况等等。

4.1.4. 其他信息来源

xdpyinfo 提供很酷的东西,例如 X 版本和加载的扩展(在尝试查看缺少什么时非常宝贵,例如 GLX、DRI、XFree86-VidMode 等)。

4.1.5. 获取关于您的 3D 系统的资讯

glxinfo 提供许多关于 OpenGL 的有用信息,例如是否启用了直接渲染、当前安装的 glx 和 mesa 版本、供应商/渲染器字符串、正在使用的 GL 库文件等等。

4.2. 在没有窗口管理器的情况下在 X 中玩游戏

在 X 环境下玩游戏时,您应该考虑在不启动窗口管理器 (WM) 的情况下启动 X。重量级 WM,如 Enlightenment,或成熟的桌面环境,如 GNOME 或 KDE,可能会产生明显的减速。即使是轻量级 WM,如 twm,也会占用您 CPU 的时钟周期(在 twm 的情况下,即使是全屏游戏也会在窗口周围有一个边框)。在没有 WM 或 DE 的情况下运行游戏取决于您如何访问 X。如果您通常登录到虚拟控制台并使用 “startx” 启动 X,请尝试以下操作

修改~/.xinitrc,它告诉 X 在启动时运行什么。这是我的 .xinitrc 的样子

      #quake3 +set r_gldriver libGR.so.1
      #exec ut
      #lsdldoom -server 2
      #exec tribes2
      exec /usr/bin/enlightenment
			

您通常会看到从该文件(GNOME 或 KDE)执行的窗口或桌面管理器。用井号 (#) 注释掉包含 WM 或桌面管理器的行,并将您的游戏放在新行上,并附带您想要传递的任何命令行参数。如果游戏不在您的 $PATH 中,请给出其完整路径名。

如果您使用 gdm 直接登录到 X,那么情况会有点不同。这些说明适用于 gdm 2.4 或更高版本。它们*可能*适用于 kde,但我不能确定。

首先,检查您的gdm.conf(通常在/etc/X11/gdm/etc/gdm)文件中查找以 "SessionDesktopDir=blah”。列为选项的目录之一应该是 “/usr/share/xsessions”,并且是本示例中将使用的目录。以 root 身份,切换到 “/usr/share/xsessions” 目录并查看其内容。它应该包含一些.desktop文件,每个文件对应于您在 gdm 的 Session 菜单中看到的条目,例如gnome.desktop, enlightenment.destop。此示例将向您展示如何登录 Doom3。将任何桌面文件复制到 “doom3.desktop”,并在您喜欢的文本编辑器中打开新文件。该文件将包含许多备用语言,因此请删除所有您不需要的内容,并使文件看起来像这样

      [Desktop Entry]
      Encoding=UTF-8
      Name=DOOM III
      Comment=iD's Doom III
      #if game is not in path, remember to put the full path here
      Exec=/usr/games/doom3/doom3
      # no icon yet, only the top three are currently used
      Icon=
      Type=Application
			

保存文件并注销您的窗口管理器。在 gdm 登录屏幕上,您现在应该在 “Sessions” 中看到 “DOOM III” 作为 “Sessions” 中的一个选项。当然,您可以为您安装的每个游戏添加一个 .desktop 文件