第 1 章

第1章 车库之前,河之前(约 1990 年)

约翰·卡马克在十四岁那年明白了一件事:世界是一套糟糕的系统。这个结论不是从书本里读来的。它来自堪萨斯城郊那所少年管教机构的高墙之内,来自他每晚躺在窄床上盯着天花板上裂缝时反复咀嚼的事实——他的生活是一连串无法预测的输入,产出的结果永远不合逻辑。母亲在短短几年内搬了四次家,每一次都意味着新的学校、新的邻居、新的规则。旧的关系还没建立就被切断,新的关系还没熟悉就被连根拔起。他在不同的教室里听同样的课程,在不同的餐桌上吃同样的罐头食品,在不同的后院看同样的天空,但所有这些重复都没有构成任何可辨认的模式。混乱不需要理由。混乱就这么发生了。

然后他遇到了那台电脑。那是在管教所的一间小房间里,墙壁漆成毫无野心的灰白色,荧光灯管发出持续的嗡嗡声,像某种低频率的警报。房间原本是给行政人员存放档案用的,后来不知出于什么原因——也许是某个管理者的善意,也许是预算表上的一笔意外开支——被塞进了一张桌子和一台Apple II。卡马克被允许每周在这里待几个小时,作为某种特权的交换:他必须保持安静,必须完成指定的功课,必须不对任何人提起他在键盘上敲了什么。他不在乎这些条件。当他第一次坐在那台机器前,盯着绿色荧光屏上闪烁的光标时,他感受到的东西不是兴奋,不是好奇,而是一种近乎生理性的确认:在这里,每一个输入都会产生确定的输出。按下RUN,程序就执行。写错一行代码,错误就精确地重复。没有模棱两可的眼神,没有突然改变的决定,没有大人世界里那些说不清道不明的情绪暗流。机器的回应是绝对的,因为它只遵循逻辑。而逻辑是唯一不需要解释的东西。

他花了几周时间弄清楚了这台Apple II的基本架构。管教所里没有编程教材,没有人可以请教,甚至没有一张完整的磁盘目录。他只能靠试错:输入命令,观察结果,记住模式。他很快发现自己的大脑在这方面运转得异常顺畅——不是因为他聪明,而是因为他有足够的动机。屏幕上的世界是唯一一个他能够完全理解的世界。每一行代码都是一条规则,每一个程序都是一套法律。当他让一个像素点从屏幕左侧移动到右侧时,那个像素点不会突然改变主意,不会因为情绪失控而停在半路,不会因为他昨天说了什么话而拒绝执行指令。它服从。它精确地服从。

他的第一个真正意义上的项目是一个图形演示程序。严格来说它不算游戏——没有分数,没有关卡,没有可操作的角色——但它能在屏幕上画出一条条彩色线条,让它们按照预设的轨迹旋转、交叉、扩散,形成某种类似万花筒的图案。这个程序从技术角度看并不复杂:几个循环,几组坐标计算,一些颜色值的切换。但对卡马克而言,它完成了一件更重要的事:它证明了混乱是可以被清理的。一堆杂乱无章的数据经过组织和编排之后,能够变成可预测的视觉秩序。屏幕上的每一条线都知道自己该去哪里。它们不会迷路。

他在管教所的夜晚反复调试这个程序。当其他少年在宿舍里争吵、吹牛或沉默地盯着天花板时,卡马克在脑子里运行代码。他发现在黑暗中闭上眼睛之后,能够逐行追溯程序的逻辑结构,就像在眼前展开一张无形的图纸。如果某个部分出了问题——比如某条线的颜色在第三轮循环后发生了偏移——他可以在脑子里定位到错误的大致位置,第二天回到机器前验证。这种能力后来会被别人称为天才或天赋,但在他十四岁的那个时空里,它只是一种生存策略的副产品。外部世界越混乱,内部思维就越需要秩序。代码成了他折叠情感的方式:把焦虑折叠进循环语句,把愤怒折叠进条件判断,把孤独折叠进那个永远不会背叛他的逻辑空间。

他并不知道,在两千公里之外的加利福尼亚州,另一个十四岁的少年正在用一种完全相反的方式应对同样破碎的生活。

约翰·罗梅罗的童年地图同样布满断裂线。父母离异之后,他跟着母亲和继父从一个镇子搬到另一个镇子,从加州内陆的干燥平原搬到亚利桑那的沙漠边缘。继父是个暴躁的男人,他的权威建立在音量、速度和不可预测的暴力威胁之上。家里的规则每天都在变:今天可以做的事明天就会招来一顿咒骂,昨天被默许的行为今天突然成了罪状。罗梅罗很早就学会了一种特殊的警觉——不是对危险的警觉,而是对权力波动的警觉。他学会了阅读房间里每一个人的情绪温度,学会了在继父的声音开始升高时迅速调整自己的表情和姿态,学会了用讨好、幽默或转移注意力来化解即将降临的暴风雨。

但真正的出口不在家里。街机厅是另一个世界。它的入口通常是一扇永远敞开的门,里面涌出的声音混合了电子音效、硬币撞击金属槽的脆响和人群的嘈杂交谈。空气里有热电子元件散发的微微焦味,有洒在地上的汽水蒸发后的甜腻残留,有太多身体挤在一起产生的温度。对大多数成年人而言,街机厅是噪音和浪费钱的代名词。对罗梅罗而言,它是宫殿。

他第一次走进去的时候大概八岁。那是一家开在购物中心边上的中型街机厅,靠墙排列着大约二十台机器,每台机器前都围着一小群人。《吃豆人》的黄色圆盘在蓝色迷宫里吞吃着豆点,《大金刚》里的木桶从倾斜的钢架上滚下来,《太空侵略者》的像素外星人以不可阻挡的缓慢步伐向下逼近。罗梅罗站在这些机器之间,仰着头看那些闪烁的屏幕,胸腔里涌起一种他后来花了很长时间才找到词语去描述的感受:在这里,规则是明确的。每一款游戏都有一套固定的机制,每一个操作都会产生可见的结果。高分榜上的数字是客观的证明——你按对了多少次按钮,你做出了多少次正确的判断,你就得到多少分。没有人可以夺走这个数字。继父不能吼叫它消失,搬家不能让它失效,学校里那些比他高大的孩子不能把它抢走。

他开始把所有的零花钱都投进这些机器里。硬币一枚接一枚地滑进投币口,每一声清脆的咔嗒都像是一张通往短暂王国的门票。他很快展现出一种罕见的天赋:反应速度极快,手指在摇杆和按钮之间的移动几乎没有犹豫。更重要的是,他有一种直觉——他能迅速读懂一款游戏的底层逻辑。《吃豆人》不是关于吃豆子,是关于路径优化和敌人行为模式的识别。《大金刚》不是关于爬梯子,是关于节奏控制和风险窗口的计算。《保卫者》不是关于射击外星人,是关于资源管理和多线程注意力分配。他没有把这些东西写成公式。他不需要。他的大脑用另一种方式处理这些信息:把它们变成肌肉记忆,变成手指的自动反应,变成一种近乎本能的判断力。当他站在机器前,双手握住摇杆时,整个街机厅的嘈杂声都退到了背景里。屏幕成为他全部视野的中心。

表演是从这里开始的。他发现高分不只是高分。它是一种权力。当他打破一台机器的最高纪录时,人群会围过来。有人会发出惊叹,有人会拍他的肩膀,有人会问他怎么做到的。那些平时不看他一眼的成年人突然对他的手指产生了兴趣。那些在学校里欺负他的大孩子突然在他身后变成了观众。在这个小小的、由像素和电路构成的王国里,他是不可挑战的统治者。这种感觉像电流一样击中了他的脊椎。它不是满足感,不是快乐——它是统治感。是他第一次体验到世界可以被征服的证据。

他把这种感觉带回了家。继父的咆哮仍然会发生,母亲的眼泪仍然会在晚饭后悄悄流下,搬家的通知仍然会毫无预警地出现在某个星期三的早晨——但他现在有了一个秘密武器。他知道自己擅长某件事。他知道在某些时刻、某些地点、某些规则之下,他是最强的。这个认知没有改变他的物质处境,但它改变了他在处境中的姿态。他开始用不同的方式说话:更响亮一点,更快一点,带着一种半真半假的夸张自信。他开始在学校的课间给同学们讲他在街机厅的战绩,把那些分数描述得像战争史诗里的功勋数字。有些孩子相信他,有些孩子嘲笑他——但重要的是他在讲。他在用语言建造一个自己说了算的世界。

十二岁那年夏天,他在一台《小行星》机器上打出了一个本地纪录。那个下午街机厅里的人特别多——大概是外面太热了,所有人都躲进了这间有空调的屋子里——当他打到第三十多波的时候,身后已经围了将近二十个人。他能感觉到他们的目光压在他的后颈上,能听到他们在他每次躲过一块碎裂的大石头时发出的吸气声。他没有回头。他把全部注意力都锁死在屏幕上那个三角形的小飞船上,手指在按钮上以一种他自己事后都无法复述的节奏敲击着。当最后一条命终于耗尽时,高分榜跳了出来。他的名字排在最上面一行的最左边位置:J.R.——后面跟着一串数字。人群发出了那种混合着佩服和不甘心的嘈杂声。有人吹了声口哨。一个比他高出整整一个头的男孩挤过来问他能不能教他怎么躲第三波的双向陨石群。罗梅罗转过头看着那个男孩的脸——那张脸上有真诚的、毫不设防的期待——然后他说了一句他自己都没料到的话:“当然可以。但你要先给我买一瓶汽水。”男孩去了。

罗梅罗在那个午后学到的东西比他之前十二年的全部人生课程加起来还要重要:技巧可以转化为权力,权力可以转化为资源,资源可以转化为更多的权力。这个循环不是关于公平或正义或任何大人们整天挂在嘴边的空洞概念——它只是一个可以被优化的系统。而他恰好擅长优化系统。

他开始制作游戏是在一年之后。他家那时候已经有了一台Apple II——母亲用分期付款买的,大概是希望这台机器能给儿子提供某种“正经的未来”。罗梅罗很快发现这台电脑和街机厅里的机器有一个根本性的不同:街机只能运行别人写好的程序;Apple II可以运行他自己写的程序。这个发现让他陷入了一种近乎狂热的兴奋状态。他开始从杂志上抄代码。《字节》杂志的后面几页有时会刊登完整的游戏程序清单——密密麻麻的数字和指令行——他把它们一行行敲进电脑里,然后运行、调试、修改。最初的几次尝试大多是失败的:程序崩溃、画面乱码、或者运行出来的东西和杂志上的截图完全不一样。但他不觉得沮丧。每一次失败都告诉他某条规则的存在——某个他之前不知道的语法约束、某个被他忽略的逻辑漏洞——而知道规则就意味着下一步可以征服它。

他的第一款完整的原创作品是一个简单的迷宫游戏:玩家控制一个像素小人穿过越来越复杂的迷宫路径,躲避移动的障碍物——其实就是几个用循环语句驱动的方块——到达终点后进入下一关。关卡设计是他亲手画的:在坐标纸上用铅笔一格一格涂出路径轮廓,然后把这些坐标转换成数据数组写进代码里。画关卡的过程让他体验到一种全新的快乐。它不是街机厅里的那种征服感——那是打败别人设定的挑战之后获得的快感。画关卡是建造:是他来决定迷宫的形状、障碍物的位置、通道的宽窄和死胡同的数量。是他来设计别人将要面对的困难。是他来制定规则。

他把这个游戏拿给几个朋友玩的时候,站在他们身后看着他们在迷宫里撞墙、被方块追上、在死胡同里来回打转——那种感觉比他自己玩游戏得分还要强烈得多。因为这次他不是征服者。他是造物主。

他开始在坐标纸上画更多的关卡:更复杂的路径、更狡猾的陷阱、更诡异的障碍物运动模式。他画城堡、画地牢、画外星基地、画一切他能在漫画书和电影里看到的场景的像素化版本。这些图纸堆在他的床底下,放在一个旧鞋盒里,和那些从杂志上撕下来的编程专栏一起渐渐发黄卷边。他的继父有一次发现了这些图纸——大概是在找什么东西的时候翻了床底——然后把它们抽出来举在手里看了一会儿。罗梅罗站在房间门口,心跳加速到几乎能听见血液冲击耳膜的声音。他不知道接下来会发生什么:嘲笑、怒吼、或者更糟——那些图纸会被撕成碎片扔进垃圾桶里。但继父只是哼了一声。“画这些东西有什么用?”他把图纸丢回床上,转身走了出去。

罗梅罗站在原地没有动。他的胸腔里涌起一种混合着恐惧、愤怒和轻蔑的情绪——但他没有让它爆发出来。他只是走过去把图纸一张张捡起来放回鞋盒里,然后把鞋盒推到床底更深的位置。他知道答案:这些东西有什么用?它们是砖块和砂浆。它们正在建造一个王国——一个他终有一天可以完全统治的王国。

卡马克离开管教所之后的那几年是一段加速坠落的时期。他的母亲再次搬家了——这次是搬到密苏里州的一个小镇——而他再次成了新学校里那个不合群的孩子:穿着旧衣服、说话太少、对体育课和舞会和一切青少年社交仪式表现出彻底的漠不关心。老师们对他的评价分裂成两种截然相反的意见:数学和科学老师认为他聪明得惊人;其他科目的老师认为他懒惰得令人发指。他没有替自己辩解的习惯。辩解意味着你要接受别人的评价体系——你要用他们的语言、他们的逻辑、他们的标准来证明自己符合某种要求——而卡马克早在管教所时期就已经放弃了这个策略。他不是不符合标准;他是对整个评价体系失去了兴趣。

他唯一还在乎的评价体系运行在那台Apple II里面。那台机器已经成了他身体的一部分——不是比喻意义上的延伸器官,而是字面意义上的义肢:当他的手放在键盘上时,他能感受到一种完整的闭合感,就像某个缺失的部分被重新接回了原位。没有键盘的时候他是残缺的:笨拙、沉默、无法表达任何超过十个单词以上的连贯想法。有了键盘之后他是完整的:精确、流畅、能够在代码的空间里建造任何他能想象的结构。

他开始尝试更复杂的东西:图形渲染优化、内存管理技巧、汇编语言片段嵌入BASIC程序中的边界突破方法。这些词汇听起来像技术术语——事实上它们确实是技术术语——但对卡马克来说它们有另一层含义:它们是清洁工具。每一次优化都是对冗余的清除;每一次内存管理都是对混乱的整顿;每一次汇编语言的边界突破都是对既有规则的重新定义——不是为了破坏规则本身,而是为了建立更高效的规则。

他在一本二手计算机杂志上读到了关于3D图形渲染的初步讨论——那时候“3D”这个词在个人计算机领域还几乎是一个科幻概念——然后花了整整一个周末尝试在Apple II上实现一个简单的线框立方体旋转演示。Apple II的处理能力根本不足以运行真正的三维计算;它的CPU主频只有1兆赫多一点,内存容量用今天的眼光看几乎是个笑话。但他不在乎硬件限制。或者说他在乎的方式和别人不一样:别人把硬件限制看作天花板;他把硬件限制看作一道需要被破解的谜题。

他开始疯狂地削减计算量:去掉不必要的坐标转换步骤、用查表法代替实时三角函数运算、把浮点运算降级为定点整数近似——每一个削减都是一刀切向冗余脂肪的手术动作。两天之后他得到了一个勉强运行的演示程序:一个由白色线条构成的立方体在黑色背景上缓慢旋转,偶尔会因为整数近似的误差而发生微小的抖动变形。它不完美。但它在旋转。

卡马克盯着那个抖动的线框立方体看了很长时间——也许是十分钟,也许是半小时;他在那种状态下经常会失去对物理时间的感知——心里涌起的不是成就感或兴奋感或任何正常人完成一件困难工作后应该感受到的情绪。他感受到的是空虚。这个立方体旋转起来了;然后呢?它证明了算法可行;然后呢?屏幕上这个缓慢转动的几何形状和他十四岁那年编写的万花筒程序本质上做的是同一件事:在混乱中制造一小片秩序。但这片秩序是封闭的——它不指向任何人,不被任何人看见,不对任何人产生意义。

他把程序关掉了。屏幕回到绿色荧光字符闪烁的状态:一个光标静静地停在左上角的位置上等待着下一个指令的到来。他没有输入下一个指令。窗外是密苏里州冬夜的黑暗——那种中西部平原上特有的彻底黑暗:没有城市灯光反射在云层上形成的橘色光晕;没有车流声从远处传来;只有寂静本身压在大地上像一层沉重而无形的东西。

他知道他可以继续写下去——可以写更复杂的程序;可以实现更精妙的算法;可以在代码世界里建造越来越庞大越来越完美的秩序结构——但所有这些建造最终都只面对一个观众:他自己。这不是孤独的问题。他可以忍受孤独;孤独对他来说从来不是惩罚而是默认状态。这是意义的问题:如果一座建筑物永远只有建造者本人进入过它算不算真正存在。

他把这个问题折叠进了一个新的编程项目里——这是他处理一切问题的方式:他开始尝试编写一个简单的游戏引擎。不是图形演示程序;不是算法验证工具;而是一个可以被别人操作的东西。即使那个“别人”目前只存在于假设中。

这个引擎极其简陋:一个角色可以在屏幕上左右移动;可以跳跃;可以触碰到某些被标记为“平台”的像素区域后停止下落——基本上就是后来被称为“平台游戏”那种类型的最原始骨架版本。他在编写跳跃物理时遇到了一个棘手问题:角色起跳后的加速度曲线总是不对劲——要么太飘像在水里;要么太硬像被弹弓发射出去;始终找不到那个让人觉得“舒服”的中间值。

他花了三天时间反复调整参数组合:重力系数;初始速度衰减率;最高点滞空帧数阈值——每一次微调都在改变角色在屏幕上划出的那道看不见弧线的形状,而那道弧线的形状直接决定了操作者手指按下跳跃键那一刻获得的反馈感受是顺畅还是别扭。第三天晚上他终于找到了那组参数值。后来他会知道这种调试过程被称为“手感打磨”;那时候他只是觉得“这个数字对了”。角色起跳落地的弧线现在看起来“正确”——不是数学意义上的正确(数学上所有参数组合都是合法的);而是身体意义上的正确(当你的眼睛看到那个像素小人跃起落下时你的大脑会自动接受这个运动轨迹为自然)。

他看着那个像素小人在屏幕上跳了几下然后停了下来。空虚感还在。这个跳跃弧线是对的但它仍然只存在于他的房间里他的屏幕上他的眼睛里没有任何第二个人会按下那个跳跃键没有任何第二双眼睛会看到那个像素小人按照这条精心打磨过的弧线划过屏幕空间。

他把机器关了。

罗梅罗十五岁那年夏天在街机厅里遇到了一个人。那个人叫不出名字——他们之间的对话总共不超过十句;年龄大概二十出头;开一辆掉了漆的福特皮卡停在街机厅后面的碎石停车场上;据说在一家本地修车厂工作但谁也说不准是不是真的因为他出现在街机厅的频率比任何有全职工作的人都高得多。

这个人玩的是一款相对冷门的游戏:《铁血战士》。那台机器通常空着——画面粗糙、难度曲线陡峭、操作手感生硬——但这个人每次来都直接走向它像走向一台私人设备。罗梅罗注意到他不是因为他的技术(他的技术实际上相当平庸总是在第三关就死光所有命);而是因为他玩的时候脸上的表情和其他人完全不同:他不兴奋不紧张不愤怒也不快乐;他只是专注到了一种近乎消失的程度——好像他的身体还在摇杆前但他的意识已经完全转移进了屏幕里面那些粗糙像素构成的丛林战场中。

罗梅罗后来在一个午后站到了他的旁边看他玩了三局然后在他第四次投币的时候开口问了一个问题:“你为什么一直玩这个?这游戏做得不好。”

那个人转过头看了他一眼(这是他们第一次对视)然后说了一句让罗梅罗站在原地沉默了很久的话:“因为它是我写的。”

那个人的名字,后来罗梅罗确实打听到了(虽然这段关系的后续发展在现存材料中没有留下更多记录);但真正重要的是,那句话在他脑子里引发的一场地震。写游戏的人,是可以站在街机厅里的。写游戏的人,不是一个遥远的神秘存在,不是杂志上那些署名缩写后面的匿名专家,不是只在公司商标和版权声明中出现名字的抽象实体——他是一个开着掉了漆的福特皮卡的人,是一个会在第三关死光所有命的人,是一个站在你旁边,看着你玩他自己写的游戏的人。

这意味着你也可以成为这个人。

罗梅罗那天晚上回到家之后从床底拉出那个旧鞋盒把所有画过关卡的坐标纸铺在地板上排成一个扇形然后坐在中间盯着它们看了很久。这些图纸不再是砖块和砂浆了;它们是蓝图——不是用来建造一个虚拟王国的蓝图而是用来建造一条通道的蓝图:一条从他现在坐着的这个房间通往某个街机厅某台机器某个高分榜最上面一行最左边位置的通道。

他开始更系统地学习编程:不再只是抄杂志上的代码清单而是开始理解每一行指令为什么这样写为什么放在这个位置为什么和上一行之间要留一个空格或不留空格;开始拆解别人的程序像拆解一台发动机一样把零件一件件取下来看它们的形状和功能然后把它们重新组装成不同的东西;开始在脑子里建立一套自己的函数库——不是写在磁盘上而是记在神经元之间:这个模块处理碰撞检测这个模块处理分数累加这个模块处理关卡切换。

这个过程持续了将近两年在此期间他又搬了一次家又换了一次学校又面对了一批新的需要重新证明自己值得被认真对待的面孔而这些面孔和之前所有的面孔一样最初总是带着怀疑和漠然直到他在某件事上展现出压倒性的优势之后才会转变为尊重或嫉妒或两者之间某种不安定的混合物。

他已经习惯了这种模式:先被低估,然后证明,然后获得短暂的权威,然后搬家,然后一切归零,重新开始——这个循环和他继父的情绪波动一样不可预测,一样无法控制,一样让他感到厌倦到骨髓深处。但他知道自己手里握着的东西正在变得越来越具体,越来越锋利,越来越接近那个临界点:当他的编程能力强大到可以独立制作一款完整的、商业品质的游戏时,他就再也不用向任何人证明任何事了,因为产品本身会替他说话,产品本身就是最高分榜上那个永不消失的名字,产品本身就是那个不需要解释、不需要讨好、不需要看任何人脸色的终极权威。

卡马克在那个密苏里小镇度过的最后几个月里完成了一个决定性的转变:他开始把编程视为一种职业而不是一种逃避方式。这个转变的触发点很具体也很世俗——他需要钱买一台更好的电脑而那台Apple II已经无法满足他对硬件性能日益增长的需求所以他必须找到一种方法让编程产生收入而不是仅仅消耗电力和时间。

他开始接一些本地小企业的零活:用BASIC写简单的库存管理程序,用汇编优化某些重复性数据处理的效率,用一切他能找到的方式把代码转化为现金,然后把这些现金再投入到更好的设备、更好的参考书、更好的开发工具中去,形成了一个自我驱动的技术升级循环。这个循环的速度快得惊人,因为他在编程上投入的时间远超任何正常青少年的课外兴趣范畴。而他每赚到一笔钱之后,购买的第一样东西永远不是食物,不是衣服,不是任何正常人会优先消费的东西,而是能让下一段代码运行得更快、更流畅、更接近他脑中那个理想秩序状态的硬件组件,或软件工具,或参考手册,或三者兼有之。

在这个过程中,他逐渐意识到一件之前从未认真思考过的事情:市场上存在着大量需要编程技能的工作,而这些工作中的大多数从业者并没有他那种近乎病态的秩序强迫症,也没有他那种愿意连续十几个小时坐在屏幕前反复调试同一个参数直到它“正确”为止的耐力,也没有他那种把整个问题域拆解成最小可处理单元,然后在每一个单元上施加最优解的系统性思维方式。这意味着他在这个特定领域拥有某种稀缺资源,而稀缺资源在市场上有价格,而且价格往往不低。

这不是一个关于热情或使命或天赋觉醒的故事;这是一个关于供需关系和比较优势的经济学故事。而卡马克恰好是那种能够用冷静到近乎冷酷的方式计算自身处境的人。这种能力和他编写代码时的思维方式来自同一个源头:把世界视为系统,把自身视为系统中的一个变量,把决策视为对这个变量的优化操作,把情绪视为需要被隔离在计算过程之外的噪声干扰源。因为他早就知道,情绪不会改变任何一行代码的执行结果,情绪只会增加出错概率。而他在管教所时期就已经受够了不可预测的错误带来的后果,所以他决定不再让情绪参与决策过程,任何决策过程,无论是关于编程,还是关于人生,还是关于下一步应该买哪块扩展卡才能让渲染速度提升百分之三这种极其具体的技术问题。

这种决策方式后来会被外界解读为冷漠、孤僻、社交障碍,或者某种谱系特质。但真正的原因比所有这些标签都简单得多,也实用得多,也冷酷得多,也有效得多,也孤独得多,也强大得多,也悲哀得多,也无可辩驳得多,也注定要在未来十几年里反复制造同一种后果——他会建造出世界上最精密的引擎,但引擎本身不会告诉任何人应该用它来做什么。引擎只会运行,而方向需要另一个人来定义。

而那个人此刻还在两千公里外的加利福尼亚州画着越来越复杂的关卡图纸,完全不知道自己的命运正在被一个从未谋面的密苏里少年用一种纯逻辑的方式缓慢而不可逆转地拉向同一个交汇点。就像两条河流在各自穿越了完全不同的地形之后,被同一个重力场牵引着流向同一片海洋。而这个重力场的名字不是命运,不是巧合,不是任何神秘主义叙事喜欢使用的词汇,而是计算机本身,是这台正在以指数速度渗透进普通人生活的机器所创造的全新生态位。这个生态位需要两种完全不同的人才能被完整占据:一种是能够建造引擎的人,一种是能够定义引擎应该驶向何方的人。而这两种人恰好正在各自的孤绝与喧闹中,以各自截然相反的方式把自己锻造成那种形状而不自知,而不自觉,而不需要自知。因为引力本身不需要被感知,引力只需要存在,然后一切轨迹都会自动弯曲向同一个方向。这是物理学,这是系统论,这是卡马克十四岁那年就已经本能地理解但尚未找到词语去表述的基本原理。

而他此刻正坐在密苏里州一间租来的房间里,面对一台性能已经逼近Apple II极限但仍然远远不够用的机器,手指悬在键盘上方,眼睛盯着屏幕上那行尚未完成的跳跃物理代码,脑子里运转着的不是诗意,不是哲学,不是任何宏大叙事,而是一个极其具体、极其冷静、极其典型的卡马克式问题:重力系数应该设成多少,才能让玩家在按下跳跃键的那一刻,感受到的不是数字,而是自由落体本身应该有的那种令人心跳加速的重量感?而这个问题此刻还没有答案,而这个问题此刻还不需要答案,因为此刻还没有玩家,此刻还没有那双会在未来按下跳跃键的手,此刻还没有那双会在未来看到像素小人划过弧线时眼睛发亮的眼睛,此刻只有他一个人,在这间房间里,在这台机器前,在这行代码中,在这片他自己建造的秩序孤岛上,等待着那个尚未到来的时刻,那个他尚未意识到即将到来的时刻,那个将彻底改变一切的时刻。而窗外,密苏里州的冬夜依旧黑暗,依旧寂静,依旧像一层沉重而无形的东西压在大地上。而他的手终于落了下去,开始输入下一行参数值,因为那是他唯一知道该做的事,也是他唯一信任该做。

的事也是他唯一能做该做的事,也是他从十四岁那年起就一直在做的事,也是他将用尽余生继续做的事。不管有没有观众,不管有没有意义,不管有没有另一个人站在他的屏幕前面按下那个跳跃键,看到那条弧线,然后说出一句他此刻还无法想象但终将听到的话。这句话的内容此刻不重要,重要的是这句话将会存在,这句话将会从另一个人的嘴里说出来,这句话将会证明所有这些孤独、所有这些调试、所有这些在黑暗中闭着眼睛追溯代码逻辑结构的夜晚都不是封闭的,不是无意义的,不是只属于建造者一个人的,。因为当引擎终于遇到那个能够定义它方向的人时,引擎本身也会被改变,引擎本身也会被赋予意义,引擎本身也会从一个纯粹的逻辑系统变成某种承载着人类欲望、人类恐惧、人类征服欲和人类表演欲的混合体。而这种混合体正是未来一切伟大游戏的核心秘密。而这个秘密此刻还散落在两个尚未相遇的少年各自的生命轨迹中,像两块被分开存放的放射性物质,各自发出微弱的辐射,各自等待着达到临界质量的那一刻,各自不知道对方的存在,各自不知道对方正在以完全,相反的方式做着完全相同的。

事各自不知道对方正在以完全不同的速度向着完全相同的方向移动。各自不知道密西西比河就在那里静静流淌,等待着某一天、某个地点、某间车库、某段代码、某次对视、某句话语,将两块物质猛然推到一起,引发一场将持续燃烧整个九十年代的链式反应。这场反应的产物将是第一人称射击,将是DOOM,将是id Software,将是所有此后天才搭档都要面对的那个永恒问题。而当引擎与摇滚明星不再需要彼此的时候,当系统与表演者不再能互相定义的时候,当秩序与征服欲终于分道扬镳的时候,他们将会发现,他们各自最核心的那个部分,早在他们写下第一行共享代码之前,就已经注定无法兼容。因为他们从一开始就不是在同一种引力场中成长起来的,他们从一开始就不是在同一种生存策略中锻造出来的,他们从一开始就不是为了彼此而被设计出来的。他们只是恰好被同一个生态位所需要,而被历史推到了同一个坐标点上。而当这个生态位最终被填满之后,当历史不再需要这种特定组合之后,当产业成熟到可以用团队制度和流程管理替代天才搭档之间的脆弱平衡之后,他们之间的裂缝就会

以一种不可挽回的方式展开,而这种裂缝的源头不在Softdisk的格子间,不在id Software的车库,不在DOOM的开发会议上,不在任何他们曾经并肩作战的地方,而在堪萨斯城郊那所少年管教机构的高墙之内,在加利福尼亚州那间永远敞开的街机厅门口,在十四岁的卡马克第一次看到绿色荧光屏上闪烁光标的那一刻,在十二岁的罗梅罗第一次听到人群因为他打破高分纪录而发出惊叹声的那一刻。在这些时刻,他们各自做出了选择,而这些选择的方向从一开始就是相反的。而这些选择的力量将在未来十几年里持续拉扯,持续碰撞,持续创造出他们谁也无法单独创造的东西,也持续埋下他们谁也无法单独拆除的炸药。而这个故事的第一章就停在这里,停在两个少年各自面对屏幕、各自面对空虚、各自面对那个尚未到来但终将到来的未知引力场的时刻,停在卡马克关掉机器后房间里只剩下呼吸声和黑暗的那个瞬间,停在罗梅罗坐在地板上被摊开的坐标纸包围、盯着那些蓝图想象着一条通向街机厅高分榜最顶端位置的通道的那个夜晚,停在密西西比河还在静静流淌,还没有倒映……

出任何车库灯光的那个年代,停在引擎与摇滚明星还不知道彼此存在的那个世界尽头。而这个尽头,正是所有开端必须落脚的地方,因为开端从来不是一个点,开端是一段尚未被定义的弧线。而弧线的形状,只有在它完成之后才能被看清。而此刻,弧线才刚刚开始弯曲。而此刻,弧线的另一端还隐藏在未来的浓雾之中。而此刻,唯一确定的事情只有一件:他们终将相遇,他们终将碰撞,他们终将创造出一些只有他们两个在一起时才能创造出的东西。而当这些东西被创造出来之后,当这些东西改变了整个产业、整个媒介、整个文化之后,他们终将面对那个所有天才搭档都必须面对的问题。而当那个问题最终降临的时候,它的答案早已写在了本章每一个字里行间,写在了那台Apple II冰冷外壳反射出的绿色荧光里,写在了那根被无数手掌磨得发亮的街机摇杆顶端的光滑表面上,写在了两个少年各自选择进入代码世界的方式里。而这种方式的差异,不是缺陷,不是错误,不是悲剧,也不是喜剧,它只是一段尚未结束的历史的第一页。而这一页的最后一行字,落在卡马克重新打开电脑的那个凌晨,他决定不再等待那

双尚未存在的手不再等待,那双尚未存在的眼睛不再等待,那句尚未存在的话。他决定继续写下去,不是因为找到了答案,而是因为他意识到问题本身就是答案的一部分,意识到空虚本身也是秩序的一部分,意识到孤独本身也是引擎的一部分。意识到在没有观众、没有玩家、没有摇滚明星的漫长岁月里,引擎仍然需要被建造,仍然需要被优化,仍然需要被调试,仍然需要在黑暗中一遍遍地运行,直到某个未知的时刻,某扇未知的门被推开,某张未知的脸出现在屏幕的另一侧,说出那句将定义一切也将撕裂一切的话。而那句话的内容此刻不重要,重要的是引擎已经在运转了。而引擎一旦开始运转就不会停下来,因为停下来意味着回到混乱,意味着回到不可预测,意味着回到那个由大人的情绪、搬家通知、继父的咆哮和天花板上裂缝构成的糟糕系统。而卡马克已经受够了糟糕系统,他已经选择了另一个方向,他已经建造了自己的秩序孤岛。而这座孤岛终将成为一片大陆的一部分,只是此刻他还不知道那片大陆的形状,也不知道那片大陆上还有另一个建造者正在用完全相反的方式建造着完全相同的梦想。而这个梦想的名

字将在几年后由两个约翰共同刻在一间密西西比河边的车库里,刻在所有此后进入第一人称视角射击游戏的玩家视网膜上,刻在整个计算机游戏产业的历史基因中。而这个基因的双螺旋结构,在本章结束时,已经完成了第一条链的全部转录,只剩下第二条链还在两千公里外的夜色中等待着自己的碱基序列被另一个约翰的手指敲进另一台键盘、另一块屏幕、另一段尚未开始但即将开始的代码中。而密西西比河还在流淌,而车库的门还关着,而故事才刚刚开始,而这一章必须在这里结束。不是因为故事讲完了,而是因为弧线已经弯曲到了必须松开手让它飞向下一段轨道的那个精确时刻。而这个时刻就是现在,就是这个句号之前最后一个字的最后一个笔画落下之前的那个瞬间,就是读者即将翻过这一页。而下一页的第一行字将不再是密苏里州的冬夜,不再是加利福尼亚州的烈日,不再是两个少年各自的孤绝与喧闹,而是路易斯安那州什里夫波特某栋平庸办公楼里的某间格子间、某张桌子上、某台电脑屏幕前某个即将改变一切的清晨。而这个清晨即将到来,而这一章已经结束。