重写旧游戏的艺术

作者:Geoff Draper

内兰口渴了(图 1)的开场白,这是一款为 8 位家用电脑设计的旧文字冒险游戏,写道:“你身处一个名为银行的房间。地板上的一张巨型地毯上写着欢迎……银行家克林科恩先生看起来很困倦。” 如果你不认识这些字,你并不孤单。它是 20 世纪 70 年代和 80 年代编写的数千个开源程序之一,这些程序已经淡出大众视野。

The Art of Rewriting Old Games

图 1. 最初的文字冒险游戏

在 8 位计算机统治时期,许多独立的业余程序员制作了各种高质量的开源软件。当时还没有 GNU 通用公共许可证 (GPL),因此程序员们提议将其作品发布到公共领域 (PD)。事实上,GPL 的创建正是为了克服 PD 许可模型的一些缺陷(参见资源)。这些程序通过当时的媒体传播:电子公告牌、本地用户组、杂志和邮购软件合集。

不幸的是,大多数开创性的软件已经随着编码它们的旧磁盘和磁带在布满灰尘的壁橱和阁楼中慢慢腐烂而消失在数字遗忘中。对于某些类型的程序来说,这并不是什么大损失。例如,旧的文字处理器和电子表格与现代同类产品相比非常原始,并且在今天的实用性有限。然而,旧磁盘分解造成的最严重的悲剧是旧游戏的丢失。

旧游戏?这样的说法可能不像乍看起来那么荒谬。与大多数实用软件(在其生命周期中可能会经过多次修订以保持最新)相比,娱乐软件通常不会定期更新。一款游戏可能会衍生出一两个续集,但这些续集通常是独立的全新游戏,而不是原始游戏的修订版。如果没有每隔几年更新一次,旧游戏最终会变得无人问津。有些人出于延长这些数字遗迹寿命的愿望,热衷于推广模拟器的使用,模拟器允许用户在现代 PC 上模拟不同的平台。然而,这只是延迟了旧软件迫在眉睫的消亡,并没有阻止它。模拟器仅对那些既了解原始平台又对其有足够兴趣的人有用。随着时间的推移,他们的人数将会减少。

那么,该怎么办呢?许多这些旧的 PD 游戏与 20 或 30 年前一样,在今天仍然非常巧妙、创新且有趣。虽然它们的图形(如果有的话)与现代游戏相比很粗糙,但它们具有独特的魅力。作为早期开源软件的例子,它们代表了我们过去的重要联系。模拟器虽然令人印象深刻,但只提供了一个部分答案。理想的解决方案是将原始游戏转变为现代受众可以接受的格式。事实上,保存旧软件的最佳方法是重写它。

The Art of Rewriting Old Games

图 2. 重写后的开场画面

经典的重制

例如,让我们考虑一下内兰口渴了,我在本文开头提到的游戏。它由 Furman H. Smith 博士编写作为示例代码,并发表在现已停刊的杂志Recreational Computing 1980 年 7 月/8 月刊上。从那里,该代码被发布到公共领域。从这个不起眼的开端,这款游戏在世界各地的各种用户组中流传开来。它的情节与其他同期的 PD 冒险游戏类似:探索周围环境,收集一系列宝藏并将它们返回到中心位置。与大多数儿童游戏一样,没有无法挽回的错误,所有角色都很友善。然而,与许多其他儿童游戏不同,内兰口渴了即使对于经验丰富的冒险家来说,也提供了高度的挑战和趣味性。即使在通关游戏后,我仍然会在我的 Commodore 64 上一遍又一遍地玩它,仅仅是为了好玩。

随着时间的推移,我选择的平台转移到了 MS-DOS,然后是 Linux。然而,我会经常带着一丝伤感的怀旧情绪回到内兰口渴了,我知道我的孩子们不太可能看到这款游戏。此外,Commodore 64 作为一个已经过时的平台,现代游戏玩家很少有耐心玩文字冒险游戏。我意识到,将这款经典游戏保存给今天的孩子们的唯一方法是将其完全重写为适用于现代计算机的基于图形的游戏。所以,我就这样做了。

重制版的内兰口渴了(我将其缩短标题为口渴的内兰)用点击式 GUI 环境取代了原始游戏的命令行解析器界面。玩家可以使用鼠标或箭头键控制屏幕上的头像导航。可以通过单击来拾取和操作物品。玩家的物品栏显示到目前为止在游戏中收集到的物品,显示在窗口底部的面板中。游戏角色使用数字语音与玩家交流。我使用 Alias|Wavefront 的专有 Maya 软件设计了背景场景。然后将 3D 模型渲染为 2D 透视图像,在游戏中呈现 3D 视觉效果,而无需实时 3D 渲染的计算开销。这使得口渴的内兰即使在低端 PC 上也能以可接受的速度运行。

The Art of Rewriting Old Games

图 3. 在原始游戏中发现牛奶房

The Art of Rewriting Old Games

图 4. 在新版本中,物品栏显示在底部栏中。

这样的现代化是有代价的。例如,增加界面的简单性有一个不幸的副作用,即降低了其精确度。在原始游戏中,玩家拥有相当丰富的词汇量来与虚拟环境互动,使用诸如 TAKE、DEPOSIT、CONSULT 和 LOOK 等键入命令。然而,在 GUI 中,所有形式的表达都简化为一个命令:单击。对于大多数游戏来说,这种限制被好处所抵消。玩家不再需要猜测解析器接受哪些名词和动词的组合;相反,他们可以在图形设置中自由探索他们的虚拟环境。

内兰口渴了具有历史性的殊荣,它是第一款专门为儿童编写的文字冒险游戏。现在,它又一次在计算机游戏史上树立了里程碑,成为第一款完全用 GUI 重写的文字冒险游戏。虽然新游戏的故事线与其前身几乎相同,但没有借用一行代码。最初的 BASIC 代码库以解析键入的命令为中心,根本不兼容我为现代基于 GUI 的游戏的设计。因此,口渴的内兰是用 C++ 实现的;我使用了熟悉的 Qt API 来构建用户界面。Qt 最著名的是作为 K 桌面环境的框架,因此玩家可能会注意到口渴的内兰和 KDE 之间有相似的外观和感觉。虽然游戏的开发几乎完全在 Linux 中完成,但我也编译了 Microsoft Windows 版本。使用 Qt 允许我为游戏的 Linux 和 Windows 版本维护一个代码库。

为了与原始的开源目标保持一致,口渴的内兰在 GPL 下发布。好奇的玩家可能会注意到一两个向其他现代开源游戏致敬的象征性元素。最引人注目的是,作为游戏主角的动画企鹅直接借用了 Sam Hart 流行的教育游戏Tux Typing。特别细心的玩家也可能认出 Anders Widell 无处不在的KSokoban 中的红色宝石,在这里它充当玩家必须找到才能赢得口渴的内兰的宝藏之一。

行动号召

在中断 20 多年后,内兰口渴了已经从一款只有少数年迈的业余爱好者记得的默默无闻的儿童游戏,变成了一款完全现代化的程序,再次受到世界各地孩子们的喜爱。我们这些记得旧游戏的人有一个独特的机会来为后代保存它们。如果你过去喜欢某个公共领域游戏,无论你是否是原始作者,我都邀请你找到它并为现代玩家重新实现它。让我们继续从内兰口渴了的复兴开始的势头。那里有大量的几乎被遗忘的娱乐软件宝库,它们对大众隐藏起来只是因为他们不知道在哪里找到它。还有多少个内兰在等待被重新发现呢?

资源

口渴的内兰可以从 www.geocities.com/thirstynellan 下载。

Lawrence Rosen 的“为什么公共领域不是许可证”: www.linuxjournal.com/article/6225

Geoff Draper 在 18 年前首次开始编写开源视频游戏。可以通过 thirstynellan@yahoo.com 联系到他。

加载 Disqus 评论