Zork和Z-Machine:开发人员如何将游戏从大型机转移到8位​​家用计算机


电脑游戏几乎和电脑本身一样存在。 尽管令人难以置信,但Zork文字冒险是那个时代的堡垒。 但是Zork还是更多。 为了便于携带和节省空间,Zork本身是用Zork实现语言(ZIL)编写的,该语言积极地使用了当时面向对象编程的全新概念,并在虚拟机中执行。 所有这一切都发生在1979年。 开发人员使用各种技巧将尽可能多的Underground Empire装入只有32 KB RAM的计算机中。 但是,Zork不仅是一项技术突破,而且是计算机游戏历史上的一个重要里程碑。 同时,他并非从零开始。


DEC PDP-10计算机倒装芯片模块

计算机革命始于第二次世界大战,并在50年代和60年代没有停止。 用于公司和大学的越来越多的可访问计算机系统出现在销售中。 麻省理工学院(MIT)计算机科学实验室(LCS)非常幸运,可以与ARPA紧密合作 ,后者为LCS和MIT人工智能实验室(以前是MAC项目的一部分)提供了重要的计算资源 ,主要由DEC PDP系统提供。

结果,麻省理工学院动态建模小组(LCS部件)的学生可以使用PDP-10 KA10大型机,这是当时功能最强大的机器。 尽管此特殊的PDP-10是1968年的原始型号,具有离散的倒装芯片晶体管模块和环绕式布线,但它进行了重大修改 :它增加了对虚拟内存和内存页面的支持,以扩展原始的1,152 KB内核内存。

麻省理工学院开发的运行不兼容分时系统 (ITS)操作系统的计算机是功能强大的多用户系统。

自然,它主要用于玩游戏。

您准备好冒险了吗?


1977年春季,麻省理工学院出现了一款名为“ 巨大洞穴探险” (简称“冒险”)的游戏。 该游戏是互动小说类型中的第一款计算机游戏,允许玩家在大型洞穴系统中进行文字之旅,据传该洞穴中藏有宝藏。 就像在“选择冒险”一书中一样,玩家做出了选择,这使他在洞穴的房间中移动,结果,他发现了宝藏并逃脱了,或者遇见了他过世的死亡。

受此游戏的启发,一群LCS学生意识到他们可以超越斯坦福项目。 Adventure的主要弱点在于它是用FORTRAN编写的,该语言并不以其出色的动态文本功能而著称,尤其是对于交互式小说类型游戏的需求。 本质上,Adventure完全是硬编码的,这限制了灵活性,并使游戏的可扩展性和支持变得复杂。

在Adventure中,每个房间都有一个数字ID,该ID与表中的描述相关联。 另一张桌子问她简短的描述。 在另一个表中,使用数字ID列出了房间相对于其他房间的位置。 这意味着要添加一个房间,您将必须手动编辑所有这些表,并且要小心,以免引起这些更改的问题。

黑客大赛



Dave Lebling利用当时在LCS和AI实验室中使用自然语言的经验,首先编写了一个简单的解析器,并为类似于Adventure引擎的游戏引擎奠定了基础。 为此,他使用了MDL派生的编程语言LISP。 得益于强大的自然语言处理能力, 马克·布兰克布鲁斯·丹尼尔斯蒂普·安德森根据Lebling的工作, 创建了第一款原型游戏,随着时间的流逝,它已成为当今我们称为Zork的游戏。

Zork的革命之处在于,与简单的Adventure命令(LAMP GET和GET LAMP是等效的)不同,由于MDL出色的自然语言处理能力,他可以处理整个句子。 他可以处理完整的句子,甚至可以将几个句子(团队)组合成一个句子。 强大的解析器的存在以及以面向对象的风格在MDL上为新房间建模的便捷性,意味着在编写解析器和游戏引擎之后,世界几乎可以无限扩展。

可以使用以下简单的代码来设置Zork中的房间:

 <ROOM "WHOUS" "This is an open field west of a white house, with a boarded front door." "West of House" <EXIT "NORTH" "NHOUS" "SOUTH" "SHOUS" "WEST" "FORE1" "EAST" #NEXIT "The door is locked, and there is evidently no key."> (<GET-OBJ "FDOOR"> <GET-OBJ "MAILB"> <GET-OBJ "MAT">) <> <+ ,RLANDBIT ,RLIGHTBIT ,RNWALLBIT ,RSACREDBIT> (RGLOBAL ,HOUSEBIT)> 

这将从游戏开始就设置“白宫”,以及从该房间退出,退出的特殊属性(例如,锁着的门)和房间中的对象。 这样可以确保房间的所有属性,包括其描述,简短描述,属性和标签,都将集中在一个地方。 然后,游戏引擎将能够切换房间的各个标签(位),存储所有房间及其当前状态的中央数据库。 使用游戏名称而不是表格中的数字ID来管理游戏设计创建过程中的房间连接。

大声打


可以说Zork在大型机上绝对很棒。 应其他感兴趣的游戏玩家的要求,将其移植到用于PDP-10的更常见的DEC TOPS-20操作系统。 尽管Zork开发人员非常慷慨,他们免费提供了该版本,但他们分发了加密的只读版本。 他们甚至将Zork源代码存储在ITS大型机上的安全文件夹中,为此他们必须修补完全开放且不安全的ITS大型机OS。


在世界计算机历史的现阶段,仍然有很多。 家用计算机的概念才刚刚出现:1977年出现了TRS-80Apple II这样的计算机,但与当时美国学生在玩文字冒险游戏的大型机相比,该系统也受到了极大的限制。 将像Zork这样的游戏(一个1 MB的可执行文件)移植到家用计算机的想法似乎还为时过早。

尽管家用计算机仍然很少见,但向普通消费者销售软件的概念仍然很新。 这是Atari 2600刚刚出现在零售市场上的时候,它推出了第二代游戏机,在该游戏机上,借助插入的墨盒,不仅可以玩一款游戏。 这是一个新的市场,这对麻省理工学院,斯坦福大学和其他教育机构的学生提出了许多问题 ,涉及黑客文化对商业软件世界的反对。 自麻省理工学院的学生时代起,一些人(例如Richard Stallman )就没有改变他们的信念。

当Zork的开发人员离开研究所时, 他们意识到游戏的成功掌握在他们手中:他们有机会将其商业化,从而将生活和职业推向相对于原始目标的全新方向。 因此,几乎没有丝毫阻碍,Infocom公司于1979年6月22日成立。

现在我们只需要移植它


将Zork从PDP-10大型机系统迁移到小型家用计算机上只有一个小警告:当时,Infocom没什么可卖的。 开发人员想出了各种游戏创意,可以将其应用于家用计算机上,但是主要价值是移植Zork。 他们只需要解决将1兆字节的MDL游戏代码转换为具有32 KB RAM(甚至更少)的RAM和微型驱动器的微型计算机的问题。

此外,他们不想将游戏分别移植到TRS-80,Apple II和新系统上。 如果您尝试使用现有的MDL代码怎么办? 这标志着后来被称为Z机的发展的开始。

当然,起初他们想解决Zork与微型计算机的兼容性问题,并通过删除内容来减少游戏量。 通过大量削减,他们设法接近了Adventure的规模。 然后他们对MDL进行了类似的操作,删除了Zork不需要的所有功能。 这就是Zork实现语言 (ZIL)出现的方式,他们可以轻松地将Zork与MDL移植到其中。 之后,ZIL编译器可以创建比MDL编译器小的可执行文件。

查看ZIL上的Zork黄铜灯笼说明,我们可以发现它比MDL更容易阅读:

  <对象灯笼
 (起居室)
 (SYNONYM灯泡灯笼灯)
 (辅助黄铜)
 (DESC“黄铜灯笼”)
 (国旗TAKEBIT LIGHTBIT)
 (行动灯笼-F)
 (FDESC“奖杯上有电池供电的灯笼
情况。”)
 (LDESC“有一个黄铜灯笼(电池供电)
在这里。”
 (尺寸15)> 


这当然很棒,但是仍然不允许在TRS-80上发射Zork。 当然,在此阶段,他们可以为每个平台编写ZIL编译器以及ZIL可执行文件,以在以后花费大量时间在每个目标平台上设置每个游戏。 但相反,他们决定编写一个虚拟机:Z-Machine。 实际上,它是直接支持ZIL二进制文件的基于文本的冒险游戏的理想平台 ,并且还实现了许多优化,其中最重要的是将字符打包为5位,类似于Bodo代码

由于所有这些优化,虚拟机和自己的编程语言,他们设法将Zork I的截断世界与一个解释器(虚拟机)一起放入77千字节的“历史文件”中。 由于仍然比流行的计算机多32 KB的内存,因此在虚拟机中实现了虚拟内存系统,其中仅将动态数据(变量)加载到RAM中,并在必要时从软盘读取所有静态数据(文本)。

展望未来



Apple II软盘的大小为140 KB,TRS-80磁盘的大小为180 KB,即解决了空间问题。 只有解释器必须针对目标平台进行优化,这意味着将来可以在Infocom发行的所有游戏中使用相同的解释器,而无需移植到单独的平台。 从Zork的大型机版本开始,他们还有很多内容。 他们准备好续集了。

继Zork I商业上的成功之后,开发人员继续生产从原始大型机版本切割而来的零件,形式为Zork II和Zork III。 年复一年,Zork I的销售持续增长,它成为必须购买的游戏,通常与新系统捆绑在一起。 开发了新版本的Z-Machine ,其中为更复杂的游戏添加了新功能。 如今, 我们仍然可以尽情享受 Infocom游戏,而不必担心兼容性问题:我们在MDL上发布了Zork源代码 ,以及其他经典Infocom游戏的源代码。 如果您很长时间没有玩过Zork,请尝试然后看一下游戏内部发生的情况。 可以毫不费力地说,一群来自1970年代美国大学的黑客很可能决定视频游戏和交互式故事讲述世界的未来。

Source: https://habr.com/ru/post/zh-CN479690/


All Articles