Gnome Inform7 简介,第一部分
什么是互动小说?
一切始于 1975 年,一位名叫威尔·克劳瑟 (Will Crowther) 的男士想为他的女儿们创造一些东西,将他所爱的两件事结合起来:角色扮演游戏和洞穴探险。结果是一个名为“冒险”(Adventure)(有时也称为“巨洞冒险”(Colossal Cave))的游戏。他在工作中使用的主机上编写了这个游戏,虽然他的女儿们很喜欢它,但其他发现这个游戏的人也很喜欢,他们将其广泛传播。1976 年,斯坦福大学学生唐·伍兹 (Don Woods) 在大学的计算机上发现了该程序,并在克劳瑟的许可下扩展了最初的 Fortran 版本,增加了更多的房间和宝藏。这个扩展版本后来被移植到 C 语言,并从那里移植到无数的平台和语言。今天您仍然可以下载各种版本。
为了让新手用户更容易使用,克劳瑟对游戏进行了编程,使其能够理解和解析自然语言命令,如“unlock grate”(解锁格栅)、“get key”(获取钥匙)和“go north”(向北走)。
“冒险”是计算机历史上的一个里程碑。它为我们带来了“xyzzy”这个词和“you are in a twisty maze of passageways, all alike”(你身处曲折的迷宫通道中,一切都一样)这句话等等。它证明了沉闷的主机也可以变得有趣和令人兴奋。它还启发了戴夫·莱布林 (Dave Lebling)、马克·布兰克 (Marc Blank) 和蒂姆·安德森 (Tim Anderson),他们都在麻省理工学院 (MIT) 一起工作,于 1977 年创建了自己的冒险游戏,他们称之为“魔域”(Zork)。然后,他们与麻省理工学院的一些同事合作创建了一家名为 Infocom 的公司,该公司成为被称为“文字冒险”或“互动小说”的游戏风格的无可争议的王者。
起初,“冒险”和“魔域”都被设计为在主机上运行。Infocom 希望找到一种方法将“魔域”移植到新的个人电脑上,例如 Apple II 和 TRS-80,它们正开始出现在市场上。他们想出的方法是创建一个虚拟机,他们所有的游戏都是为这个虚拟机编写的。他们称之为魔域机器(简称 Z-Machine)。然后,他们为他们想要支持的每个计算机平台编写了一个“Z-Machine 解释器程序”或 ZIP。通过为几个不同的平台构建 ZIP,Infocom 能够同时在数十个不同的平台上发布他们的游戏。例如,“魔域 III”的包装盒上列出了以下系统要求
适用于:Apple II、Macintosh、Atari、Commodore 64、DECmate、DEC Rainbow、DEC RT-11、HP 150 和 110、IBM PC* 和 PCjr、KAYPRO II、MS-DOS 2.0*、Osborne、TI Professional、TI 99/4A、Tandy 2000、TRS-80 Color Computer、TRS-80 型号 I 和 III。
* IBM PC 版本适用于您的 Compaq,MS-DOS 2.0 版本适用于您的 Wang、Mindset、Data General System 10、GRiD 和其他许多电脑。
这种广泛的可用性为 Infocom 在市场上带来了巨大的优势,在 1980 年代早期,Infocom 是 PC 游戏行业的宠儿。他们发布了一个又一个热门游戏,似乎他们不会犯任何错误。但在 1980 年代后期,出现了两个问题,证明了他们的衰落。第一个问题是计算机图形开始兴起。电脑游戏中的角色实际上开始变得可识别,而不仅仅是屏幕上的小方块。比从文字游戏到图形游戏的转变更糟糕的是,一些管理公司的人根本不想从事“游戏”业务。他们希望被“认真对待”,因此他们将大量资金和人力投入到一个名为“基石”(Cornerstone) 的商业数据库程序中。该数据库惨败,而且很快 Infocom 就被收购,随后被扼杀了。
在 Infocom 走向灭亡之际,几个不同的文字冒险爱好者团体正在努力围绕互动小说建立社区,他们自己创作文字冒险,并对 Z-Machine 进行逆向工程。InfoTaskForce 设法解码了 Z-Code 文件的格式,并成功创建了 ZIP 的公共领域版本,从而可以在您希望的任何计算机系统上玩 Infocom 游戏。在此期间,还在 usenet 上创建了几个新闻组,为人们提供了一个归属的社区,无论他们只是想玩游戏 (rec.games.int-fiction) 还是想编写游戏 (rec.arts.int-fiction)。
这些爱好者创建了自己的环境来创作和玩互动小说。但后来,在 1993 年,格雷厄姆·尼尔森 (Graham Nelson) 发布了 Inform 编程语言的第一个版本及其相关的编译器。Inform 相对于 TADS 和 AGT 等竞争对手的文字冒险系统,其优势在于,用 Inform 编写然后编译的游戏会生成标准的 Z-Code 文件,并且与几乎地球上每个计算机平台(从主机到台式计算机,再到 Gameboy,再到手机和 iPod)上的 Z-Machine 解释器兼容。
像许多编程语言一样,自最初发布以来,Inform 经历了几个不同的版本,到现在为止,您可以用它创建的游戏可能比 Infocom 最好的作品更先进,同时,也更容易创建。
Inform 的最新版本是版本 7。它最初是与专门为创建互动小说而定制的集成开发环境 (IDE) 一起发布的。这个新的 IDE 最初仅在 MacOS X 平台上运行,但此后已移植到 Windows 和 Linux。Linux 版本称为 Gnome-Inform7。
获取和安装 Inform7
您可以从 SourceForge 下载页面(参见链接部分)下载 Gnome-Inform7。有几个不同发行版的软件包,以及源代码(如果您想从头开始编译)。
我使用 Ubuntu,所以我下载了 Ubuntu 特定版本。
下载完成后,我通过命令行安装了它,如下所示
sudo dpkg -i gnome-inform7_5T18-ubuntu1_i386.deb
Ubuntu 特定版本是为 Ubuntu 8.04 "Gutsy" 构建的。如果您使用的是旧版本的 Ubuntu,则需要 Debian 版本。此外,当使用 dpkg 安装 Debian 软件包时,如果安装因缺少依赖项而失败,只需发出以下命令即可解决缺少的依赖项并完成安装
sudo apt-get -f install
上面的命令告诉 apt 修复 (-f) 缺少的依赖项并完成安装。
在我的 Ubuntu 机器上,Inform7 在我的“应用程序”>“编程”菜单中放置了一个启动器。或者,您可以使用“gnome-inform7”从终端启动该程序。
使用 Gnome-Inform7 创建一个简单的游戏
为了让您体验一下创建文字冒险的感觉,我将逐步介绍一个简单游戏的创建过程。好吧,“游戏”这个词可能太强烈了,但它是一个功能齐全的示例。为了充分利用它,请安装 Gnome-Inform7 并跟随操作。
当您第一次启动 Gnome-Inform7 时,它会提示您打开现有项目、打开您上次打开的项目或创建一个新项目。
程序中存在一个错误,阻止您从此启动画面退出 Gnome-Inform7(例如,如果您不小心启动了程序)。绕过此错误的唯一方法是终止程序(通过 kill 或 xkill 命令)或选择其中一个选项并继续操作,直到主界面打开,然后您可以正常退出。这是一个恼人的错误,但它是我在使用 Gnome-Inform7 时遇到的最糟糕的错误,而且它很容易解决。
创建新项目时,有四种不同的项目类型选项:Inform7 项目、Inform7 扩展、空的 Inform6.3 项目或带有一个房间的 Inform6.3 项目。这两种 Inform6.3 项目类型现在只是占位符,因此唯一的真正选项是两种 Inform7 项目类型。
对于我的示例项目,我们将选择 Inform7 项目并单击“前进”按钮。在 Inform 7 项目窗口中,然后选择要保存项目的位置、项目的名称以及作者的姓名。我将项目命名为“服务器机房”。您可以随意将其命名为您想要的任何名称。
单击“应用”按钮后,Inform 7 集成开发环境将出现。
当新项目最初保存时,Gnome-Inform7 会创建一个项目目录,该目录的名称与您的项目名称相同,并带有 .inform 扩展名。此目录内部是您的游戏的实际源代码(“Source”子目录中的 story.ni 文件)以及 Gnome-Inform7 使用的其他各种文件。
Gnome-Inform7 IDE 分为两个窗格。每个窗格的选项卡是:Source(源代码)、Errors(错误)、Index(索引)、Skein(线索)、Game(游戏)、Documentation(文档)和 Settings(设置)。默认情况下,“源代码”显示在左窗格中,“文档”显示在右窗格中。您还可以更改每个窗格的相对宽度。
要了解每个选项卡的用途,请查阅 Inform7 文档。Gnome-Inform7 中内置的文档非常出色 --- 其中包含大量示例和教程,涵盖了创建互动小说的各个方面。
在源代码窗格中,如果您正在跟随操作,您会看到已为您插入了第一行代码。它应该显示为“
“服务器机房”,作者:“您的姓名”
“游戏名称”作者:“作者姓名”行是每个 Inform 7 游戏的开头,在此行下方,我们将为我们的游戏设置一些选项。
第一个是包含一个扩展,以便我们能够轻松地根据 GPL 许可协议许可此游戏和任何未来的游戏。扩展是 Inform7 的重要组成部分,Gnome-Inform7 中内置了几个扩展。要查看安装了哪些扩展,请单击“文档”选项卡中的“已安装的扩展”链接。不幸的是,GPL 扩展默认情况下未包含在 Gnome-Inform7 中。要安装它,我们首先必须从 Inform 网站的扩展页面下载该扩展
http://inform-fiction.org/I7/Download%20-%20Extensions.html
GPL 扩展位于“发布”部分。单击扩展名称旁边的小图形,扩展的源代码将显示在您的浏览器中。将该文件保存到您的桌面或您选择的其他位置。该文件应命名为“GNU General Public License v3”,并保存为纯文本文档。然后,从 Gnome-Inform7 中,从文件菜单中选择“安装扩展程序...”,导航到您之前保存的文件并打开它。然后,该扩展将被安装,并将显示在 Inform 7 首选项窗口(可以从“编辑”菜单访问)的“自然 Inform 扩展”部分中。您手动安装的任何其他扩展也将在此处显示。
不幸的是,在我下载的扩展版本中存在一个小小的拼写错误。不过,修复起来很容易。首先,我们需要通过从“文件”菜单中选择“打开扩展程序”并选择扩展程序来打开该扩展程序。打开后,搜索以下行
GNU General Public License v3 by Free Software Foundation ends here.
删除该行中的“by Free Software Foundation”部分,使其变为
GNU General Public License v3 ends here.
保存文件,扩展程序现在将正确编译。
要将扩展程序包含在我们的示例游戏中,请输入以下行
Include GNU General Public License v3 by Free Software Foundation.
接下来,我们将对我们的世界进行一些修改
最高分数为 6 分。
将“lift [something]”理解为 taking(拿取)。将“steal [something]”理解为 taking(拿取)。
第一个设置最大可能分数为 6 分,下一个定义了“take”(拿取)动作的几个同义词。
现在让我们放入一些风味文本,以便在游戏开始时打印出来
当游戏开始时,说“今天是星期六,天气不错,你被叫来修理一台坏掉的服务器。[粗体]又是这样。[罗马字体]
你受够了。从今天开始,这台服务器将运行 Linux!过程很简单 - 只需将光盘放入服务器即可。现在,那张定制的 Ubuntu 光盘在哪里?”
基本上,上面的代码打印出少量文本,为游戏“设定舞台”。在某些游戏中,这些部分很长,在其他游戏中则不是很长,或者根本不存在。现在不要担心 [粗体] 和 [罗马字体] 标签,我们稍后会介绍它们。
我们现在准备创建我们的第一个房间。在互动小说中,游戏世界是根据“房间”以及它们如何连接在一起定义的。在本示例游戏中,有五个房间
绿色房间是玩家实际可以进入的房间,灰色房间是技术上存在但我们不允许玩家进入的房间。最好始终草拟出您的房间如何连接在一起,以便您在编写时可以参考它。
这是玩家将开始所在的房间
休息室是一个房间。描述是“您的标准休息室。一个冰箱和一个长柜台占据了一面墙。东面是外面的世界,西面是通往服务器机房的走廊。”
正如您可能从我们到目前为止输入的代码中注意到的那样,Inform 7 代码以自然语句的形式输入。这是为了帮助使编写互动小说尽可能类似于编写普通的非互动小说。它并不总是能成功,但一旦您掌握了基本规则,用 Inform 7 编写就会变得非常自然。事实上,当我想在 Inform 7 中做一些我以前没有做过的事情时,我经常猜测“代码”应该是什么,而且通常猜测会奏效,如果不行,错误消息也会提供信息,并且文档只需单击一下即可获得。
我们现在处于编写此示例的某个阶段,我们可以测试我们目前所拥有的内容。为此,请单击“运行”按钮。假设没有拼写错误,代码应该会编译,并且“文档”窗格应该会自动切换到“游戏”窗格。
由于只有一个房间,您哪里也去不了。要测试这一点,请在提示符下键入“go north”(向北走)(或仅键入“north”(北)或“n”)。游戏应该回复“You can't go that way.”(你不能往那边走。)您也可以尝试所有其他罗盘方向(东、西、南、东北等等),并尝试向上和向下走。您在每次尝试中都会失败,但这确实说明了 Inform 如何使事情变得更容易 --- 在您做任何事情之前,已经有很多内置的行为和动作(所有这些您都可以更改)可以随时使用。
我不喜欢把游戏留在这样的未完成状态,但是我们的时间到了。别担心,下次我们将充实这个世界,添加一些物体和更多的房间,并使这个游戏可以获胜。
“冒险”的历史
http://www.rickadams.org/adventure/a_history.html" target="_blank"
Infocom 的历史
http://www.infocom-if.org/company/company.html
互动小说维基百科条目
http://en.wikipedia.org/wiki/Interactive_fiction
Inform 网站
http://inform-fiction.org
下载 Inform
http://sourceforge.net/project/showfiles.php?group_id=179857