然后,他开始着手绘制两艘飞船的形状:两者都是经典的卡通火箭飞船,顶部是尖头,尾部装有一套尾翼。为了将这两艘飞船区分开来,他将其中一艘做成胖乎乎的雪茄形状,船体中部鼓起,而另一艘的形状则像一个细管。拉塞尔使用正弦和余弦例程计算出如何将这些形状向不同方向移动。然后他编写了一个子例程,实现用计算机上的开关控制从火箭鼻翼射出“鱼雷”(一个点)。计算机会扫描鱼雷和敌方飞船的位置,如果二者处于同一个区域,则程序会调用一个子例程,将这艘不幸的飞船替换为随机飞溅的点,这表示爆炸。(这个过程叫做“碰撞检测”。)
所有这一切实际上都是迈向更为复杂的“实时”编程的重要概念步骤,也就是把计算机上发生的情况与人工实际操作对应起来。在另一种意义上,拉塞尔正在效仿的是黑客所倡导的在线交互式调试风格——可以自由地查看哪条指令让你的程序停止,并用开关或电传打字机加入不同的指令,而与此同时,程序依然在DDT调试器中运行。《太空大战》游戏本身是计算机程序,它有助于表明所有游戏(也可能是所有其他的事情)是如何像计算机程序一样工作的。如果你走了一点弯路,就可以通过修改参数来修复问题。可以输入新的指令。同样的原则也适用于目标设计、国际象棋策略和MIT课程作业。计算机编程不仅仅是一种技术上的追求,更是解决生活问题的途径。
在之后的编程阶段中,桑德斯开始协助斯拉格.拉塞尔,他们会一起进行6~8个小时的高强度工作,如此往复几次。在1962年2月的某一天,拉塞尔揭开了这个最基本游戏的面纱。游戏里有两艘飞船,每艘配备了31发鱼雷。屏幕上有一些随机的点代表着这个星球战场上的星星。可以扳动PDP-1控制台上的4个开关来操纵飞船,这4个开关分别代表顺时针旋转、逆时针旋转、加速和发射鱼雷。
斯拉格.拉塞尔知道,展示这个游戏的简陋版本,然后将记录程序的纸带扔到放置PDP-1系统程序的箱子里,意味着他欢迎其他人主动提供程序改进方案。《太空大战》不是普通的计算机模拟程序——你可以成为真实的火箭飞船宇航员。这就像是真实生活中的多克。史密斯。但是,拉塞尔开发这个程序所利用的力量(PDP-1给予程序员来创建他自己的小型宇宙的力量)同样也可以被其他黑客使用,他们可以自由地改进斯拉格.拉塞尔的宇宙。他们立即就开始这么做了。
看看黑客们对斯拉格.拉塞尔为鱼雷使用的初始例程作何反应,你就会知道黑客们想对这个游戏做些什么改进了。拉塞尔知道实际生活中的军用武器并不是尽善尽美的,所以他认为应该让鱼雷符合现实情况。他没有让鱼雷在失去动力并爆炸前沿着直线前进,而是在鱼雷的方向和速度中加入了一些随机变量。但是黑客们不但不欣赏这种逼真效果,还公开指责它。他们喜欢可以平稳运行的系统以及可靠的工具,所以如果让他们使用无法正常工作的东西,会让他们发疯的。后来,拉塞尔明白了:“不那么值得信任的武器或工具是不会被珍视的——人们真的希望能够信任他们的工具和武器。在这个游戏中,这是显而易见的事实。”
这当然可以很容易地修复。由计算机程序创造出来的世界比真实世界更具优势的地方就是,对于像有缺陷的鱼雷这样可怕的问题,只要修改几条指令就可以修复了。
这也是那么多人很容易痴迷于黑客技术的首要原因!于是,鱼雷问题被修复了,黑客们花很多时间在外太空决斗,并且会花更多时间尝试着完善这个《太空大战》的世界。
例如,彼得.萨姆森很喜欢《太空大战》的想法,但是无法容忍随机生成的点在天空中自行转移。在现实的太空中,星星都有自己固定的位置。“我们要制造出真实的事物。”萨姆森发誓。他找来一本厚厚的宇宙地图册,并开始将数据输入到他编写的例程中,这个例程可以生成真实的星群,也就是在晴朗的夜空中站在赤道地区可以看到的星群。最暗到5级星的所有星星都可以显示出来。萨姆森通过控制计算机点亮屏幕上代表星星的点的频率来复制它们的相对亮度。他还将程序设置为随着游戏的进行,天空会壮丽地卷动——在任何时间,屏幕均会显示45%的天空。除了增加了逼真效果,这个“昂贵的行星仪”程序还为火箭战斗机提供了可在地图上标识的背景,以便测量位置。用萨姆森的话说,这个游戏可以真正称为“Shootout-at-ElCassiopeia”(仙后座的枪战)了。
另一个程序员丹。爱德兹则对这两艘交战飞船不固定的移动表示不满,这让游戏成为了仅对驾驶技术的测试。他认为应该添加一个重力因素,作为游戏的一个策略。于是他在屏幕的中心编写了一个中心星体——太阳。在环绕太阳飞行时,飞船可以靠太阳的万有引力来加速,但是,如果不小心离太阳太近了,你会被拉向太阳,那么你的飞船将必死无疑。
在这种变化的所有策略被采用之前,“海厄姆学院”三人组中的萨格。盖瑞茨为游戏设计了一种通用的功能。他在多克。史密斯的小说中读到过,太空飞车手如何通过“超空间管”让自己脱离一个星系,然后被扔到“异常神秘的第N维空间”。因此,他在游戏中添加了“超空间”功能,允许玩家按动紧急按钮将自己快速移动到这个超空间,以避免可怕情况的发生。在游戏过程中,你可以进入超空间三次,缺点是你永远不知道会从哪里出来。有时,你会重新出现在太阳旁边,只来得及看到自己的飞船被无望地拉向太阳表面,早早地一命呜呼。盖瑞茨非常欣赏马文.明斯基最初设计的显示功能,因此他以同样的方式编写了超空间功能:进入超空间的飞船会留下“弯曲诱导光子压力排放标志”——也就是遗留下来的光点集,通常是Minskytron显示结果所形成的形状。
变化是无穷无尽的。交换几个参数,就可以将这个游戏转换为“液压太空大战”,即鱼雷连串地射出,而不是一个接一个地发射。或者,在夜越来越深后,人们被困于星际模式,有人可能会喊道:“让我们启动‘太空风云’!”于是可能会有人设计出变形因子,强迫玩家在每次移动时做出调整。尽管黑客们所希望的改进都会受到欢迎,但是未经宣布即对游戏做出奇怪的修改是一种非常不好的行为。黑客道德(鼓励亲自动手改进程序,而不是破坏)不允许这种恶作剧式的行为发生。总之,这些黑客已经参与了对系统难以置信的调整——他们使用昂贵的计算机玩着世界上最荣耀的游戏!
黑客疯狂地玩着《太空大战》。对某些人来说,它就像毒品一样让人上瘾。尽管没人能够正式地预约PDP-1的时间段用于《太空大战》,但是这台机器的每一个空闲时刻似乎都在运行这个游戏的某个版本。黑客们会手里拿着可乐(有时还准备着钱),参加马拉松式的比赛。最终,拉塞尔编写出了可以保留得分的子例程,能以八进制(那时,所有人看一眼就能读出这个八进制的数字系统)显示获胜的比赛总分数。现在暂时的主要缺点似乎是操纵PDP-1控制台上的开关不那么舒服——每个人都肘部酸痛,因为他们要让自己的胳膊保持着某种角度。于是有一天,考托克和桑德斯来到了TMRC娱乐室,在这里找了些零部件(这些零部件后来被做成了世界上第一个计算机操纵杆)。他们完全采用散落在娱乐室各个地方的零部件来制作,共花了一个小时的时间将这些零部件组装在一起,做出了操纵盒。操纵盒由木头制成,盒盖是绝缘纤维板。操纵盒上有用于旋转和推动的开关以及一个进入超空间的按钮。当然,所有的控件都是无声的,这样,如果你愿意,便可以悄无声息地盘旋在敌人身旁或进入第N维空间。
《太空大战》热闹的编程阶段逐渐淡去,一些黑客对其失去了兴趣,而另一些黑客则具备杀手般敏锐的直觉,想要设计策略来摧毁对手。大多数对战在头几秒钟即会分出胜负。瓦格纳逐渐擅长于“静止等待”策略,即保持静止不动,等待引力驱使你围绕着太阳转动,然后直线冲出,开始用鱼雷向你的对手狂轰滥炸。还有一种变化叫做“C B S开局”,你可以选择射击角度然后绕着太阳旋转。这个策略之所以如此命名,是因为当两个太空大战的斗士都试图如此操作时,会在屏幕上留下酷似CBS眼睛徽标(哥伦比亚广播公司的眼睛图标)的图案。桑德斯非常看重他的《太空大战》,他使用了一个修改后的C B S策略在比赛中保持优势地位——有段时间,他是无敌的。但是,在这样一种王者的竞赛中,即使是最好的太空战士,在保护其领地20分钟后视线也会变得有些模糊,并减慢操作速度,而大部分的人会在此时获得机会,以有效的方式进行太空大战。彼得.萨姆森是仅次于桑德斯的太空战士,某个晚上,他在返回位于洛厄尔的家时意识到了他对这个游戏的痴迷。他走出列车,抬头凝视一望无云的清澈天空,一颗流星飞过他的头顶,飞船在哪里?萨姆森这么想着,立即转回头,抬手想要抓住控制箱,却抓了个空。