- 《ROCKET》,又名《Lunar Lander》(《登月舱》)
- 制作者:Jim Storer
- 发布日期: 1969年秋 (FOCAL原版);1970年1月 (《DECUS程序指南》(DECUS Program Guide);1972 (《EDU速报》(EDU newsletter));1973 《电子游戏经典101》(101 BASIC Computer Games)
- 编码语言: FOCAL (1969); BASIC (1972)
- 平台: PDP-8
开场白:
1969年7月20日,阿波罗11号的登月舱“老鹰”(Lunar Module Eagle)降落在月球表面,落地过程惊险异常。在燃料告急的情况下,驾驶员阿姆斯特朗(Neil Armstrong)突然遭遇预料之外的岩石和陨石坑,他堪堪避过它们,勉强找到一处平面降落,这时的LEM早已偏离预计的降落地点。这架精贵的宇航器最终安稳地落在月球土地上之时,燃料箱中只剩个位数秒的燃料。同一时间的马赛诸塞州,17岁的Jim Storer在电视前忘神地目睹了全程。那年秋天,他向老师提出一个项目,要用到Lexington高中的PDP-8电脑——他准备制作一部游戏,重现LEM登月的过程。
PDP-8,由迪吉多公司推出的一款迷你电脑,第一款成功商品化的迷你电脑,个人电脑的先驱。
Storer没有给游戏起正式的标题,但程序名恰好符合运行系统对文件名的六个字符的限制——“ROCKET”。程序使用了39行FOCAL代码,十分紧凑,FOCAL
这个语言的设计初衷就是为了方便学生编程,但它在与同类语言BASIC的竞争中迅速败下阵来,因为后者的语法更清晰。玩家在游戏中接收一排排数据,一次一行,显示出经过的时间、高度、速度和模拟登月舱的燃料使用情况,每一回合,程序需要经过运算,给出最右一项的数字,表示着下一个10秒内要消耗的燃料量。
玩家需要在通过分时系统在电传打字机上游玩《ROCKET》,机器的打印速度很慢,并且每轮都要花上几秒时间才能计算出最后那个新的燃料消耗率,所以的确会给人一种在实时登月的错觉。当时阿波罗计划仍然是社会热点话题,所以那时候的玩家很容易便能自行想象出来自那种指挥中心的指示和航天术语交织在一起的背景声,屏幕上的数字立即生动起来,仿佛真在进行一场刺激的外太空探险,就像电视上正在重播的那样。
要赢下这个游戏还是很难的,玩家面临的挑战和宇航员阿姆斯特朗当时面临的非常相似,当然,肯定也简化了许多:玩家必须在燃料耗尽之前控制住登月舱的落体速度,安全落地。如果玩家太过小心,月球的引力会让落体速度逐渐增加,超过引擎的控制范围。如果玩家太激进,那么燃料可能提前耗尽,登月舱会令人绝望地坠落在月表。两种情况都会导致悲剧。
与《俄勒冈道》以及其他同时期的游戏类似,《ROCKET》本质上是一个数学性的模拟器。但这几乎完全由加速度、惯性和力组成的冰冷严峻的数学造成的戏剧感,指向了人类史上一个重要的篇章。
尽管核心流程完全由数字主导,但Storer为了激发玩家的想象,设计了恰到好处的文字构架,让玩家感觉自己的打字机仿佛的确连接着某个远程控制中心。游戏以指挥中心呼叫登月舱开场,而玩家选择退出时,程序则礼貌地结束于指挥中心通话完毕。另一个带着人文关怀的设计是,如果落月任务失败,登月舱坠毁,那么程序会用撞击速度折以一定比例换算成冲击坑的深度,当作小小的安慰,以免玩家在公用的临时“计算实验室”里丢了面子:总之,它让失败变得可以被打趣和吹嘘。
程序用到的数学是很准确的。Storer在老师和工程师父亲的帮助下,只用了寥寥数行精简的 FOCAL 代码便实现了用于计算加速和力的方程式。FOCAL 是门从未在 PDP 生态之外流行过的过渡性语言,它的一些特性(诸如单个字母既可当作变量名,也可以当作函数的缩写)混合上本来就令人头皮发麻的微积分方程式,让《ROCKET》的源代码如同天书,只有接受过相关训练的人能够理解:
1970年初,Storer把他的程序交给了 DEC,就是他学校里那台PDP-8的生产厂家,DEC将他的程序收录进了面向消费者的目录,即《DECUS 程序指南》(DECUS是“DEC用户联盟”(DEC Users' Society)的缩写 )。《ROCKET》完美赶上了两股时代思潮的交汇:阿波罗计划与计算机。Storer的程序在其后的 18 个多月里被无数次克隆、调整、改进和重构,1972 年初的《DECUS指南》给它写的推荐词是“出类拔萃的阿波罗模拟游戏,几乎接入过全国上下的所有分时系统”。这些同类的阿波罗模拟程序有些是独立制作的,有些则完全重写自Storer。但令人吃惊的是,有很多则是赤裸裸地对原版ROCKET的山寨,这很大程度上是因为在1972 年,ROCKET登上了读者众多的《DECUS指南》。
1969 年,教育心理学博士候选人 David H. Ahl进入DEC,主管教育类市场部门。冗长的《DECUS 程序指南》收录着很多教师和学生可能感兴趣的程序,但这些程序被上百个顶着诸如 "PDUMP——基于 DOS 的寄存/核心转储"或者"核心加载至 MAINDEC TAPE"这样听着有趣、实则令人乏味的工具类和演示类程序淹没。Ahl的倡议之一就是建立一个专门面向教育用户的免费新闻速报,他称之为 EDU。
他为其策划了满满当当的内容,包括将计算机引入课堂的教学计划、建议和成功案例。每期都刊出一个列表,收录一些用 BASIC 编写的程序,而 BASIC 则是DEC为他们的教育平台一步步确定下的语言标准,为的是让用户们可以在大型机上打字和运行程序。但这意味着 Ahl 需要在短时间内编写或者收集很多有趣的 BASIC 程序。除了鼓励通过邮件投稿代码之外,Ahl 还遍历了包括 DECUS在内的很多有趣的源码合集,来寻找适合刊在EDU上的程序。东翻西倒之后,他找到了一个1964年的名为《苏美尔游戏》(The Sumerian Game)的实验性教学程序,曾由DEC的一位同事用 FOCAL重新编写过。Ahl再次将程序移植到 BASIC,并给它取了一个6 个字符的名字——HMRABA,或者Hamurabi,而它则注定将成为计算机游戏史上的又一传奇。
Hamurabi
Ahl 也发现了 Storer的登月程序,同样将其移植到BASIC。Ahl的版本保留了原程序的核心理念,润色了文字使其更易于理解,并精简了一些复杂特性,但也丢失了原版的一些魅力:那份仿佛在直接和指挥中心对话的幻想元素已经不存。不得不说 Ahl 为程序添加了一些他自己的幽默感,如声称 LEM 的机载电脑之所以出现故障,是因为“它不是电(Digital)做的”【指DEC(Digital Equipment Corporation)公司】。大概是为了教学用时更清晰直白,Ahl又做了一些简化,Storer原版成功着陆后会收到6种不同评价,而 Ahl 的移植版只有 3 种。
Ahl的修订版于1972年初登上EDU,当时EDU的读者群正爆炸性地增长。上一年秋天,第一期速报发布时,只有300名订阅者;但到了1972年底,它的读者已超过20000人。随着微型计算机的价格走低,以及私人和政府为计算机进入学校而拨出的大量赠款,学校对计算机相关内容的需求有了前所未有的增长。Ahl对《ROCKET》的宣传使它有了更多的用户,并带来了新一波的模仿、克隆和重制之作。
1972年后半年,随着阿波罗任务的结束,Ahl向DEC提出,想要挑选出EDU和《DECUS程序指南》中的最佳程序,把它们编成一本书。这就是1973年的《BASIC计算机游戏101》,后来成为早期计算机历史上最有影响力的书之一。这本书后来的再版,《BASIC计算机游戏》,成为史上第一本销量超过一百万册的计算机书籍。书中收录了Ahl的移植版《ROCKET》,以及另外两个版本:一个由Eric Peters设计,增加了一个简单的ASCII图表,以显示登月舱的高度;另一个是由William Labaree II设计的更复杂的版本,除了推力之外,玩家还可以控制燃油时间和角度。Ahl在为该书撰文称,《ROCKET》是当时“最受欢迎的电脑游戏之首”。到了20世纪70年代末,随着个人电脑革命的开始,成千上万的孩子和成年人在自己的家用电脑上输入ROCKET,想要体会阿姆斯特朗那段惊险刺激的着陆历程。1979年,雅达利公司发布了一个名为 "登月舱 "(Lunar Lander)的图形版本,这个名字代表了受《
ROCKET》启发的整个游戏子类型,并进一步巩固了ROCKET在计算机历史上的地位。
虽然在 "文字游戏 "的背景下讨论《ROCKET》可能显得很奇怪,因为其输出文本主要是数字,但是,它成功捕捉到了戏剧情景的临场性,甚至比《俄勒冈道》中的文字还要有效。在《ROCKET》里,玩家不像玩以前的大多数游戏那样,站在上帝视角观察一切,在几周或几个月的漫长时间里做一些事不关己的决定;进入了《ROCKET》的玩家将成为热锅上的的宇航员,响个不停的电报机打印出来的数字迅速减小,让人抓耳挠腮。游戏鼓励玩家想象自己就在那登月舱里,从这一秒到下一秒,全盘决定着这位虚拟英雄的生死。这是一种令人上瘾的沉浸感,未来的无数游戏都会努力在此基础上进行再创造和改进;《ROCKET》也是最早做到这一点的文字游戏:让玩家在千钧一发的危机时刻当中,扮演一位孑然一身的主角。
Jim Storer本人建立了一个网站,收集各类有趣的ROCKET相关信息,还有一份1969年的源码;也可以在这里直接游玩重制版。
本文作者:Aaron A. Reed,撰稿人,推特@aaronareed,已取得翻译转载授权,原文链接
翻译:@观乐 @丁Ding (感谢@丁Ding协助翻译!)