第 3 章
第3章 夜猫子与死线(约 1991 年)
约翰·罗梅罗把第五台电脑主机搬上卡马克那辆1982年产的丰田卡罗拉后座时,什里夫波特已经沉入了凌晨两点的湿热水汽中。卡马克站在副驾驶门外,手里抱着三台显示器中最重的那台IBM 8514,十四英寸的CRT球面屏,重量接近四十磅,他的眼镜片反射着公寓停车场唯一的钠灯,橘黄色的光把他的表情切割成明暗两块。罗梅罗后来会把这个场景称为“湖街大劫案”,但此刻没有人笑。他们已经在Softdisk的办公室里连续工作了十一个小时,完成了《玩家之刃》当月必须交付的两款游戏,然后等到整栋楼的人都走光,等到夜间保安完成第一次巡逻,才开始拆解工位上的设备。这不是第一次,也不会是最后一次。从九月到现在,他们进行了六次设备转移,每次搬运五台电脑、三台显示器、两箱软盘和至少一台点阵打印机。打印机最麻烦,针式打印头的震动会在深夜传出半条走廊,所以他们必须把打印机搬到公寓之后再运行任何需要硬拷贝的调试程序。
罗梅罗负责说服夜班保安,用的是那种从父亲那里继承来的加利福尼亚式微笑,配上含糊其辞的解释,每次都能奏效。卡马克负责计算时间窗口:保安换班在凌晨一点,巡逻间隔四十五分钟,如果他们在一小时内完成装车,就可以在保安第二次巡逻之前抵达湖街的公寓,把设备全部接好,然后在天亮之前拥有至少四个小时的连续编程时间。天亮之后他们需要再把这些设备搬回车上,在Softdisk正式上班前半小时运回办公室,重新接好每一根VGA线和每一个键盘接口,让一切看起来就像没有人动过。然后他们会在八点半打卡,坐在工位上,继续为《玩家之刃》编写下一款游戏,仿佛刚刚过去的那个夜晚只是做了几个清醒梦。这个循环已经持续了六周,从斯科特·米勒的第一张支票寄到的那天开始。杰伊·威尔伯在公寓客厅里接应。他没有参与搬运,他的角色是接线员,负责在设备到位之后用最快的速度把五台电脑连成一个临时局域网,同时确保那台2400波特的调制解调器随时可以拨号。
威尔伯是团队里唯一一个不写代码的人,但他理解的东西可能比程序员更关键:他理解时间。他手里有一张从RadioShack买来的电子表,秒表功能已经被他用到了按键失灵的程度,因为每次上传文件到Apogee的BBS站时,他需要精确计算长途电话费。从什里夫波特打到德克萨斯州加兰市,每分钟收费四十七美分,而一个完整的《指挥官基恩》试玩版文件压缩后约900KB,在2400波特的速率下需要传输将近一个小时。威尔伯的表告诉他,每次上传大约花费二十八美元的长途话费,加上BBS的接入费,总计约三十五美元。他们第一笔预付款是两千美元,听起来很多,但威尔伯已经算过账:如果算上披萨、健怡可乐、软盘、打印机墨盒、长途电话费,以及因为夜间工作而额外消耗的电费,虽然公寓的电力账单是房东付的,但突然暴涨的用电量已经引起了物业经理的注意,两千美元刚好够他们撑到圣诞节。如果《基恩》在圣诞节之前没有卖出去,他们就会破产。不是公司的破产,他们还没有公司。这笔两千美元的预付款来自天极软件的斯科特·米勒,他看中了罗梅洛的潜力,并支付了当时天极的全部资金作为开发预算。
是个人的破产,信用卡刷爆、房租拖欠、然后回到Softdisk请求阿尔·维科维斯不要解雇他们的那种破产。威尔伯把电子表放在显示器旁边,和一堆三寸软盘整齐排列在一起,像某种仪式用的祭器。他后来告诉别人,那个秋天他学会了一件事:你不必理解代码,就能理解压力。压力是物理的,有重量,有温度,有声音。在湖街公寓的客厅里,压力是五台电脑的散热风扇同时运转时发出的持续嗡鸣,是调制解调器拨号时发出的握手音,那种尖锐的、忽高忽低的电子啸叫,像某种正在试图从电话线里爬出来的生物,是卡马克在键盘上敲击时那种几乎没有停顿的、节拍器般的机械节奏,以及罗梅罗在关卡编辑器里拖动图块时偶尔爆发出的短促笑声,那笑声通常意味着他刚刚想到了一个能让玩家骂脏话的陷阱。卡马克的显示器上显示的不是《指挥官基恩》。他正在写一个内存管理器,这是他白天在Softdisk的合法工作内容,公司需要一个新的常驻内存程序来优化《玩家之刃》的磁盘读取速度。
卡马克可以在四个小时内完成这个任务,但他选择把它拖成两周的工作量,因为这样他就有理由在公司电脑上运行各种底层调试工具,而这些工具同时也在为《基恩》的引擎服务。这种复用不是偷懒,而是一种精密的资源调度。卡马克的大脑处理问题的方式就像他写的代码:递归,分层,每一个函数都可以被拆解成更小的子函数,而每一个子函数都可以同时服务于多个主程序。他在Softdisk的工作合同上签字时,唯一真正在意的是公司能否提供足够好的硬件。他需要80386处理器,需要VGA显卡,需要至少两兆的内存。至于合同上写的具体条款,在他看来只是一个变量声明,声明的是他获取这些硬件的合法途径。真正的主程序在别的地方,在晚上十点以后,在湖街公寓的客厅里,在那台被搬来搬去的IBM 8514显示器上。罗梅罗对此的理解完全不同,但效果一样。罗梅罗不把Softdisk的工作当成掩护,他把它当成热身。
他可以在白天用四个小时写完一款《玩家之刃》要求的游戏,吃豆人克隆、俄罗斯方块变体、太空侵略者致敬作,然后把这四个小时视为一种竞技训练,用来保持自己的编程速度和关卡设计直觉在峰值状态。等到晚上十点他坐在公寓的电脑前打开《基恩》的关卡编辑器时,他的手指已经预热完毕,他的大脑已经进入了那种他称之为“游戏大脑”的状态:一种将屏幕上的像素阵列直接转化为玩家体验的本能反应,不需要经过任何中间层的理性分析。他看关卡的方式和卡马克看代码的方式是对称的,卡马克看到的是内存地址、中断向量、渲染管线的数据流,罗梅罗看到的是跳跃弧度、敌人位置、隐藏奖励的节奏和玩家在每一帧画面中可能做出的选择。这两个视角在逻辑上完全不相交,但它们在同一个产品里咬合,就像两条不同种类的金属被焊接在一起,焊缝处承受着最大的应力。汤姆·霍尔在另一台电脑上工作。他是《指挥官基恩》的创意总监,这个头衔是罗梅罗给他起的,因为罗梅罗喜欢给每个人起头衔,就像他喜欢给每个关卡起名字一样。
但在这个凌晨三点的时间点上,他更像一个正在被两台打印机同时拉扯的中间人。他需要回应卡马克的技术约束:引擎只能支持四层视差滚动,所以背景不能太复杂;每个关卡的文件大小不能超过64KB,因为整个游戏需要装进一张360KB的软盘;精灵图的最大尺寸是32x32像素,所以基恩的棒球帽帽檐必须在设计时精确到像素级。同时他需要回应罗梅罗的创意需求:基恩需要一个标志性的武器。最终他选择了“神经震荡枪”,一种只能让敌人暂时眩晕的声波发射器,而不是真正的武器,因为他坚持认为一个八岁男孩不应该杀死任何人。罗梅罗觉得这个设定太温和了,但他没有争辩,因为他在这个项目上争辩的优先级列表里,这个议题排在第二十位之后。前面还有更重要的事情需要争:关卡长度、敌人AI的行为模式、隐藏区域的奖励机制、以及那个“波戈棍”,基恩的跳跃道具,一根可以让他进行二段跳的弹簧杆。
罗梅罗坚持认为二段跳的物理手感必须精确到每一帧,因为如果玩家觉得跳跃不跟手,他们会在三分钟之内关掉游戏,三分钟之后就不会有人寄出那十九美元的支票。十九美元。这是斯科特·米勒建议的定价:第一部《基恩》免费,任何想要玩第二部和第三部的人需要支付十九美元,直接从Apogee邮寄支票。米勒提供的结构很简单:发布第一章免费,后续章节收费。卡马克在第一次听到这个方案时,用了一个更精确的词来描述它:“漏斗”。免费章节是漏斗的宽口,尽可能多地捕获玩家;后续章节是漏斗的窄管,从捕获的玩家中滤出愿意付费的人。米勒的预测是百分之二的转化率,每一百个下载免费试玩版的玩家,会有两个人寄出支票。卡马克觉得这个预测太乐观了,但他没有说出来,因为他在商业预测领域没有足够的数据来建立模型。他的大脑处理不确定性的方式是先搁置,然后继续做他能控制的事情:引擎。引擎是确定的。渲染管线是确定的。内存分配是确定的。
只要他写出的代码足够干净,足够快,屏幕上的像素就会按照他的预期移动,一帧一帧,十六毫秒一帧,没有任何模糊地带。他需要这种确定性,尤其在这个公寓里,在凌晨四点窗外开始下雨的时候,在罗梅罗突然决定要推翻整个第三关的布局并重新设计的时候,在威尔伯宣布长途电话费已经超标他们今晚不能再上传任何文件的时候,在汤姆·霍尔试图让所有人同意基恩的宠物狗“斑点”应该出现在至少三个关卡里的时候。这些时刻,卡马克会把注意力收回到代码上,收回到那个由指令、寄存器、内存地址构成的绝对秩序的世界里,那个世界不会突然改变规则,不会因为灵感来了就推翻前一天的设计,不会因为长途电话费超标就阻止他完成一段已经写好的优化算法。那个世界是沉默的,是逻辑的,是安全的。但它不是密封的。凌晨四点十七分,罗梅罗从关卡编辑器里抬起头,把椅子转过来,对着卡马克的后背说了一句话,这句话打破了代码世界的隔音墙。“引擎需要支持斜向发射。”
卡马克没有回头。他的手指停在键盘上,光标在屏幕上的某个位置闪烁。这是他的标志性动作,当他的大脑正在处理一个外部输入时,他的身体会先冻结,就像一台正在运行高优先级中断的计算机,所有非核心进程暂时挂起,直到中断处理完成为止。三秒钟后,他开口了,声音平稳,没有情绪起伏:“斜向发射需要额外的精灵状态,每一个都会占用动画帧缓存。目前引擎的可用内存余量不够。”
“所以不够。”罗梅罗说。“不够。”
“那你能不能优化一下内存管理,腾出空间?”
卡马克把手从键盘上移开,转过身。他摘下眼镜,用T恤的下摆擦掉镜片上的雾气,公寓里的五台电脑和三个成年人的体温把客厅变成了一个恒温三十度的桑拿房,湿度则来自窗外持续不断的夜雨和六个披萨盒里残存的水蒸气。他重新戴上眼镜,看着罗梅罗,眼神平静,但那种平静不是放松,而是某种高度集中的注意力在寻找最精确的表达方式。“我可以优化内存管理。但优化内存管理需要花掉我两天时间。两天之后,我本可以完成平滑滚动的增量更新,这个功能可以让引擎在玩家移动时预加载下一个关卡的图块,而不是在关卡切换时出现黑屏。米勒在邮件里说,他测试过市面上所有的共享软件平台游戏,没有一个能做到无缝切换。如果《基恩》能做到,那就是技术壁垒。你告诉我,斜向发射和技术壁垒,哪一个更重要?”
罗梅罗没有立刻回答。他靠在椅背上,双手交叉在脑后,这个姿势让他的黑发从椅背上沿垂下来,像一个临时的瀑布。他盯着天花板,天花板上有一块水渍,形状像南美洲。他把那块水渍盯了整整十五秒,然后突然坐直,身体前倾,用右手的食指敲击着桌子的边缘,每敲一下就说一个词:“斜向,发射,更好,玩。技术,壁垒,不会,让,玩家,感到,快乐。”
“技术壁垒可以阻止竞争对手复制我们的游戏。”
“竞争对手复制我们的游戏意味着我们的游戏足够好,值得被复制。如果你不做一个好玩的游戏,没有人会复制它,技术壁垒保护的是一个空壳。”
卡马克没有反驳。他转过身,重新面对屏幕,但手指没有继续敲击键盘。他在处理罗梅罗刚才那句话,不是处理它的情绪,而是处理它的逻辑。罗梅罗的逻辑是这样的:好玩是最高优先级,技术壁垒是次要目标,如果次要目标与最高优先级冲突,次要目标必须让步。卡马克的逻辑是:技术壁垒是可持续优势的基础,如果竞争优势无法持续,那么即使在短期内做出好玩的游戏,长期也会被市场淘汰。这两个逻辑链条在各自的体系内都是自洽的,但它们无法调和,因为它们的起点不同,一个从玩家体验出发,一个从系统结构出发。在凌晨四点的湖街公寓里,这两种逻辑像两条河流,在同一个河道里并行,水面看似平静,但河床已经开始移动。汤姆·霍尔打破了僵局。他没有参与争论,而是默默地把自己的椅子推到两台电脑之间,让卡马克和罗梅罗都能看到他的屏幕。屏幕上显示的是基恩的精灵图动画,一个八岁男孩举起神经震荡枪,朝屏幕上方四十五度角发射声波。
汤姆已经手动绘制了十六帧斜向发射的动画,全部用Deluxe Paint II逐像素绘制,每一帧都精确到32x32的图块限制之内。他没有说话,只是把屏幕转向两个人,然后像展示证据一样,按下空格键,让动画循环播放。基恩的手臂抬高,枪口闪光,声波环扩散,然后回到待机姿势。整个动画循环持续零点八秒,帧率十二帧,视觉效果已经足够清晰。汤姆花了三个小时画完这些帧,从凌晨一点到凌晨四点,在卡马克和罗梅罗争论引擎架构的时候,在威尔伯计算长途电话费的时候,他一个字都没说,只是坐在角落里,对着屏幕,像素一格一格地画。他画完之后,站起来,去厨房倒了一杯已经凉透的咖啡,然后回来,把动画放给两个约翰看。卡马克盯着屏幕看了十秒钟。然后他说,可以通过压缩帧数来节省动画缓存。罗梅罗同时说,枪口闪光应该持续两帧而不是一帧,这样玩家能看到反馈。两个人对视了一眼,然后同时看向汤姆。汤姆端着咖啡杯,点了点头,说:“知道了。”然后他把椅子推回自己的角落,继续修改精灵图。
他没有参与争论,因为他知道争论在凌晨四点是没有意义的。凌晨四点的争论不是关于技术细节的,而是关于控制权的。谁有权定义“什么更重要”?谁有权在资源和时间有限的情况下做出最终取舍?这个问题在Softdisk的办公室里不存在,因为阿尔·维科维斯是老板,他做所有决定。但在湖街公寓里,没有老板。斯科特·米勒不是老板,他是客户,他付钱,但他不指挥他们如何工作。这个团队是一个自组织的生命体,而自组织生命的核心问题永远是同一个:当两个方向都具有合理性时,谁来决定方向?这个问题在十二月十日凌晨达到了第一次临界点。距离圣诞节还有十五天,距离米勒要求的最终交付日期还有五天。
三部曲必须全部完成,《基恩一:沃提康入侵》、《基恩二:地球爆炸了》、《基恩三:基恩必须死》,三个游戏,总共四十五个关卡,每个关卡都需要在三种难度级别下测试通过,全部引擎代码需要在三个不同的硬件配置上验证兼容性:80386配VGA、80286配EGA、以及最糟糕的情况,8088配CGA显卡,四色显示,分辨率320x200。卡马克坚持要支持CGA,不是因为市场需要,事实上,任何有能力购买共享软件游戏的用户,至少拥有一台80386,而是因为“技术完整性”。他不能容忍自己的引擎在一部分硬件上无法运行,即使那部分硬件只占潜在用户的百分之三。罗梅罗认为支持CGA纯粹是浪费时间,因为四色模式下基恩的红色棒球帽会变成洋红色,火箭飞船的尾焰会变成青色,整个游戏的视觉风格会彻底崩溃。卡马克的回答只有一句话:“引擎必须完整。”这不是讨论,这是声明。
罗梅罗盯着卡马克看了五秒钟,然后转过身,猛击了一下键盘上的回车键,力度大到键帽飞了出去,弹在显示器上,掉进桌上的健怡可乐罐里。威尔伯不得不爬进桌子底下,把键帽从可乐里捞出来,用纸巾擦干,重新装回去。整个过程中没有人说话,客厅里只有风扇的嗡鸣、雨声、以及调制解调器在后台发出的微弱载波音,威尔伯正在上传《基恩一》的最终版本到Apogee的BBS,进度条走到了百分之六十三。冲突的真正根源不是CGA兼容性。冲突的根源是,他们已经在湖街公寓里连续工作了七十二个小时,其间只睡了不到八个小时,吃了十二个披萨,喝掉了四十八罐健怡可乐。罗梅罗坚持要健怡可乐而不是普通可乐,因为他认为糖分会让他在凌晨三点产生假的兴奋感,然后在凌晨五点崩溃,而阿斯巴甜可以提供更稳定的能量曲线。
卡马克不关心可乐的配方,他只关心咖啡因含量,以及罐子不应该放在键盘旁边,因为上一次罗梅罗打翻了可乐,液体渗进键盘,短路了三个键,导致卡马克在调试代码时误触发了重置命令,丢失了四个小时的工作。那是十二月七日凌晨的事情,卡马克没有发火,他几乎从不发火,但他之后花了两个小时写了一个自动存档脚本,每五分钟自动保存一次代码快照,同时把备份写入软盘。这个脚本后来成为id Software内部工具链的标准组件,所有程序员都使用它,一直到《毁灭战士》时代。罗梅罗后来承认,他那次打翻可乐是“无意中做了一件好事”,因为卡马克的自动存档系统后来至少挽救了团队累计超过两百个小时的工作量。但卡马克从不说这是一件好事,他只说“这是一个可用性问题的解决方案”,而“打翻可乐”在技术上不是最优的触发条件。七十二小时连续工作的生理后果是系统性的。
威尔伯的手开始发抖,不是因为紧张,而是因为咖啡因摄入过量导致的手部震颤,这影响了他安装软盘的速度,他需要把《基恩》的试玩版拷贝到二十五张软盘上,寄给米勒,作为BBS分发之外的物理备份。汤姆·霍尔的右眼开始抽搐,他不得不戴上眼罩继续工作,这让他在凌晨四点的公寓里看起来像一个像素海盗。罗梅罗的嗓音彻底崩溃,但他仍然在说话,在用气声和手势向卡马克解释为什么第七关的隐藏区域应该放在地图的左上角而不是右下角,因为玩家的视线习惯从左上角开始扫描,而不是右下角,如果把隐藏区域放在右下角,百分之九十的玩家会错过它,而那些发现它的玩家会觉得自己被游戏欺骗了,而不是被奖励了。卡马克的回应是,如果隐藏区域是奖励,那么发现它的难度本身就是奖励的一部分,如果玩家不需要努力就能获得奖励,奖励的价值就会降低。罗梅罗用气声吼了回去,如果气声可以吼的话,你不是玩家,你从来不玩你自己做的游戏,你不知道玩家想要什么,你只知道代码想要什么,但代码不是你的客户。
这句话在客厅里停留了大约三秒钟,然后被调制解调器发出的“握手完成”提示音打断。威尔伯看着屏幕,宣布:“《基恩一》上传完毕。Apogee BBS确认接收。文件大小1.18兆字节,传输时间五十二分钟,长途电话费二十四美元四十四美分。”
没有人欢呼。卡马克转回屏幕,继续写CGA兼容模块。罗梅罗转回关卡编辑器,把第七关的隐藏区域从左上角移到了右下角,然后停了五秒钟,又把它移回了左上角。他没有解释为什么改变主意,卡马克也没有问。汤姆·霍尔继续画精灵图,他正在为《基恩三》的最终BOSS,一个名叫“大神官”的沃提康星人,设计攻击动画,需要三十二帧,他已经画了二十四帧,右手食指因为长时间按压鼠标左键而开始抽筋。他把手从鼠标上拿开,甩了甩,然后继续画第二十五帧。这就是id Software成型的方式。不是通过商业计划书,不是通过融资路演,不是通过任何形式的理性决策。它是在披萨盒、健怡可乐罐、凌晨四点的雨声、长途电话费的计时器、以及两个约翰之间那种既咬合又摩擦的共生关系中,从一团混乱的、高强度的、近乎自我毁灭的创作能量中结晶出来的。斯科特·米勒后来在接受采访时说,他第一次见到这个团队时,就知道他们要么会成为百万富翁,要么会在三十岁之前死于心脏病。他没有夸张。
湖街公寓的物理环境,五台电脑持续散热的客厅、堆满披萨盒的厨房、被软盘和打印纸覆盖的地板、以及那个永远在拨号的调制解调器,在任何健康标准下都是不宜居住的。但正是在这个环境里,一套不可复制的创作机制被锤炼出来。卡马克的引擎架构,罗梅罗的关卡设计,汤姆的世界构建,威尔伯的物流管理,这四个人的技能组合恰好覆盖了当时PC游戏开发的全部关键节点,而他们之间的沟通方式,尽管充满了凌晨四点的争吵和可乐罐撞击键盘的意外,却形成了一种高效的决策回路:问题出现,争论爆发,方案产生,执行。没有会议,没有备忘录,没有层级审批。唯一的决策标准是“好不好玩”,而“好不好玩”的定义权,在不经意间,主要落在了罗梅罗手里。不是因为罗梅罗是老板,他不是,团队里没有老板,而是因为他是唯一一个愿意在每个凌晨三点,用沙哑的气声,向卡马克解释为什么某个关卡的某个平台应该比另一个平台高三十二个像素的人。
卡马克尊重数据和逻辑,但游戏设计中的数据往往是不完整的,逻辑往往是模糊的,在这个领域,罗梅罗的直觉有着不可替代的准确性。卡马克逐渐学会了接受这一点,尽管他永远不会公开承认。十二月十二日,距离死线还有三天。阿尔·维科维斯打来了电话。电话是威尔伯接的。维科维斯的声音通过电话线传来,带着什里夫波特当地口音那种特有的拖长的元音,以及一个老板在发现自己的员工可能在做私活时特有的那种故作轻松的试探。他说,他注意到公司电脑的硬件配置记录和实际使用情况出现了一些不一致,具体来说,有三台80386的硬盘使用时间在过去两个月里大幅增加,但相应的《玩家之刃》产品交付量并没有增加。他说,他不喜欢做不必要的假设,但他希望得到一个合理的解释。威尔伯用手捂住话筒,转头看向客厅里的其他人。卡马克正在写代码,没有抬头。罗梅罗正在测试关卡,没有抬头。汤姆·霍尔正在画精灵图,没有抬头。
威尔伯松开手,对着话筒说,他们正在进行一些额外的性能优化测试,这些测试可能需要使用公司设备的闲置计算资源,但不会影响正常交付。维科维斯沉默了三秒钟,这三秒钟是威尔伯这辈子经历过的最长的三秒钟,然后说:“好吧。但我希望在圣诞节之前看到你们的测试结果。”他挂断了电话。威尔伯放下电话,宣布:“他被我们糊弄过去了,但不会太久。”卡马克头也不抬地说:“不需要太久。我们只需要再撑五天。”罗梅罗从关卡编辑器里抬起头,说:“五天之后,如果我们没有拿到钱,我们就不需要再撑了,因为维科维斯会解雇我们所有人。”汤姆·霍尔在角落里安静地说:“如果《基恩》卖不出去,我们本来也不需要那份工作了。”这句话让客厅安静了大约五秒钟。然后卡马克说:“继续写代码。”键盘声重新响起。十二月十四日,《指挥官基恩》三部曲全部完成。
十二月十四日凌晨,《基恩》三部曲的最后一行代码写入磁盘时,三个游戏的具体规格已经锁死在软盘里:《基恩一:沃提康入侵》包含十五个关卡、文件大小1.18兆字节;《基恩二:地球爆炸了》十五个关卡、1.24兆字节;《基恩三:基恩必须死》十五个关卡、1.31兆字节。引擎配置为VGA 256色、支持四方向平滑滚动和声霸卡音效;汤姆·霍尔逐像素绘制了超过两千帧精灵图动画;罗梅罗设计并测试了超过六百个隐藏区域;卡马克编写了约三万行C语言与汇编语言混合代码;威尔伯管理上传耗时超过四十小时、长途电话费累计约三百二十美元——这些数字不是抽象统计;它们是四个年轻人在湖街公寓里用披萨盒和健怡可乐罐垒起来的具体成果。
《指挥官基恩之沃提康入侵》三部曲于1990年12月发售时,在共享软件市场投下了一颗小原子弹。天极软件之前的月销售额徘徊在七千美元左右,《基恩》到圣诞节时已带来近三万美元收入;米勒后来形容它‘像在杂志编辑和BBS管理者间投下小原子弹’;到1991年6月月销售额突破六万美元;团队在1995年估计总销售额超过三十万美元——这笔钱不多不少刚好够他们从Softdisk的阴影里挣脱出来。
支撑这场创作狂潮的是惊人的物质消耗:超过一百二十个披萨盒堆在厨房角落;两百多罐健怡可乐空罐散落在地板上;五十多张三寸软盘中十二张因反复读写损坏;打印机墨盒更换三次;调试日志堆起半米高;威尔伯用这些纸垫在披萨盒下面防油渍渗透地毯——他们甚至交不起清洁费:五百美元押金若被房东扣掉就等于损失三十张软盘或两个月长途电话费。
卡马克站在威尔伯身后,看着屏幕上显示的上传进度条,罗梅罗坐在旁边的椅子上,手里攥着一罐已经空了的健怡可乐,汤姆·霍尔站在厨房门口,用纸巾擦着手指上的油渍,他刚刚吃完最后一片披萨,那是达美乐在凌晨一点四十五分送来的最后一个订单,送餐员用奇怪的眼神看着这个凌晨还在营业的公寓,但没有问任何问题。进度条走到百分之百。威尔伯断开连接,记录下传输时间,四十七分钟,长途电话费二十三美元八十六美分,然后转过身,看着其他人。“做完了。”他说。罗梅罗把手里的空可乐罐扔进垃圾桶,垃圾桶已经满了,罐子弹了出来,滚到地上,没有人去捡。卡马克摘下眼镜,揉了揉眼睛,这是他连续七十二小时工作中第一次做出这个动作。汤姆·霍尔从厨房里走出来,坐在沙发上,把脸埋进手掌里。没有人说“我们成功了”。没有人说任何话。客厅里只有五台电脑的风扇声,雨声,以及远处什里夫波特市区偶尔传来的警笛声。
他们坐在各自的椅子上,像四个刚刚从一场持续了三个月的暴风雨中走出来的幸存者,浑身湿透,说不出话,但还活着。十二月二十日,斯科特·米勒的支票寄到了。金额是十千五百美元,这是《基恩》三部曲第一笔版税预付款扣除Apogee的分成之后剩下的部分。杰伊·威尔伯把支票放在客厅的桌子上,四个人围在桌子旁边,盯着那张纸看了整整一分钟。然后罗梅罗说:“我从来没见过这么多钱。”卡马克说:“这是三个月的收入,除以四个人,平均每人两千六百二十五美元,平均每月八百七十五美元,比我们在Softdisk的月薪低百分之十二点五。”罗梅罗看着他,说:“约翰,你能不能暂时不要计算?”卡马克想了两秒钟,然后说:“可以。”他把支票拿起来,递给威尔伯,说:“开一个公司账户。”威尔伯问:“公司叫什么名字?”卡马克看向罗梅罗。罗梅罗说:“id Software。”那是“Ideas from the Deep”的缩写,这个名字是他们在Softdisk的深夜加班时发明的,用来签署那些他们不会被公司看到的内部备忘录。现在它将成为一家公司的名字。威尔伯在第二天上午去银行存了支票,开立了id Software的第一个商业账户。初始存款:十千五百美元。开户人:约翰·卡马克,约翰·罗梅罗,汤姆·霍尔,杰伊·威尔伯。账户类型:商业支票账户。月费:八美元。他们把收据钉在厨房的墙上,用图钉钉住,旁边是一张手写的清单,上面列着他们欠Softdisk的剩余合同义务,四款《玩家之刃》游戏,交付日期一月十五日,以及他们在完成这些义务之后,可以合法地、完整地、毫无保留地,投入id Software下一个项目的日期:1991年2月1日。距离那个日期,还有四十三天。窗外,什里夫波特的夜雨还在下,但车库的门已经打开了一条缝,光漏了出来。