第 14 章
第14章 引擎不会等你(约 1997 年)
汤姆·霍尔在1996年6月底收拾好他在id Software办公室里的最后几箱私人物品时,他已经是第二次离开这家公司。第一次是1993年,在他花了几周时间编写《毁灭战士》的背景故事和角色设定之后,他被约翰·卡马克告知这些文本不会出现在最终产品里——引擎读取那些写在墙上的文本日志会占用渲染时间,而每秒帧数比叙事更重要。那次离开带着愤怒和受伤的骄傲。霍尔回到威斯康星州,试图在Apogee重建一个有叙事的游戏世界,做出了《龙霸三合会》。第二次离开则安静得多。他坐在自己的隔间里,听见走廊另一头约翰·罗梅罗的办公室传出搬箱子的沉闷声响。罗梅罗在同一天离开,但他和任何人都不一样。罗梅罗是摇滚明星。霍尔只是一个设计师。而在这栋麦迪逊黑色玻璃大楼铺着地毯的走廊尽头,卡马克办公室的门紧闭着,灯亮着。窗外,达拉斯的天际线边缘泛起了第一层灰蓝。Galleria塔楼的玻璃幕墙开始折射这个城市第一道没有温度的晨光。
如果说罗梅罗的离开在达拉斯Galleria塔楼即将引发的是一连串香槟软木塞崩开的巨响和支票签单的飕飕声,那么在id,这件事的回声更像是编译器的中止指令——一种系统层面的静默。没有争吵。没有戏剧性的告别演说。id的商务舵手杰伊·威尔伯处理完了所有离职文件,确保股权、保密协议和未来版税条款都以他惯常的精细度得到落实。其他人在格子间里继续工作。阿德里安·卡马克——不是约翰,是另一个卡马克,艺术家阿德里安——从画板前抬起头看了几秒,然后继续画贴图。凯文·克劳德在调试关卡编辑器里的触发器逻辑。约翰·卡什在测试网络代码中延迟补偿的边界条件。他们都是世界上最好的工程师和艺术家,但没有一个人能让一屋子陌生人站起来欢呼。他们不是那类人。这就是1996年夏天id Software面对的问题。它不像罗梅罗即将在达拉斯面对的那些会议室对峙、挥霍无度的预算审批和豪言壮语。它是一个沉默的问题。一个结构性缺口。
一栋拥有四十名全世界最顶尖程序员和艺术家的黑色玻璃大楼,一台即将完成的新引擎,一个定义了整个第一人称射击类型的品牌——以及一个逐渐冷下来的事实:驱动这台机器跑了六年的人走了。而留下的人甚至不太确定他具体做了什么。不是编写关卡,不是画贴图,不是优化渲染循环。他做的是某种更难以量化的东西。某种即使说出来也显得不够工程学的东西。麦迪逊的秋天来得比达拉斯早。九月中旬,门多塔湖和莫诺纳湖之间的地峡上升起晨雾,约翰·卡马克办公室的灯光在清晨六点仍然亮着。他正在重写《雷神之锤II》引擎的渲染器核心。这部分工作进入第十三周,他已经丢弃了两个完整版本。目标是明确的。彩色光影。这是自1993年《毁灭战士》发布以来他一直在思考的问题。当年那个引擎用256色调色板和扇区光照贴图制造出一种阴郁的、闪烁的恐怖感,但那是个技术妥协——真正的动态光源,能够在地图上移动、改变颜色、在物体表面投射真实阴影的独立光源,需要完全不同的渲染管线。
现在,有了1996年《雷神之锤》打下的全三维基础,有了硬件加速显卡逐渐进入消费市场——3dfx的Voodoo卡正在改变一切——他可以做这件事。他必须做这件事。因为引擎不会等你。引擎是一列永远在加速的货运火车,你停下脚步的那个瞬间,它就会从你身上碾过去。这个逻辑在卡马克的思维里运行了十一年,从他在堪萨斯城郊的少年管教所地下室里第一次摸到Apple II键盘的那天起就不曾动摇。外部世界混沌无序——继父的贬低、其他孩子的霸凌、学校对他的诊断结论——但代码是绝对的。循环按顺序执行。内存地址不会说谎。指针在正确的时间指向正确的位置,否则程序崩溃,原因可以追溯,错误可以被修复。这一整套逻辑系统是他用来对抗外部世界的基本工具。而现在,当罗梅罗走了,当id的引擎需要一个新的方向,他想不出任何其他的方法,只能用这套逻辑来填补那个空洞。如果设计直觉是一种函数,它接收什么参数?关卡节奏、武器平衡、怪物放置、惊吓时机——这些在理论上都是可量化的变量。
玩家在战斗遭遇之间的平均休息时间应该是多少秒?走廊宽度与移动速度的最佳比例是多少?死亡竞赛重生点的公平分布能否通过算法生成?这些问题在1997年初的id内部备忘录里开始出现。卡马克发给设计团队的邮件没有问候语,没有签名,只有一段逻辑推演或一个数学模型。没有人觉得这些邮件无礼——所有人都习惯了。阿德里安·卡马克在回复其中一封时写了几行字,大意是怪物出现的“惊吓感”不完全是一个位置函数——你不能用纯粹的空间坐标来决定恶魔从哪个壁龛里跳出来会让人恐惧。卡马克回信问了几个关于触发条件和玩家视线锥体交叉概率的问题。阿德里安没有再回复。不是因为他被冒犯了。是因为他知道讨论已经结束了。在id,约翰·卡马克说了算。他赢,不是因为声音大——他的声音通常是技术会议里最轻的那个——他赢是因为没有人能用他认可的逻辑框架反驳他。这就是引擎至上的治理模式。
它在1991年《指挥官基恩》和1992年《德军总部3D》时期运转得极为高效,因为那时的团队足够小,每个人都能听见彼此的思路。一个程序员的渲染突破第二天就能被设计师转化为关卡机制,一个艺术家的贴图创意在午饭时就能被写进引擎的视觉路线图。反馈循环紧密、快速、自然。但现在,1997年的id Software雇佣了超过四十人。有专门的测试部门、市场营销、技术支持热线。引擎团队、工具团队、关卡设计团队、美术团队各自在自己的隔间区域里运转。反馈循环拉长了,变得正式,途经备忘录和每周例会。而润滑这套体系运作的那种东西——那些无法写成备忘录的非正式沟通,那些罗梅罗随时推开卡马克的门说半句话就能对齐的瞬间——消失了。不是说没有人试图填补这个角色。有人试过。提姆·威利茨,从1995年开始担任关卡设计师的年轻程序员,试图在几次设计会议上提出关于《雷神之锤II》单人战役结构的不同方案。
他做了一个演示关卡,用以证明如果怪物的节奏安排更接近《毁灭战士》——更稠密的遭遇密度、更多的突袭触发点、更少的连续直线走廊——游戏可能会更紧张。演示在引擎团队进行了一轮压力测试后被搁置了。新的动态光影系统在同时渲染超过六个移动光源时帧率会掉到二十以下,而威利茨的关卡在最激烈的战斗阶段出现了十二个。他的设计思路不得不按照引擎的技术瓶颈重新裁剪。这不是任何人的恶意。但如果是罗梅罗——那个在《毁灭战士》开发期间会和卡马克就渲染效率争论到凌晨四点、最终总能找到一个双方都勉强接受的平衡点的人——那个平衡点也许会出现。现在没有了。引擎赢了。这听起来像是公司的故事,机器的故事,决策流程的故事。但它也是个人的故事。卡马克每周有六天在这栋黑色玻璃大楼里待到凌晨。第七天他在家,但仍然在工作——阅读论文,研究新的渲染算法,追踪斯坦福和麻省理工学院计算机图形学实验室的最新出版物。
他的饮食被id的员工私下用一个词概括:配送来的比萨、含糖汽水、不需要离开键盘就能吃完的任何东西。威尔伯在某次经理会议上顺带提到,卡马克办公室的窗帘几乎从来没有拉开过。这不是指摘。威尔伯说的是一个事实,用的是他管理公司预算时同样中性的语调。但这个事实开始让一些人感到不安。不是因为他们担心卡马克的健康——他们都知道这个人有自己的节奏,从1991年起就是这样——而是因为这间永远亮着灯、永远拉着窗帘的办公室正在成为整个公司的隐喻。一栋玻璃建筑物里最亮的那一点,看不见外面。外面在变。1997年是第一人称射击游戏领域地质板块活动最剧烈的年份之一。id不再是唯一的参赛者。甚至不再是唯一在技术上值得敬畏的参赛者。Epic MegaGames发布了《虚幻》引擎的首个公开技术演示,展示了彩色光影、体积雾、镜面反射——其中一些效果卡马克的团队还在试图稳定地实现。威尔士的Bizarre Creations在制作他们自己的东西。
西雅图的Valve Software——由两名微软前员工创立,公司成立刚满一年——从朋友那里拿到了《雷神之锤》引擎的授权,正在开发一个关于政府秘密实验室的游戏。没有人知道这件事在当时有多重要。但卡马克知道——他读了Valve的引擎许可申请,上面写着一个他从未听说过的名字。盖博·纽维尔。这个人在申请中描述的游戏听起来不太像传统的射击游戏,更像某种混合了叙事、解谜和动作的东西。卡马克批准了授权。引擎和代码就是用来被这样使用的,这一点他从未改变。但真正从外部挤压id的不是技术竞争。那些新引擎都很强,有些在单独的功能上甚至超越了《雷神之锤》的某个特定方面,但没有一个能在整体架构的稳健性和联网代码的效率上真正超越卡马克的作品。真正的问题是文化。死亡竞赛是id发明的——或者更确切地说,是罗梅罗在《毁灭战士》开发期间的某个下午,把玩家重生点放在同一张地图上,然后叫所有人连线进来打一场的即兴实验。那个下午改写了此后二十年电子竞技的基础。
但现在,id的死亡竞赛社群正以自己的方式运转,并且发出了越来越难以忽视的声音。这些声音不是在抱怨引擎——引擎对他们来说是完美的。他们在抱怨别的。1997年11月,《雷神之锤II》发售前一个月,id的市场部门收到了一份来自英国的游戏杂志预评综述复印件。威尔伯把它放在卡马克的桌子上。卡马克看了。评论认为引擎是革命性的,用的措辞是任何公司的市场部门都会剪下来裱在墙上的那种。但接下去的几行字让威尔伯注意到卡马克的眉头动了一下——对一个面部肌肉从不轻易参与情绪表达的人来说,这相当于另一个人把咖啡杯砸在墙上。评测认为游戏的单人部分在视觉上无可挑剔,但在关卡推进的紧张节奏和空间发现的惊喜感上,与id之前的产品存在差距。评测还提到,某些走廊序列让人感觉更像是在依次参观新渲染特性的演示,而不是在一个危险的世界里挣扎求生。卡马克看完了全文。他把复印件放回桌上。威尔伯等着他说点什么。卡马克说,他们对引擎的理解不够。
威尔伯说,也许他们理解,但他们想要不同的东西。卡马克沉默了几秒。然后他说,他要回去继续修渲染器里关于透明表面深度排序的一个bug。对话结束。这不是冷漠。这是两种不同认知框架之间的不可互译。卡马克的思维是一台编译器。它接收具体的问题——帧率不足、内存越界、浮点精度误差——然后产出可验证的解决方案。文化、感受、期待、叙事,这些变量无法被编译,无法被压入内存地址,无法用0和1表示。它们存在,他知道它们存在——他玩过《毁灭战士》,他知道那是什么体验——但他无法在自己的逻辑框架内为它们分配因果权重。而当一个变量在系统中没有权重时,它的默认值是零。这意味着当罗梅罗离开id,带走的不只是一个会在凌晨三点推门进来用三句话推翻整个关卡布局的人。他带走的是整个系统用来编码那些无法编码的变量的那部分算法。这个算法不是数学。
它是一种直觉反应,一种基于多年经验和本能的选择机制——选择这个怪物而不是那个,这个走廊宽度而不是那个,这个音效在这个时刻响起而不是延后半秒。罗梅罗从十四岁起就在做这件事。他在路易斯安那州德尔拉克街的破旧车库里,用一台二手Apple II编写了第一款游戏,讲的是一个太空英雄的冒险。那台电脑的磁盘驱动器坏了,他没法保存代码,只好让机器一直开着,直到某个夜晚继父一脚把它踹翻在地。他很早就学会了在技术限制下制造刺激。在《毁灭战士》开发最紧张的阶段,卡马克说256色调色板不能支持罗梅罗想要的哥特式拱门的灰阶渐变,罗梅罗就在那256种颜色里找到了四种不同深浅的深蓝,叠在一起,制造出一种几乎是黑色的幽暗。引擎给出了边界,设计师在边界上跳舞。这两个角色相互定义。当其中一半被拿掉时,另一半不是变得更加自由——它失去了它赖以校准自身的参照物。1998年1月,麦迪逊迎来了那年冬天最大的暴风雪。机场关闭,学校停课,市政府呼吁居民尽量不要外出。
id Software的员工大多在家工作,通过拨号网络远程登录开发服务器。只有一个人仍然到办公室。保安在早班日志上记了一笔:约翰·卡马克,凌晨,刷卡进入。暴风雪最猛烈的时候,密歇根湖方向刮来的风裹着雪粒打得玻璃外墙沙沙作响。那间办公室的灯亮着。引擎团队在封路前提交的最后一份测试报告显示,新的硬件加速渲染路径在3dfx Voodoo2上稳定运行在每秒三十帧,动态光影上限从六个光源提升到了十四个。这是一个里程碑式的成就。卡马克独自在办公室里,编译了当天的第十一个构建版本,运行了标准测试程序,检查了帧率图表。一切正常。他停下来,打开《雷神之锤II》的单人模式,加载了第一关的地图。他没有像普通玩家那样移动。他用的是穿墙模式和飞行轨迹——开发者模式,是测试关卡用的。他在空无一人的殖民地里移动,穿过那些被他自己的渲染器渲染得无比真实的彩色光影:橙色的警报灯在金属墙壁上投射出移动的暖色光晕,蓝色的应急灯在地板上拉出冷色调的矩形。
他发现了一个问题——一个动态光源在特定的观察角度下会穿透实体几何体,在地板下投射不应该存在的阴影。一个bug。他打开文本编辑器,开始追踪渲染循环里负责光源遮挡检测的那部分代码。他做这些事时没有愤怒,没有孤独,没有悲伤。他只是在做他一直做的事。这是他的天赋。这是他赖以在这个混乱世界里活下去的绝对领域。如果代码库里有一个bug,他就修复那个bug。如果引擎需要一个方向,他就给那个方向。如果公司失去了一个摇滚明星,他就试图把引擎本身变成摇滚明星——让它足够强大、足够炫目,让所有人忘记曾经有一个人不需要控制台命令就能在十六进制编辑器里看见戈雅式的噩梦。这个方案是理性的,一致的,完全符合他对世界运行方式的期望。但bug可以被修复。方向可以被技术路线图定义。某种东西不可以。1998年2月,威尔伯召集了一次市场部门的紧急会议。议题是《雷神之锤II》的mod社区。不是技术问题——mod的可制作性和开放性一直是id引以为傲的传统。
自从1994年一个叫CROSS.WAD的玩家自制《毁灭战士》关卡文件出现在id的FTP服务器上,威尔伯和阿德里安就一直在盯着这个现象。他们看着它从几个爱好者的小圈子扩展到数万人规模,看着它催生了地图编辑器、建模工具、脚本语言。这些都在id的计划之内。不在计划之内的是一个名叫《Action Quake》的mod,它在这个冬天突然爆发式增长,下载量在两个月内突破了十万次。这个mod把《雷神之锤II》变成了一款现实题材的团队战术射击游戏——没有怪物,没有科幻武器,只有特警小队、闪光弹和爆头伤害判定。它的服务器在傍晚时段挤满了玩家,而官方死亡竞赛服务器在这个时间段的使用率下降了。市场部门的分析师写了一份报告,用图表展示了趋势。威尔伯看完了整份报告。然后他走到卡马克办公室,敲了敲门。卡马克正在看一份关于曲面细分算法的最新会议论文。他抬起头。
威尔伯把情况简述了一遍:有人在他们的引擎上做了他们没有做的事,而且做得很成功,官方的用户数据正在被玩家社区中自发产生的变体分流。卡马克听完了。他说,这正是引擎被设计成开放架构的原因。威尔伯说,他知道,但如果玩家社区用他们的工具做出来的东西比官方内容更能留住玩家,那就不是开放性的问题了。卡马克沉默了几秒。这个词——流失——不在他的标准调试词汇里,但他理解这个概念。他说,《雷神之锤III》会解决这个问题。那将是纯粹的死亡竞赛体验,专门为多人模式优化的引擎架构,单人战役的包袱会被完全卸掉,引擎本身就将成为游戏。威尔伯站在那里。他是商务人,不是技术人。他不会和卡马克争论引擎架构。但他心里在想一件事,这件事他不会在这次对话中说出口:纯粹的引擎作为游戏的形式——这可能是对的,但它预设了引擎本身具有文化引力。而《Action Quake》的制作者不懂渲染器。他们甚至不知道什么是深度排序。
他们只是知道玩家想要什么感觉——那种屏住呼吸拉开闪光弹拉环、在爆炸瞬间冲进房间的感觉。这不是来自引擎的参数。这是来自对玩家神经系统的理解。曾经,id有一个人拥有这种理解。现在他在达拉斯Galleria塔楼的顶层办公室里,开着香槟,对着游戏杂志的记者说他将建造游戏界的塔伦蒂诺式工作室。id没有这种人。阿德里安·卡马克是世界上最优秀的美术总监之一,但他是通过视觉和材质工作的,不是通过玩家心理学。凯文·克劳德能设计出节奏精准的关卡,但他服从引擎的约束——这是他在id学会的第一条法则。约翰·卡什能让网络代码在两百毫秒延迟下保持流畅,但他对关卡设计的最后一句话永远是让设计师做决定,他只确保技术不成为瓶颈。这些人聚合在一起,构成了一台世界上最强悍的技术生产机器。但它是一台机器,没有方向感。方向盘在六年前就安装在一个叫罗梅罗的人手里,而当那颗方向盘被拆掉后,整辆车继续沿着惯性向前疾驰,靠的是引擎本身持续加速的巨大动量。这个动量能维持多久?
1998年春天,id Software发布了《雷神之锤II》的官方补丁包,包含了新的地图、新的死亡竞赛模式和大量技术改进。评测分数仍然很高。销售数字仍然健康。引擎授权仍然在给公司带来持续的收入——Valve的那个项目,现在被外界称为《半条命》,据说做得很大,但还没有哪个记者真正看到过可玩的版本。id看上去在继续前进。但内部的某种意识正在变得清晰。它在各种会议上以不同形式出现。威尔伯在预算会上指出,id的品牌讨论热度在过去一年里下降了,而几个新的名字——《虚幻》的社区活跃度持续攀升,《半条命》在曝光的少量截图中流露出某种id产品中已经很久没见到的特质——正在占据玩家注意力的前沿地带。产品经理指出,id的游戏在专业评测中被提及的优势越来越集中在技术维度——引擎、帧率、网络代码——而越来越少被与特定体验、特定情感记忆联系在一起。卡马克在1998年夏天的QuakeCon上做了一次公开演讲。
那是在达拉斯郊区的一家酒店会议厅,台下坐着八百名深度硬核玩家,其中许多人已经在那里待了三天。卡马克站在台前,穿着他惯常的T恤和牛仔裤,用不紧不慢的语速解释《雷神之锤III》的引擎架构——曲面渲染、可见性计算、新的网络协议。在演讲的某个时刻,一位观众举手提问,问他能否让《雷神之锤III》也拥有《毁灭战士》那种让人害怕又上瘾的感觉。卡马克沉默了一会儿。这个沉默在会场里持续的时间大概只有几秒,但对于一个习惯于在高延迟网络连接上用毫秒衡量误差的人来说,那是一段很长的时间。他说,《雷神之锤III》的设计目标是成为世界上最好的死亡竞赛游戏。恐惧感和探索感不是多人竞技的核心要素。那是单人游戏的工作。他们现在不重点做单人游戏。这句话在会场里引起了少数低声交谈。并不多。大多数人继续听下一个技术问题。但它被记录了下来。它后来被一些游戏记者反复引用,被放在关于id方向感的回顾文章里。卡马克自己大概从来没有意识到这句话在别人听来意味着什么。
在他的逻辑框架里,这是一个准确的陈述:引擎现在的最优用途是多人竞技,而对那种体验的精细打磨需要不同的人。他指的是不同类型的设计师——专攻多人平衡的设计师,懂网络代码的设计师,能在毫秒级别精确调整移动速度和武器射速关系的人。这些人不是罗梅罗。这些人永远不会是罗梅罗。他在寻找一个新的创意平衡点,一个能够将那台正在疯狂加速的引擎的能量转化为文化现象的配置。但他能想到的所有配置都是功能性的——某种特定的专业人士组合,某种特定的组织结构,某种更精确的设计方法论。他从没想过这种配置可能无法被分解为可替换的部件。一千一百多公里之外。达拉斯Galleria塔楼。离子风暴的支票簿正在以令人眩晕的速度燃烧。罗梅罗的《大刀》开发团队膨胀到了六十二人。办公室里的争吵越来越频繁地以摔门声结束。汤姆·霍尔在八月的一个下午走进罗梅罗的办公室,看到一张摊开的关卡总图,图上用红色标记标出十几处无法实现的机制——其中相当一部分是霍尔在数月前就已经标注过的。
Eidos的市场团队发来传真,要求确认下一个里程碑的完成百分比。空调在那天下午停了。达拉斯八月的湿热渗进塔楼的顶层套间。罗梅罗坐在这堆设计图、传真和沉默的争吵残骸中间,面对着一个事实:他拥有充足的资金、最大的办公室、最大的嗓门——但他拥有的引擎无法支撑他看见的那个设计。而那个唯一能建造这种引擎的人,此刻正在威斯康星州暴风雪中的一栋黑色玻璃大楼里,独自调试着根本不需要这些设计的、朝着另一个方向高速运转的引擎。这种双向残缺的状态——一台引擎至上的理性机器失去了文化罗盘,一个摇滚明星的宏大愿景失去了技术脊骨——不是两个人分手后的私人悲剧。它是某种系统性的悖论。这两个人从密西西比河边那间车库起家,碾过软盘公司的压迫限制、共享软件的发行壁垒、256色调色板的技术边界,用六年时间把一个两人合写的梦想压进了全世界的硬盘。在那六年里,他们互为对方的功能延伸。卡马克造发动机,罗梅罗踩油门。卡马克定义可能性的边界,罗梅罗在边界上点燃篝火。
他们的争吵、碰撞、彼此否决的深夜——那些都是这台双引擎系统在运转中必然产生的摩擦热。但现在发动机和点火器分开了,各自试图独自运转。各自开始出现对方曾经天然就能弥补的系统性故障。1998年12月,麦迪逊的黑色玻璃大楼覆在一层薄雪下面。id Software的《雷神之锤III》引擎已经进入最后的封闭开发阶段。卡马克的办公室窗帘依然拉着。灯依然亮着。他刚刚写完一段关于曲面渲染的代码,这段代码将在此后的几年里被整个游戏行业反复引用和拆解。它是技术上近乎完美的作品——高效、干净、完整地实现了此前只有极少数研究论文才讨论过的算法思想。他保存了文件,关闭了编辑器。然后他站起来,走到窗边,拉开了窗帘。麦迪逊的雪在路灯下安静地飘落。街对面是一栋银行大楼,窗户全黑了。更远处是莫诺纳湖冰封的湖面,几个黑点在冰上移动——冰钓的人,或者是晚归的溜冰者。他站在那里看了一会儿。没有任何事情发生。没有顿悟,没有戏剧性的情绪转折,没有任何可以编写成代码的结论。
然后他拉回窗帘,坐回椅子里,打开了明天要讨论的bug列表。id这艘技术巨轮拥有了史上最强悍的引擎,但导航室里的那张海图,从罗梅罗离开的那个六月下午起,就再也没有人更新过。