史上最困难的电脑游戏
英文原文:The Hardest Computer Game of All Time
游戏的名字叫“Robot Odyssey”,我花了 13 年的时间才通关,而且它还让我开启了程序员的职业生涯。
我的第一台电脑是 Apple IIe,它有 128K 的内存,没有硬盘,只有一个 5.25 英寸的软驱。当时最流行的益智游戏之一是“Rocky’s Boots”,一个教孩子们基本的逻辑知识的发明类游戏。在我 6 岁的时候,我非常喜欢这款游戏。2 年后,我得到了“Robot Odyssey”这款游戏,它宣称扩展了“Rocky’s Boots”的基本玩法,把简单的逻辑变为真实的编程。这款游戏彻底蹂躏了我,我根本无法理解如何去破解游戏中的难题。我在没有任何帮助下,直到 13 年之后才终于通关了。
让我来说明一下:任何小孩,只要能够通关这款游戏,当然前提是通关时他还是个小孩(据我所知,唯一一个还是我所认识的最聪明的程序员),就可以 保证能够成为一名软件工程师。顺带提一句,任何成年人,谁能够通关这款游戏就可以去当一名工程师了。“Robot Odyssey”是有史以来最他妈难的益智游戏。同时它也是一个令人惊艳的技术成就,也是 Apple IIe 上最具创新性的游戏之一。
渐渐的,这样荒谬的游戏难度吸引了一大批追随者。这个是我童年记忆最清晰的游戏。它也是我最喜欢(也最绝望)的游戏,因为它是如此的困难,复 杂,充满挑战。它展现出来的世界就好像是在面对柏拉图形式理论一样,是一个秘密,是非物质的纯粹逻辑和思想。这个游戏的挑战,同时也是一个最大的困难,在 于去理解那个游戏里的世界。程序员 Thomas Foote 在他刚上大学的时候开始玩这款游戏:“我真想杀了自己”,他告诉我,“我对上帝发誓,我一定要在大学毕业之前通关这个游戏。最后我办到了,但是非常悬。”
Programming in your pajamas:the simulation.
在“Robot Odyssey”里,你扮演一个角色进入了梦境里的神秘城市 Robotropolis。在城市里有 5 个难度递增的等级供选择,通关后你才可以回到家。这里是对这 5 个等级的难度的一个粗略估计:
1、下水道:中等
2、地铁:挑战
3、城镇:非常难
4、主控制中心:不可能
5、天空:不可能
Robotropolis as rendered by Gil Morales.
在我年轻的时候,我完成了前三个难度,但是我以及我的小伙伴们都在第四个难度被卡住了,跟它比起来,前面三个难度简直就好像是算术跟代数的区 别。(就像 Thomas Foote 说的那样,“我被这一个等级卡了整整一个大学。”)第五个等级就像传说一样,通过根本就是做梦。在那个年代,还没有因特网,如果你不是在硅谷的话,想找到 别的玩过这个游戏的人都非常困难。这个游戏成为了我的“复仇者”,一段我内心纠缠不下的记忆。给你描述一下你就懂了,在我用 BASIC 和 Pascal 编程很多年之后,我还是不能通关第四个难度。
这个游戏给那些玩过的人带来了深刻的影响。我的小弟弟,跟我的妹妹和我一样,都被这个游戏给难住了,他告诉我,“这个游戏就是他走上程序员道路 的开始”。即使有那么多人被卡住了(事实上所有人都被卡住了),这个游戏带给玩家的新思想和新概念是其他游戏所不能比的。“One Girl, One Laptop”公司的游戏开发者以及硬件黑客 Quinn Dunki 写了著名的游戏“Gate”,而它继承了“Robot Odyssey”的许多思想并用了很多相同的概念。科技法学教授 James Grimmelmann 告诉我,“Robot Odyssey”这款游戏是他游戏生涯中“阴郁的十年”,在完成任何一个难题时都产生一种巨大的成就感——“这也是我喜欢编程的最大原因。”
在 2004 年,程序员/音乐家/黑客 Joan Touzet 用这款游戏来教中学生如何编程。Thomas Foote 是如此的执着于这个游戏,他在一个小但是专业的俱乐部的支持下,花了好多年,用 Java 重新实现了这款游戏。(他是成功通关,并取得 Learning 公司认证的第 34 个玩家。)Foote 把它的 Java 版本叫做“DroidQuest”,并且这也是今天能够玩到这款游戏的最简单的方法。
It’s an accomplishment.
软件工程师 Micah Elizabeth Scott,把这个游戏移植到 NDS 上,他告诉我,“Robot Odyssey”这个游戏对于塑造他后来的人生扮演了一个重要的角色,并且强调这款游戏是一件多么独特的作品,“通过这款游戏,你能够看到这个人,或者是 这个制作团队的风格,他们通过合作的方法,用高度的抽象来使得游戏中的一切井井有条。”
在那个早期的消费软件时代,这个游戏的诞生绝对是一次自由意志的尝试。Learning 公司除了做出“Robot Odyssey”之外,还制作了一系列经典游戏,像“Rocky’s Boots”、“Reader Rabbit”、“Gertrude’s Puzzles”,这家公司是由 4 名美国国家科学基金会资助的,对软件感兴趣的教育家成立于 1980 年,他们分别是:Leslie Grimm,Ann McCormick,和 Teri Perl,以及 Warren Robinett(他是世界上第一个创造复活节彩蛋的人,他在游戏“Atari’s Adventure”的一个秘密房间中隐藏了他的名字)。这家公司是一家非典型的公司,它关注益智类游戏,同时还由女性领导。Grimm 和 Robinett 设计了 1982 年的“Rocky’s Boots”游戏,游戏教孩子们学习与非逻辑门,并且抓住了我 6 岁时的心,Grimm 同时也是“Robot Odyssey”的作者之一。后者是一名 22 岁的斯坦福大学本科生 Michael Wallace 的心血结晶。
The game taunts you.
Wallace 告诉我,写这个游戏是他一生中最美好的时光。他原本只是 Learning 公司的一个客服,通过看 Robinett 写的“Rocky’s Boots”的代码,他自学了在 Apple 6502 上用汇编编程。在 Robinett 离开公司之后,Wallace 扩展了 Robinett 的代码,构成了“Robot Odyssey”底层架构,包括游戏中令人眩晕的,把电路嵌入电路的能力的开发。完成这些并不是一件容易的事;Wallace 认为这是创造艺术的过程。那时他每周工作 100 小时,当 Teri Perl 向传奇计算机科学家 Alan Kay 介绍这个项目的时候,Alan 说,“你这是在浪费你的时间。这不可能被完成”。他这话的意思是,在一台苹果家用机上运行这么复杂的程序是不可能的。当“Robot Odyssey”横空出世后,公司给了 Wallace 一块牌匾,上面写着,“这不可能被完成。——Alan Kay”。
在得到斯坦福的生物学博士学位后,Leslie Grimm 在她女儿的学校做志愿者的时候,开始对计算机潜在的教育用途产生了极大的兴趣。除了掌管整个项目外,她还负责“Robot Odyssey”的一部分工作:Robotropolis 的 5 个等级以及 3 个教程(在 1.1 版本中被扩展到 5 个教程,为了让游戏对玩家来说更容易一点)。这 5 个不同的游戏等级是由 5 个不同的个人单独创作的。我必须要指出,16 岁的高中生 Shaun Gordon 设计了恶毒的第四个等级,“主控制中心”是我和许多玩家的滑铁卢。
Wallace 在开发这款游戏的时候一直都非常忙,以至于直到游戏完成,他都从来没有玩过。我问过他,是否某天他会试试,他告诉我说,“这也许会花掉他好几年的时间”。他不确定在 Learning 公司里是否有人能够单独通关这款游戏!
为了解决游戏中的难题,你会获得 3 个(最终将是 4 个)机器人伙伴帮助你连线或者编程。从下面这张图中可以看到,从左到右,它们分别是 Sparky,Scanner 和 Checkers。它们能够移动,探测墙壁,拿起或是放下物品,以及和别人对话。
Sparky,Scanner,and Checkers:they are yours to command (and scream at).
我上面提到的编程的意思,是比敲电脑代码更加原始的东西,甚至比汇编相对计算机运行来说更加底层的东西。我的意思是构成芯片内在的逻辑门(与, 或,非)。与其说“Robot Odyssey”在玩编程,不如说它是在玩电子工程。你用来编程的东西是最基础的东西。你有的是电流通过导线和逻辑门的电路。这些逻辑门构成了布尔逻辑的 基础操作。
Simple,right?
布尔逻辑其实十分简单。它就是两个相对的值,通常称为“是”或者“否”(如果用作逻辑判断的话),但是因为我们这里讨论的是电路,所以它们被称 为“正”和“负”比较好一点。游戏里的机器人拥有推进器帮助它们移动。举个例子,如果你通过一根标记为“正”的导线向机器人推进器输入电流,那么推进器将 会被打开并使机器人移动。除此之外,还有一类逻辑门来使电性相反。一个非门拥有一根进导线和一根出导线,它的作用就是颠倒输入导线的电性。如果输入的导线 标记为正,那么在输出端就不会有电流。如果输入的导线标记为负,那么它就会在输出端就会输出电流。
A “wall hugger” robot.The actual logic is embedded “inside” the blue “2″ chip.
通过使用这些以及另外的一些逻辑门,你必须动用机器人完成一些简单的任务,但是随着游戏的推进,任务将会变得越来越复杂。
Eric Welsh’s circuit that “plays” a 100110 pattern on the antenna.
当任务变成需要你用一个机器人通过一根只能发送正负信号的天线,向另一个机器人发送信号来使它移动的时候,这些逻辑门有限的功能就不够看了。可笑的是,这些逻辑门并非是功能不强,只要有足够的组合,这些小小的逻辑门能够做到任何事情。但是这需要大量的思考。
让这些简单的逻辑门来完成复杂的编程让我的大脑都快烧掉了。为了解决游戏中的难题,我儿时的脑袋,还不足以完成从这些简单的逻辑门到复杂的控制 系统的思维跳跃。为了让你实现控制系统,游戏提供了把电路制成芯片的能力。下图就是一块芯片,用到了大量的或门,这是为了……,好吧,我不会再多看它们一 眼了。
Inside a chip:Fun for the whole family!
关键在于,这些简单的逻辑门通过足够的组合和设计,可以实现异常复杂的东西。这就是所谓的计算机编程了,使用原始的操作来实现非常复杂的架构。 对于 Foote 来说,这个游戏的基本诉求和数学以及计算机科学的基本诉求是相同的:“这个世界是逻辑的,并且是由简单的规则搭建起来的。通过如此简单的规则可以实现如此 复杂的世界。”
尽管游戏的续集从来没有出现(原来的包装盒上印着这个游戏是“Robot Odyssey I”),但是它还是赢得了各种奖项并且在《Scientific American》杂志上有一篇专门报导。这款游戏带给了 Wallace 在苹果粉丝团中极高的知名度,并且让他得到一次在帕罗奥多研究中心做演讲的机会,他随后又继续设计了一些电子玩具,包括“Nintendo Power Glove”,现在他拥有自己的公司“Pure Imagination”。Grimm 一直待在 Learning 公司并开发了许多游戏,包括非常成功的“Reader Rabbit”,最近她正在开发供耳聋儿童使用的教育软件。
“Robot Odyssey”绝对的复杂度使它成为了今天沙盒类游戏的精神鼻祖,比如说“Minecraft”。它可能导致了数百人从此成为了程序员,而且看起来这个 数量还要更多。我在这里发起一个关于“Robot Odyssey”的挑战:正在看这篇文章的读者,谁第一个通关“Robot Odyssey”,并把游戏文件发送给我作为证明,将会获得一个 Learning 公司“Robot Odyssey”通关证明的仿制品。只有第一个完成并且没有查看攻略作弊的玩家才能够得到哦!
提示:
1、如果你停止向导线通电流,那么机器人的推进器将会被关闭,然后机器人就会停止移动。
2、一个与门有两个输入端一个输出端,如果两个输入端都为正,那么输出就为正,否则没有电流输出。一个或门想要输出电流,它的两个输入中至少有一个为正。一个异或门想要输出电流,则它的两个输入必须只有一个为正,一个为负,当两个输入相同时,则没有电流输出。
3、这里有一个简单的例子。如果你想要使机器人向上移动,则必须使机器人天线接收到正信号才行(也就是天线为正),当天线没有接收到信号(也就 是为负),机器人就向下移动。你把天线的输出端连到 UP 推进器上,这样当天线接收到正信号时,UP 推进器被打开,反之亦然。你同样可以把天线的输出端连到 DOWN 推进器上,但是在前面再连一个非门,这样就改变了天线的输出。所以,当天线接收到正信号时,DOWN 推进器就被关闭了,反之亦然。