新手到新手

作者:Dean Oisboid

我必须以道歉开始本月的文章。最初的引言侧重于 Unix 作为一个成熟的操作系统,但在娱乐领域缺乏成熟度。在探索了各种 Unix 游戏一周后,我意识到了我的错误。Unix 游戏可能不如 DOS 游戏那样盈利或数量众多,但它们具有巨大的影响力,这需要提及。

第一批流行的游戏始于大型机。“冒险”催生了“魔域(Zork)”,后者又催生了冒险游戏产业。在策略方面,我相信《帝国》是从大型机翻译过来的。Mac 和 MS-DOS 版本取得了巨大的成功。《帝国》还通过将“征服未知世界”的主题与多人游戏功能相结合,影响了策略类型,这种影响部分促成了《战争领主II》,这是我最喜欢的策略游戏之一。即使在今天,Unix 仍然通过互联网,通过多人地下城 (MUD) 对游戏世界产生重大影响。这些互动会话开始了现在许多非 Unix 游戏的要求,即它们允许通过调制解调器或网络进行多人游戏。许多在线服务现在提供最流行的 MS-DOS 游戏的多人版本。

“新手到新手”本月将稍微进行一次娱乐性的绕道,探索 Linux 磁盘或 CD 可能附带的各种游戏。就我而言,是 Slackware Professional 2.1。本文的最终目标是让 DOOM 运行起来,并使用 Sound Blaster 16,因为没有令人毛骨悚然的屠杀声音的 DOOM 是不完整的。

Slackware 允许您安装两组游戏。第一组“Y”包含 BSD 游戏合集和一个俄罗斯方块克隆版。另一组“XAP”包含 X-Windows 应用程序,并包括一些游戏,如 GNU chess 和 xboard(允许您在 X 中运行 ASCII GNU chess)。

我加载了 BSD 合集,不久之后就删除了它,但有一个例外:Mille,帕克兄弟流行的纸牌游戏 Mille Borne 的克隆版。在主 Slackware 磁盘上找到的二进制文件有一个错误,该错误在游戏扩展时发生。有时会出现恼人的嗡嗡声锁定。但是,我在 tsx-11 存档磁盘上找到了一个运行更流畅的版本。非常容易上瘾!

可用的游戏不仅仅是 BSD 合集。如果您在任何存档 CD 上搜寻,您一定会找到宝藏。当我找到感兴趣的东西时,我会将其复制到 /usr/local/games。这似乎是放置东西的合适位置。[/usr/games 用于系统安装的游戏;/usr/local/games 是用户安装游戏的不错选择 —ED]

Sunsite 磁盘上有大量游戏,方便地分为通用类别,如动作、策略、X11 和 RPG(角色扮演游戏),这对我来说是一个主要的停留点。这些名字听起来很熟悉。一些游戏,如 Rogue、Moria 和 (Net-) Hack,已成功翻译成 DOS,并且至少在一种情况下进行了重大改进。例如,SSI 的 Dungeon Hack 直接从 Hack 演变而来,但使用 SuperVGA 图形和各种其他附加功能进行了重制。

为了好玩,我复制了 Rogue。任何名字像我最喜欢的漫画女英雄的游戏都会自动获得特别考虑。我复制的版本是 5.3pl2。除了源代码,存档还有一个预编译的二进制文件,我很感激,但是当我运行时,它崩溃了:“缺少库”。好吧。我干净地编译了源代码并运行了新的二进制文件。它运行了几次击键,然后因“段错误”而停止。唉!我放弃了 Rogue,寻找其他娱乐。

我在 TSX-11 CD 上找到了一个名为 Omega(版本 0.78.1)的东西,我以为它会像同名的 DOS 坦克编程游戏一样;相反,它是另一个 Hack 克隆版。这个与 Rogue 不同,运行良好,我的妻子在玩了半小时后不得不把我拖走。很容易忘记,您并不总是需要花哨的图形来制作一款深刻的游戏。像这样的 ASCII 角色扮演游戏让我对其细节感到惊叹。当然,您可以添加图形,但那样 500K 的游戏会爆炸成多兆字节的大小。此外,键盘界面可以比鼠标界面(使图形屏幕混乱)为您提供更多种选择,Omega 就有这种优势。问题只是记住数量庞大的命令,但打印帮助文件可以轻松解决这个问题。

象棋!我一直很喜欢象棋,不仅是游戏本身,还有围绕它的传说和历史。既然我已经安装了 GNUchess 和 xboard,那么,来一局象棋怎么样?我直接运行 GNUchess,得到了 ASCII 棋盘,移动了几步棋子,然后输了。诚然,如果我有象棋等级,那也会在几百的低位。但是 GNUchess 可以工作!现在是 X-Windows 界面。我激活了我的交换文件,进入 X-Windows,调出一个 Xterm shell,然后输入 xboard。很快,一个相当漂亮的棋盘出现了。很快,我的硬盘开始嗡嗡作响。我走了第一步,对手的时钟开始从 5 分钟倒计时。硬盘持续疯狂运转了 2.5 分钟,之后我出于仁慈将其摧毁了。第一次移动花费如此长的时间是不可接受的。也许是交换文件的问题。我退出了 X-Windows,关闭了交换,然后再次尝试 xboard。这次棋盘出现了,同时出现了一条关于“GNUchessx 意外退出”的错误消息。唉!象棋就到此为止吧。[添加更多交换空间可以解决 xboard 的问题。—ED]

我在“策略”下发现了《帝国》(Chainsaw 版本 3.12),并考虑编译它。《自述文件》提到它需要 TCP/IP 等。当然,Linux 拥有更多,但我放弃了编译。我没有连接到任何网络;我只是想看看其中一款游戏是什么样子,而无需编译任何东西。幸运的是,我找到了 Conquest (5.5.1a),在复制到 / 并解压缩后,生成了一个可执行游戏,几乎不需要修改。运行 X-Windows 并调出 Xterm,我输入

xset +fp /usr/X386/lib/X11/fonts/misc/xconq
xset fp rehash

来设置一些适当的路径;输入 xconq 会产生一个大窗口,显示一个非常复杂的游戏。游戏中没有立即提供帮助文件,因此,在移动了几步棋子后,我退出了。此外,这是一个网络游戏,所以我真的无法从中获得完整的体验,独自玩耍。

Unix 游戏的强大之处在于,对于许多游戏,您可以获得源代码。如果游戏太容易或太难,或者需要一个游荡的巫师——重写它!DOS 方面的唯一答案是偶尔发布的构建集。然而,通常,这些构建集不允许您更改游戏的所有方面,而只是设计者允许您更改的内容。这与拥有源代码不太一样。负面影响是拥有源代码但无法干净地编译它。对于专家黑客来说,这不成障碍——深入代码并进行更正,但对于新手来说,这很痛苦。这就是为什么当上面的一些游戏崩溃时,我继续前进。并且沿着这个思路...

继续 DOOM!

在主 Slackware 磁盘上,我在 /usr/games/doom 下找到了一个未解压、未归档的 DOOM v1.666。此外,我在 /sunsite/games/X11/action/doom 下找到了一个归档版本。渴望玩游戏,我将四个文件(一个 README、一个声音驱动程序、数据文件和二进制文件)复制到我自己的 /usr/games/doom。激活我的交换文件后,我启动了 X-Windows,打开了一个终端窗口,进入了正确的子目录,输入 linuxxdoom 并等待。终端窗口显示了熟悉的 DOOM 启动行。

我等待着。我的硬盘开始研磨。终端消息给出各种错误,我认为这些错误与缺少声音驱动程序有关。

并等待着。一分钟过去了,硬盘还在疯狂运转。焦虑悄悄进入房间,等待着扑过来。

并等待着。一个小窗口出现了。DOOM 的开场画面有点显示出来了。它看起来非常黑暗和颗粒感,但是当我点击鼠标按钮时,X-Windows 的背景颜色发生了变化,DOOM 窗口突然戏剧性地清晰起来。

我进入了 DOOM!移动有点卡顿,令人惊讶。我通过 F11 键(伽玛校正)调亮了屏幕。是的,这就是 DOOM。我玩了一会儿然后退出了。没有令人毛骨悚然的声音的 DOOM 本身就很令人毛骨悚然。

DOOM 自述文件建议使用 Hannu 声音驱动程序的 3.0 版本,但未说明可以在哪里找到它。《声音 HOW-TO》提到使用在 /usr/src/linux/drivers/sound/Readme.linux 中找到的 shell 脚本,只是在我的设置中不存在这样的子目录或文件。使用 mc (Midnight Commander) 在 /dev 中窥探,我注意到许多空文件,包括用于声音的 /dev/dsp。我还注意到并通读了 MAKEDEV 文件,并决定尝试一下。

输入 MAKEDEV audio 没有任何作用——至少,我看不出有什么作用。文件的大小仍然为 0。[设备文件始终为 0 大小。设备文件有时也称为“特殊文件”,这是有充分理由的 —ED]

是的,这一切都预示着一场小危机。重新阅读《声音 HOW-TO》揭示了坏消息:重新编译内核以支持声音。不,不,不!我做错了什么要遭受这一切?我只是想玩带声音的 Doom。仅仅为了获得声音而必须重新编译内核似乎是疯了,但似乎对 DOOM 的这种简单渴望必须发展成为一种学习体验。[实际上,重新编译您自己的内核可以让您制作一个更小的内核,这为您提供更多内存来使用,这意味着更多的游戏可以在没有此处经历的大量交换的情况下工作 —ED]

在亵渎了各种 Linux 神(主要的和许多次要的)一天后,我平静下来处理重新编译内核的问题。我做的第一件事是从 CD-ROM 上的“D”集中复制剩余的内核源代码。内核已分成三个存档,我已经复制了第三个存档,作为常规安装的推荐部分。诚然,我发现如果我选择这样做,我可以摆弄源代码,这非常酷——我知道这是我在 Windows 或 DOS 上 永远 不会体验到的。

下一步:我阅读了手册。它提到创建两个链接

# ln -sf /usr/src/linux/include /usr/include/linux
# ln -sf /usr/src/linux/asm /usr/include/asm

我将其更改为与我的 /usr/src 下显示的内容相匹配。我输入

# ln -sf /usr/src/linux-1.1.59/include \
/usr/include/linux
# ln -sf /usr/src/linux-1.1.59/asm \
/usr/include/asm

这对我有用。

设置链接后,我切换到 /usr/src/linux-1.1.59 并输入 make config,这提示我回答一系列问题。在大多数情况下,我接受了默认答案,但涉及到 SCSI、CD 设置(我选择了 Sony cdu31a 选项)和声音时除外。由于我没有任何 SCSI 设备,我选择消除该功能。对于声音,我首先接受了所有声音选项的默认值,但在配置各个部分时,非 SoundBlaster 值与我为我的 Blaster 指定的某些内容冲突。该程序因此停止。我重新启动配置,这次选择不完全安装所有声音选项。这样,我可以只选择 SoundBlaster 选项并为其配置。

在 make config 完成后,我输入 make dep,这(根据《系统管理指南》)修复了所有源代码依赖项。这里没有问题。

终于到了重要时刻:make Image 来创建实际映像。不,它停止了,说不再支持该命令,而是输入 make zImage 来创建压缩版本。

我这样做了,计算机开始研磨。大约十分钟后,它崩溃了:缺少虚拟内存。我犯了一个愚蠢的错误!使用 swapon /swap 激活我的交换文件后,我重新启动编译并在研磨开始时放松下来。

并继续。5 分钟。10 分钟。30 分钟。大约一个小时后,它完成了,并且 干净地完成了。没有问题!我自豪地挺起胸膛,并畅饮了一口虚拟啤酒。

现在如何处理两个名为 zSystem.map 和 zImage 的结果文件?使用 mc,我在 /boot 下找到了一个类似的 zSystem.map。我重命名了它,并将新的替换到它的位置。快速浏览《系统管理员指南》后发现,有时内核被称为 vmlinuz,果然我在 / 下找到了这样一个文件。我重命名了它,并将 zImage 作为 vmlinuz 复制到 /。

[这已经足够了,因为 Dean 使用 UMSDOS 并且不使用 LILO。大多数使用 LILO 启动的 Linux 用户需要运行 lilo 才能使他们的新内核可启动。许多文档,包括 Dean 在下面提到的文章,都记录了如何做到这一点 —ED]

新的内核变得更小——大约是旧内核的三分之二大小。希望这会转化为速度上的轻微提升。我还发现——实际上我想起来了——Linux Journal 在第 7 期中有一篇关于编译内核的文章,名为“为胆小者准备的 Linux 性能调优”。快速回顾表明,我正确回答了各种内核问题。非常令人欣慰,也很有启发性。这篇文章解释了许多默认选择。

是时候进行真正的测试了:关闭 Linux 并重新启动。内核干净地加载,显然识别出了 SoundBlaster。太棒了!我设置了交换文件,启动了 X-Windows,调出了一个终端窗口,进入了 /usr/games/doom 并运行了 linuxxdoom。它完成了它的工作,研磨和 YES, YES, YES, DOOOOOOOOM WITH SOUND!!!!! 它成功了!

有一段时间,我以为它不会工作,因为在加载期间有很多错误消息说“找不到 lumpname ( )”,但它成功了!

现在,还有一件事要测试:DOOM 是否允许我将备用的 .WAD 文件(数据文件)与游戏一起使用。Doom 的一大吸引力在于该程序允许您使用其他数据文件,从而为您的 40 美元带来良好的价值。人们为 Doom、Doom II 和最新的家庭成员 Heretic 创建了数千个新的关卡、声音和效果。我怀疑我是否可以使用这个共享软件版本的 Doom 的备用 WAD,因为它是 1.666 版本。据推测,早期的 1.2 版本确实具有外部 WAD 支持,但这意味着用户不一定购买完整版本。发行商 Id Software 在后来的共享软件版本中删除了该功能。只有注册用户才能享受交换 WAD 的乐趣。我碰巧手头有一个 WAD,所以让我们试试看

doom -devparm -file acheron.wad -wart 1 3

程序快速启动并结束。正如我所料,共享软件 DOOM v1.666 不会运行外部 WAD。我可以保证注册的 Unix 版本将允许该功能(曾在朋友的 Sun 网络上玩过)。

临别怨言

Unix,尽管作为一个操作系统已经非常成熟,但在娱乐领域仍然缺乏成功,主要是因为企业和学校(Unix 的主要用户)不需要它。不可否认,Unix 并非没有影响游戏领域——它无疑产生了影响。但是 Unix 仍然作为高端解决方案出售,因此其价格超出了家庭市场,而娱乐市场在家庭市场中占据最大份额。此外,谁会在家运行 Unix 呢?

然而,随着 Linux 的出现,这是一款紧凑且基本上免费的 Unix,家庭市场打开了。如果 Linux 或任何其他类似的操作系统能够在家庭市场中创建一个有效且受欢迎的利基市场,那么情况就会发生变化。随着家庭市场的开放,我们看到了基于 Unix 的娱乐的巨大新潜力。

有人想设计一款杀手级的 Linux 游戏吗?

Dean Oisboid 是 Garlic Software 的所有者,是一位数据库顾问、Unix 初学者和公开的 Strike Commander 迷。可以通过 73717.2343@compuserve.com 联系他

加载 Disqus 评论