机器在别人手里
0:00John Carmack 很早就知道,自己想成为程序员。
他要的不是在商店里碰一次键盘,也不是等老师安排一节电脑课。他要的是一整段不会被收走的时间:写一行程序,看它失败,改掉,再运行一次。问题是,那样的机器和时间一直在学校、商店,或者别人手里。
他第一次接触 Apple II 是在小学六年级。后来回看童年时,他反复提到的不是某个改变命运的游戏,而是稀缺:没有自己的电脑,买不起想读的书,也没有可以长期支配的编程环境。
有时,他能在 Radio Shack 的 TRS-80 展示机上输入一点程序;有时,他靠 BASIC、assembly 书和图书馆材料继续学。书、漫画、Dungeons & Dragons 和游戏给了他可以暂时进入的世界,可展示机会关掉,借来的书要归还,决定什么时候停止的人不是自己。
他后来回忆,自己从第一次使用 Apple II 到真正以编程为全职职业,中间又等了大约十年。
[001]
引用 [001]
Carmack 本人后见回忆支持早期目标与资源稀缺;不能据此把后面的违法行为写成单一、确定的心理因果。
early Apple II and childhood computer-access passages
David Kushner 在《Masters of Doom》里把那个夜晚讲得很具体。
十四岁的 Carmack 和几个朋友盯上了一所学校里的 Apple II。他们不是准备在机房多留一会儿,而是准备闯进去,把电脑偷出来。
按照 Kushner 的版本,Carmack 为计划制作了一种黏稠的铝热剂材料。他们想用高温在窗户上烧出一个可以进入的洞,避开直接砸碎玻璃的巨大声响。洞烧出来以后,其中一个同伴没有顺利通过。他打开了窗户,也触发了静默警报。警察赶来,计划结束在学校里。电脑没有被带走,几个人被捕。
真正留在 Carmack 身上的后果不是一次失败的恶作剧。他进入少年司法程序。Kushner 转述的心理评估使用了两个后来被反复引用的判断:一个“长着腿的大脑”,对其他人“没有同理心”。随后,Carmack 在少年管教机构待了一年。
Salon 和《洛杉矶时报》为这本书写的书评,都挑出了这段经历。在这些书评里,它太容易成为一个人物公式:少年为了电脑制造危险材料,心理评估又把他描述成一颗冷漠的大脑,于是后来的 Carmack 仿佛已经在十四岁那晚被解释完了。
Carmack 自己留下的版本没有这么整齐。他承认那是第一次违法,承认心理评估的结果很糟,也承认少年时期接触过炸弹和 thermite。他还把年轻的自己称作一个 amoral little jerk,一个不太在乎规则的混蛋小子。但在后来的另一篇人物特写里,他又把自己的成长概括为普通的、属于资优技术少年的童年。
[002]
引用 [002]
完整闯入场景与心理评估措辞属于 Kushner 传记版本;Carmack 的本人材料只用于交叉第一次违法、评估不利、一年管教和少年时期的自我描述。
- Masters of Doom: How Two Guys Created an Empire and Transformed Pop Culture
- John Carmack Answers
- Masters of Disruption - John Carmack interview series
Kushner-routed school Apple II, thermite, alarm and evaluation account; 1999 Carmack answer; 2003 reviews; 2005/2008 profiles
这件事重要,不是因为犯罪能够预告天才。Carmack 确实做过危险而违法的事,也有理由拒绝让这一件事代表整个童年。机器稀缺可以解释欲望,不能替选择开脱;心理评估里的两句狠话可以解释一种公众形象,也不能解释他的余生。
真正改变他人生方向的,不是这次闯入本身。改变发生在后来:机器、书、收入和同事终于能通过一份合法工作稳定地同时出现。那时,他不再需要先突破一扇窗,才有机会让程序继续运行。
离开少年管教机构以后,机器仍然不是理所当然属于他的东西。他短暂进入 University of Missouri-Kansas City,后来退学,做 Apple II 和 Apple IIGS 的合同编程。为了进入更可能赚钱的 IBM PC 市场,他曾租来一台 PC,给自己限定一个很短的移植窗口。
真正改变处境的是一份工作。进入路易斯安那州什里夫波特的 Softdisk 后,他每天面对一台四兆内存的三八六电脑,有工资买书,也有下班以后继续试错的房间。Softdisk 每月把软件、工具和小游戏装进磁盘交给订户,Carmack 得到持续的机器时间,也进入明确的交付节奏:新能力只有变成别人能运行的东西,才会离开他的电脑。
这份工资后来被他形容得近乎富足,因为书、披萨、Diet Coke 和游戏第一次可以稳定购买。更重要的是,试错不再每次从争取机器的使用权开始。
John Romero、Tom Hall 和 Jay Wilbur 也在这间办公室里。他们会看见 Carmack 做出的东西,会争论它有没有价值,也会决定下一步往哪里走。
可 Carmack 面对的是一套陌生的 PC 硬件。他开始购买和阅读能找到的一切资料,连广告也不放过。Romero 向他指出一个名字。
Michael Abrash。
此时,这个名字还不是一个会走进办公室的人。它只是印在纸上的署名。
[003]
引用 [003]
本人后见材料支持平台转换与持续工作条件;具体收入等非必要数字不进入本稿。
Apple-to-PC transition, short PC rental, Softdisk conditions, and reading Abrash
一个名字从纸上出现
4:45Carmack 转向 PC,并不是因为 PC 更适合动作游戏。恰恰相反,他和同事真正喜欢的那种运动感,当时更多出现在 Nintendo 的家用主机上。
《Super Mario Bros. 3》里,Mario 向前跑,地面、砖块和敌人从屏幕边缘连续出现。玩家不会觉得机器正在换页,只会觉得窗口外面还有世界。
NES 的显示硬件本来就要服务这样的游戏画面。它可以移动图块背景,把活动角色交给专用硬件处理。IBM PC 和 EGA 首先是通用计算与显示系统。如果人物每走一点,程序都经由 CPU 和总线重画整块屏幕,当时的普通 PC 很难保持同样的连续速度;直接切到下一屏,又会失去那种运动感。
PC 市场更大,更可能让他们靠软件生活;可他们想做的体验,偏偏在另一类机器上更容易实现。Softdisk 的许多 PC 游戏更像一组相邻房间:角色走到边缘,旧画面结束,新画面出现。规则仍然成立,运动却不再连续。
滚屏因此不是一次孤立的炫技。Carmack 要验证的是,他们能不能在每天工作、也更可能卖出软件的机器上,做出自己真正愿意玩的动作游戏。
[004]
引用 [004]
Hall 的回忆支持现场参照物与 demo 动机;Carmack 的后见解释支持 PC 整屏重画代价。主机与 PC 的一句差别只服务人物选择,不扩成硬件通史。
Hall's NES/SMB3 comparison and Carmack's later full-redraw / barely-possible explanation
Abrash 的文章在这里提供了一层台阶。
Carmack 后来写得很清楚:Romero 让他注意到 Abrash 的文章;他从中学到 EGA video controller 的那些“黑暗秘密”,之后又发展出自己的技巧。
只用一句话解释这层关系:Abrash 公开了怎样改变屏幕正在观看显存的哪一部分;Carmack 还要解决,窗口移动以后,怎样把新出现的游戏世界补到边缘。
Abrash 没有把完整的横向滚屏游戏写在纸上。Carmack 也不是在真空里第一次发现 EGA 能做什么。知识先由一个没有见过的作者公开,读者再把它推进一个新的用途。
[005]
引用 [005]
前言直接支持文章影响与归属边界;不能把 Abrash 的公开控制器知识和 Carmack 后续游戏方法合并成同一项发明。
foreword passages on Romero, Abrash articles, EGA controller knowledge, and Carmack's own tricks
一九九零年九月的一晚,这个问题跟着 Carmack 留到下班以后。
Tom Hall 看见屏幕已经能够平滑滚动。办公室角落里正放着一台 NES,运行《Super Mario Bros. 3》。Hall 后来回忆,自己看着 Carmack 的实验,又看向那台主机,提出一个很具体的挑战:既然已经能滚,为什么不在今晚把 Mario 3 的第一关做成一段 PC demo?
他们不是要完成一款游戏,也没有先写商业计划。他们只想让第二天走进办公室的人,一眼看见这种能力意味着什么。
Hall 制作图像和地图,Carmack 继续处理程序。Romero 后来的回忆说,两人大约用了六个小时。凌晨五点左右,他们把 demo 放进一张软盘,再把软盘立在 Romero 的键盘上。
熟悉的第一关就是一把尺子。Hall 不需要解释 EGA,也不需要展示速度数字;只要 Mario 在 PC 上连续向前跑,差别就会自己出现。
上面写着两个词。
Run me。
[006]
引用 [006]
Hall 与 Romero 都是多年后参与者回忆;日期有一天差异,正文只使用 1990 年 9 月的一晚。
DDICI overnight demo, Hall's NES comparison, six-hour account, floppy on keyboard marked Run me
第二天,Romero 来到办公室,把软盘放进电脑。
他开始移动角色。就在整个 EGA 屏幕第一次平滑向左移动时,他后来形容自己的现实被打碎了,脑子像被清空。接下来的三个小时,他几乎无法工作。
震惊不只来自画面好看。Romero 自己也写游戏。他知道 PC 动作游戏此前通常怎样换屏,知道一段不能连续移动的关卡会给玩家什么感觉,也知道这块屏幕刚刚跨过了哪条边界。
他把 demo 拿给办公室里的朋友看。有人并不觉得特别,因为他们看到的只是一小段 Mario 仿作。同一块屏幕,在不同的人眼里变成了不同东西。
Hall 看见一个技术能力可以在一夜之间变成关卡。
有些同事看见一个小玩具。
Romero 看见的,是离开 Softdisk 的门票。
等 Carmack 和 Hall 到公司后,Romero 一遍遍告诉他们,这可以成为新公司的基础。Jay Wilbur 起初笑了。随后,他关上门。几个人开始认真讨论,应该拿这项能力做什么。
那扇门关上以后,问题已经从“PC 能不能滚”变成“他们愿不愿意把职业押在这种差别上”。Softdisk 提供机器、工资和稳定环境;离开意味着重新寻找发行方式,也意味着这项能力如果不能变成完整游戏,几个人会一起失去刚刚获得的条件。
后来,他们又制作了一份更完整的 Mario demo,试图交给 Nintendo。Nintendo 没有接下这条路线。真正的出口,是他们随后设计的新游戏 Commander Keen,再加上 shareware 发行。键盘上的软盘没有自动变成公司;它只是让几个人第一次看见,这项能力值得继续冒险。
[007]
引用 [007]
震惊与商业判断来自 Romero 后见回忆;节目让反应属于见证者,不把它升级为完整行业首创证明。
Romero's first run, three-hour reaction, coworkers' mixed response, Wilbur closing the door, and exit-ticket interpretation
Abrash 当时不知道这张软盘,也不知道自己的文章已经出现在这间办公室的因果链里。
一篇文章离开作者以后,不会报告自己去了哪里。作者看不见某个陌生读者怎样试错,也不知道读者会把文字推到哪个方向。
作者从哪里来
9:44Michael Abrash 是一名程序员,也是一名技术作者。
Carmack 在杂志上认识的是后一种身份:一个能把复杂硬件、程序性能和试验过程写清楚的人。但那些文章并不是从旁观别人的技术开始的。Abrash 先在真实项目里写程序,碰到机器和工具的限制,再把亲手试过的方法写出来。
在那些图形文章出现以前,Abrash 面前的还不是 EGA,而是一项必须真正运行起来的能源模拟研究。
[008]
引用 [008]
两份本人文字支持 Abrash 当时的程序员 / 技术作者双重身份,以及 Carmack 从杂志认识作者的关系;本段不借后来的 Quake、Valve、Meta 或 VR 经历证明早期写作资格。
- Graphics Programming Black Book - Introduction and Acknowledgments
- John Carmack's Foreword to Graphics Programming Black Book
Black Book acknowledgments and introduction on Abrash's article writing and hands-on development; Carmack foreword on the graphics-hardware and code-optimization articles he read
那时,Abrash 跟着 University of Pennsylvania 的一位教授工作。
教授拿到一笔 Department of Energy 的模拟研究经费,要让现实里的能源问题先在计算机里试演。
这份工作有什么用?
想象一批建筑开始使用太阳能设备。一天最忙的时候,城市可能少需要一部分电。电力公司得提前判断:原本要准备的发电能力和成本,哪些可以省下来;以后向自发电设施买电、卖电,又该按什么费率计算。
它不可能先按一个猜测安排发电、投资和价格,过几年发现不对,再把已经花出去的钱拿回来。它需要在真正投入以前,先把不同方案的结果算一遍。
模拟,就是把这个现实系统先做成一个可以反复修改的模型。换一批建筑,换一种能源方案,换一组用电条件,让计算机算一次;检查结果,再回来调整。
它有点像装修前先画图、量尺寸,避免墙砌好以后才发现门打不开。只不过这里要提前安排的不是一间房,而是供电能力、长期投资和电的价格。
同一时期留下的公开记录,让这份工作不再只是一个模糊的“能源项目”。Abrash 署名的一项研究,计算建筑使用太阳能以后,用电高峰和电力公司的容量成本会怎样变化;另一份名为 SERICPAC 的报告,则替多种能源技术计算电力公司可以避免的成本,以及相应的买卖电费率。
这也解释了,为什么计算机时间不是一个无关紧要的后勤细节。
模拟真正需要的,不是最后只跑一次,而是一遍遍修改、试算和检查。
可教授的经费没有随项目一起带来免费的计算机时间。那时的计算机还常常是许多人共用的设备,使用时间本身就是一种资源。这就像接下一桌宴席:食材经费有了,菜谱也写了一半,厨房却按时段分配。每想试一次味道,都得重新等一段可以开火的时间。
Abrash 的办法,不是继续等那间公共厨房。他买下一台只有五十六 K 内存、运行 CP/M 的个人计算机。它像一只放在自己桌上的小灶,规模不大,却可以由他决定什么时候开火。
他又学习 modem 和数据传输。那不是今天点一下下载按钮:他得先让两台机器通过电话线说上话,再把已经写出的程序初版搬进小电脑,改到它能在这里运行。程序一旦搬过来,之后每次修改和试算,就不必再回去等待原来的计算机时间。
这个办法有效,关键不在小电脑有多强,而在它可以反复使用。模拟程序最怕每改一次都重新等机时;现在,Abrash 可以改一点、跑一次、看结果,再马上回来继续改。
程序最后运行起来。项目有了一套真正可以持续试算的计算环境,Abrash 也第一次拥有了一台属于自己的、可以持续摸索的机器。
[009]
引用 [009]
Abrash 本人后见回忆支持 Penn 教授、DOE simulation grant、没有免费机时、购买 56K CP/M、学习 modem、下载程序初版并使其运行;OSTI 独立说明同一时期能源研究与模拟工作的现实对象,不证明两份记录就是访谈中的同一笔教授经费。装修和厨房类比用于解释模拟与机时,不补写具体原机器、排队或计费规则,也不还原转写有误的通信程序名称。
- Metaverse Research
- Impact of solar energy in buildings upon electric utilities
- User's guide to SERICPAC: A computer program for calculating electric-utility avoided costs rates
2022 interview passage on Penn / DOE simulation and first 56K CP/M computer; OSTI 1979 solar-buildings study and 1982 SERICPAC avoided-cost report
少年 Carmack 想把机器拿到手,失败后失去一年自由;Abrash 没有把公共机器搬走,而是把程序搬出来,放进一台自己能反复使用的小机器。两人尚未相识,却都先被同一个现实挡住:想法只有在能够不断运行、修改、再运行时,才会变成作品。
让程序在小电脑上运行,只能解释 Abrash 怎样成为一个亲手解决问题的程序员。它还不能解释,他为什么能写出几年后启发 Carmack 的文章。
研究对象后来从能源系统换成了个人计算机和图形硬件,但有一组工作动作留了下来:先碰到真实限制,再补齐工具,反复试验,弄明白什么有效、什么无效,以及为什么。
Abrash 不是看完别人的成果再写一篇评论。他先开发、测量和修改程序,再写它为什么这样工作。
但会解决问题,还不等于会把方法写给陌生人。
当面修一台机器,你可以指给旁边的人看,发现他拧错了螺丝,还能立刻叫停。要写一份让陌生人独自修好机器的说明,就必须提前想到:他会在哪一步误解,哪种做法看起来合理却行不通,为什么一定要按这个顺序来。
Abrash 后来在一篇致谢里说,是 Dan Illowsky 在他没有信心独自写作时,推动他开始写文章;Will Fastie 则给了他第一次面向 PC Tech Journal 大读者群的机会。Programmer's Journal、Dr. Dobb's 和书籍编辑继续教他,怎样把技术判断写成别人能够跟下去的文字。
同行鼓励给了他入口,编辑工作训练他预见陌生读者的问题。亲手试出来的经验,这才获得了第二条输出路径。
这也回答了第二幕留下的问题。
Carmack 后来概括 Abrash 的文章,说里面有 graphics hardware、code optimization、knowledge 和 wisdom,而且读起来有趣。他从那里学会 EGA controller 的能力,再发展出自己的技巧。
那些文章能启发 Carmack,不是因为 Abrash 递给他一套完整的滚屏游戏方案。而是因为一个亲手做过的人,把陌生硬件的限制、步骤和判断,写到了读者可以继续动手的位置。
代码在一台机器里运行。
文章可以在一个从未见过的人手里运行。
到这里,那个印在杂志上的名字才真正成为一个人:一个让项目跑起来的程序员,也是一个能让方法离开当前机器、继续在别人手中工作的作者。
[010]
引用 [010]
Abrash 本人致谢支持写作入口与编辑网络;Carmack 本人前言支持文章内容、可读性和对自己的影响。能源模拟与后来的 EGA 写作之间只归纳持续的实践方法,不写成未经材料确认的直接项目因果。
- Graphics Programming Black Book - Introduction and Acknowledgments
- John Carmack's Foreword to Graphics Programming Black Book
Black Book acknowledgments on Dan Illowsky, Will Fastie and the magazine editors; Carmack foreword on graphics hardware, code optimization, readability, the EGA controller and development of his own techniques
公开写作把 Abrash 带进杂志和书籍,程序员的工作又把他带到 Microsoft。到 Windows NT 阶段,他已经在一套重要的操作系统里工作,却仍然在寻找计算机下一个真正不同的平台。
一九九三或一九九四年前后,他陪女儿走进 Sammamish Plateau 的 Little Professor 书店,拿起 Neal Stephenson 的《Snow Crash》。他一夜读完。小说给了未来一个形状:许多人不再只面对孤立的桌面应用,而是进入同一个三维空间。
Abrash 随即尝试在 Microsoft 推动 networked 3D 项目。项目没有按他最初设想的方式成立。小说说明那种未来值得追,组织经历则告诉他,想象一个平台和让平台真正出现是两件事。
差不多同时,一位同事给他看了一份泄露的 Doom alpha。
Snow Crash 让未来可以被想象。Doom alpha 则让一个小团队把实时三维体验送到普通 PC 的能力突然变得具体。
Abrash 给此前在 M&T bulletin board 上认识的 Carmack 写信,说自己被震住了。后来,Carmack 去 Seattle 探望母亲,两人第一次在线下见面。Carmack 邀请他加入自己的游戏公司 id Software,Abrash 拒绝了。
拒绝并不神秘。Windows NT 正在出货,他有当前责任,也有尚未兑现的股票期权。一个有趣邀请,还不足以覆盖离开的代价。
大约一年后,Carmack 再次来到 Bellevue。Abrash 已经准备好第二次说不。
[011]
引用 [011]
三份本人后见文字的顺序大体相容,年份边缘不同;没有原始邮件,不写逐字对话。
- Valve: How I Got Here, What It's Like, and What I'm Doing
- The Path to the Metaverse
- John Carmack's Foreword to Graphics Programming Black Book
Snow Crash bookstore account, Microsoft networked-3D attempt, Doom alpha email, first meeting, and first declined offer
先讲未来,再谈工作
17:18两人在 Bellevue 的 Thai Chef 坐下来。
Abrash 后来明确说,他知道 Carmack 会再次招募自己,也知道自己准备再次拒绝。第一次邀请没有消失的责任,此时仍然存在。Windows NT、职业位置和离开 Microsoft 的代价,都不会因为又见一次面自动变轻。
可 Carmack 没有先谈职位。
他先谈服务器。
不是只在一局游戏开始时临时出现、结束后就消失的服务器,而是持续存在的服务器。玩家可以建立自己的关卡和空间,一个世界通过 doorway 连到另一个世界,新的内容随着参与者不断累积。
这不是一句抽象的“我们要建造 cyberspace”。餐桌上出现的是可以动手的对象:游戏、server、工具、玩家,以及这些东西怎样连接。Abrash 刚读过《Snow Crash》,也刚经历 Microsoft 的 networked 3D 项目没有按设想成立。他听见的不是另一个遥远口号,而是一条可能从现有游戏走进去的路。
等 Carmack 最后真正提出职位时,Abrash 原先准备的答案已经失效。他后来写道,到了那时,自己已经很难想象还去做别的事。
文章的读者,用自己看见的未来说服了作者。
[012]
引用 [012]
正文只使用三版共同顺序;午餐或晚餐、一个多小时或约两小时的完整差异保留在传闻账本。
- Valve: How I Got Here, What It's Like, and What I'm Doing
- The Path to the Metaverse
- Metaverse Research
three retrospective versions of the Thai Chef recruitment and connected-world pitch
Carmack 招募 Abrash,不是为了把 Doom 再做一遍。
Doom 已经证明普通 PC 可以承载高速动作、局域网对战和玩家修改内容,也让 id 从一个需要证明自己的小团队,变成整个行业都在等待下一步的公司。
但 Doom 的成功没有自动完成餐桌上的未来。它的世界仍然有明确边界。服务器、相连空间、用户持续创造,以及比 Doom 更自由的三维运动,需要新的结构。重复已有代码,最多得到另一款 Doom,不会自然长出 Carmack 正在描述的世界。
Doom 的成功也改变了他们承担未知的能力。Carmack 已经能向自己早年追读的作者开出一种罕见条件:不向任何人汇报,整天编程,从一张白纸开始,尝试做“正确的事”。id 则已经有过把引擎、关卡、美术、网络和发行收束成一款游戏的经验。
可 Carmack 在 Black Book 前言里说,从 Doom 到 Quake 是一次巨大的跨越。他知道想抵达哪里,却完全不清楚中间有哪些步骤。外界等待的又不再是一个聪明 demo,而是一款能够重新定义 PC 游戏的产品。团队有了探索的条件,也有了不能只交出实验的压力。
Abrash 的加入因此不只是多了一位会优化代码的程序员。他经历过大型系统出货,也习惯把失败方案写清楚。Carmack 需要有人进入持续变化的问题,和他一起判断哪条路还能走;Abrash 获得的则是少见的自由,可以把这种判断直接放进一款所有人都在等待的产品。
[013]
引用 [013]
来源支持招募位置、未知路径与团队处境;不把 Doom 的影响换算成无来源的具体预算。
clean-sheet recruitment language; tremendous step from Doom to Quake; team and production context
Abrash 加入 id 以后,愿景没有沿直线变成产品。
Quake 想让玩家在比 Doom 更自由的空间里观察和行动,又必须在普通玩家真正拥有的 PC 上保持速度。多人世界要能连接,工具要让设计师制作关卡,美术和内容还要跟上不断变化的引擎。
这些工作彼此牵动。引擎换方向,已经完成的关卡可能失效;网络结构改变,游戏规则和测试方式也会改变。图形、网络、工具和内容最后还必须在同一天成为一款可以玩的游戏。
id 当时的办公室被称作 Black Cube。Carmack 和 Abrash 在里面不断试做、推翻和重写。Carmack 的前言用了很直接的节奏:代码被写出来,然后重写,再重写,再重写。
Abrash 后来把与 Carmack 工作形容成有人不断把新知识灌进脑子,也形容自己像在飓风里绑上一枚火箭。他有时早上到公司,发现 Carmack 还在追一个睡前不肯放下的新想法;自己整天写完优化代码,开车回 Plano 时已经恍惚。
所谓最大自由并不轻松。没有现成路线,大量方案就会死亡;Carmack 在一夜里转向,其他人第二天便要判断自己的代码、关卡和美术是不是也要跟着重来。
[014]
引用 [014]
本人文字与同期驻场报道共同支持高压和返工;身体比喻不升级为逐日统计。
- John Carmack's Foreword to Graphics Programming Black Book
- Inside Quake - Visible-Surface Determination
- Graphics Programming Black Book - Introduction and Acknowledgments
- The Egos at Id
Quake rewrites, rocket/hurricane account, changing engine/content pressure, and Black Cube reporting
多年以后,Abrash 曾把那段日子压缩成一句极端的回忆:仿佛 Quake 只有他和 Carmack 两个程序员,要同时追赶图形、网络、脚本和工具。
这句话准确表达了他身处风暴中心的感觉,却不是办公室的完整画面。一九九六年的驻场报道还看见了负责网络的 John Cash,承担关卡、设计和制作的 John Romero、American McGee、Tim Willits,以及让抽象空间变成可见世界的 Adrian Carmack、Kevin Cloud。
大约十人的团队,在引擎持续变化的压力下,把实验收束成产品。任何一次重写,都会穿过整支团队。
两人的互补也不只是“一个写 C,一个写 assembly”。Carmack 不断把可能世界的边界向前推;Abrash 帮助方案通过现实机器,评估哪些尝试值得留下,并把为什么试过、为什么放弃、最后为什么这样做写成文章。
这些文章几乎与工作同时离开办公室。失败没有只留在废弃代码里,而是被整理成其他程序员可以继续使用的知识。Carmack 和 id 允许这种公开发生。
一九九七年,Abrash 的《Graphics Programming Black Book》把这段关系装进同一本书。前半部收着年轻 Carmack 曾经追读的文章;后半部是 Abrash 在 Quake 中写下的新工作;Carmack 为整本书写了前言。
Quake 没有完成 Thai Chef 餐桌上的整个世界,却把愿景拆出了一些可以继续生长的部件。持续运行的服务器协调多人世界;关卡和修改工具让玩家不只消费预制内容;引擎授权和公开知识又让新的团队可以从已有世界出发。
[015]
引用 [015]
Wired 与参与者文字要求保留团队主语;知识闭环是节目依据书与合作事实形成的编辑结构。
- Inside Quake - Visible-Surface Determination
- Graphics Programming Black Book - Introduction and Acknowledgments
- The Egos at Id
- John Carmack's Foreword to Graphics Programming Black Book
team roles, Abrash's technical-writing purpose, Carmack's foreword, and Black Book structure
Quake 出货以后,Abrash 帮助 Microsoft 旧同事 Mike Harrington 和 Gabe Newell 取得 Quake source license。那条授权后来成为 Valve 的起点之一。
他们邀请 Abrash 成为第三位创始人,他拒绝了。他也离开 id,回到 Microsoft 的 Natural Language Group,之后又经过 RAD Game Tools、Intel Larrabee,最后进入 Valve。
在 Valve,Abrash 遇见许多因为制作 Quake 关卡、修改版或使用 Quake 引擎的游戏而进入行业的人。他把这种后果称作参与创造了未来。
Abrash 后来给出的理由很平常:他暂时受够了小型游戏公司,想回到另一类问题和组织里。多年后,他也承认,回 Microsoft 未必是自己最好的决定。
这段高压合作最后以职业选择告一段落。两个人再次去处理不同的问题。
[016]
引用 [016]
Abrash 本人回顾支持职业路径;没有材料支持私人冲突或因 Carmack 离职。
Quake source license, declined Valve cofounder offer, return to Microsoft, and later career path
这一次,读者先写信
24:08离开 Black Cube 十四年以后,Abrash 在 Valve 给自己找了一件新工作:寻找二维屏幕之后的下一种计算平台。
他先把赌注押在 AR,也就是把数字信息叠在真实世界上,而不是用另一个画面完全遮住它。为了组建团队,Abrash 在 Kirkland 的 St. James Espresso 约了一位程序员喝咖啡。这个人叫 Atman Binstock。
Binstock 当时正考虑搬去巴黎,写一种帮助程序员寻找代码错误的工具。摆在他面前的,一边是一座已经选好的城市和一份说得清楚的工作;另一边是 Abrash 还在寻找的新平台。最后,他没有去巴黎,留在了 Valve。
与此同时,Carmack 并不在 Valve。他正在摆弄另一条多次让行业失望的路线:VR。过去几十年里的 VR,常常意味着笨重、昂贵的实验设备。Carmack 没有先写一套平台理论,他只是亲手测试,想知道这件事现在是否终于可行。
一个人在咖啡馆里组建团队,一个人从原型上判断旧梦想。两人仍在不同公司,也还没有选择同一条路。
[017]
引用 [017]
Abrash 本人把咖啡馆招募、巴黎选择与 Carmack 的 VR 试探并列回忆;正文不替 Binstock 补写内心理由。
Valve platform search, St. James Espresso recruitment, Binstock's Paris debugger option, and Carmack testing VR feasibility
Quake 发布十五周年时,Carmack 给 Abrash 写了一封邮件。
他在信里说,自己感觉某种非常大的变化就在转角,甚至可能比此前发生的一切更大。
他说的是 VR。
当年,是 Abrash 的文章先找到 Carmack。现在,那个读者先写了信,把自己的新判断送回作者手里。
但一封信没有立刻让 Abrash 改变方向。他和团队此时仍在做 AR。后来,Abrash 读到科幻小说《Ready Player One》,又把书推荐给团队里的几个人。小说没有替他们解决工程问题,却让团队重新比较 AR 和 VR。
AR 要让一层数字世界贴合眼前这个不受控制的真实世界;VR 可以先遮住视野,控制自己给出的整个画面。Abrash 和同事最终判断,VR 比他们原先以为的更有吸引力,也更可能先做出来。Valve 的团队转向了 VR。
[018]
引用 [018]
整条事件链来自 Abrash 本人后见叙述,AR / VR 的最小差异由其同期讲稿交叉;邮件与小说进入判断过程,但正文不把任何单一物件写成转向的充分原因。
Quake fifteenth-anniversary email, Ready Player One, and Valve's AR-to-VR shift
就在 Valve 团队改变方向的时候,另一条路上,一个叫 Palmer Luckey 的人做出了自己的 VR 头显原型。
正在测试 VR 的 Carmack 与 Palmer 取得了联系。随后 Oculus 成立,社区把钱和注意力送进它的 Kickstarter,第一代开发者套件 DK1 才有机会交到更多人手里。
Binstock 留下来的 Valve 团队也在继续工作。他们要让头显跟得上人的动作,让人转头时,眼前的空间不会像贴坏的布景一样漂走。几项工作配合到一起,佩戴者才可能产生 presence:理智还记得自己戴着头显,身体却已经相信自己站在那个空间里。Valve 随后把这套经验分享给 Oculus。
Abrash 后来回看这段历史,连续列出一连串“如果”:如果 Palmer 没做出原型,如果 Carmack 没在那个时候测试 VR,如果两人没有遇见,如果 Binstock 去了巴黎,如果 Valve 没有转向、没有分享,或者社区没有托住 Oculus,结果都会不同。
这里差一点失去的,不是一个抽象的技术名词,而是一次具体的会合。VR 也许仍会从别处继续发展;但 Palmer 的原型、Valve 的系统经验、Carmack 的试做和 Abrash 的团队,不会按后来这条路在同一时间接上。Carmack 与 Abrash 的第二次共事,也就失去了我们现在知道的这条入口。
二零一二年的 QuakeCon,Carmack、Abrash 和 Palmer 出现在同一场 VR 讨论里。保存下来的舞台记录终于把三个人放进同一幅画面。可讨论结束后,Carmack 仍回到 id,Abrash 仍回到 Valve。他们已经站在同一个问题面前,还不是同事。
[019]
引用 [019]
Abrash 本人列出多个可能中断会合的条件;节目只把反事实落到这条具体重聚路径,不断言 VR 会从历史上消失。官方 recap 只证明同台。
Palmer/Oculus and Valve paths, Abrash's explicit counterfactual chain, and Oculus's contemporaneous QuakeCon recap
Carmack 先作出职业选择。二零一三年,他加入 Oculus,担任 CTO,也就是公司的技术负责人。摆弄头显不再只是工作之外的试验,VR 成了他的正式职责。
Abrash 还看见另一道门槛。把 VR 从一次惊人的演示变成长期平台,需要昂贵的硬件投入,也需要多年研究。可设备还不够好,公司就不愿投入;没有投入,设备又永远不会变得足够好。他担心这个循环会让 VR 再次起飞失败。
Oculus 被 Facebook 收购的消息打破了这个循环。Abrash 判断,资金和长期承诺终于足以让团队处理那些昂贵、缓慢的问题。二零一四年,他也加入 Oculus,担任 Chief Scientist,也就是首席科学家。
他在加入文章里写得毫不含糊:再次与 John 一起工作很棒,感觉像回到 id,但规模被放大了许多倍。
当年,Abrash 的文章改变了一个读者;后来,那个读者把作者请进 Black Cube;这一次,一封邮件先敲了敲门,真正把门推开的,却是咖啡馆里的一次留下、一个团队的转向、一副自制头显、社区的支持,以及两个人先后作出的职业选择。
Carmack 和 Abrash 第二次成为同事。他们各自走了很远,最后从不同方向进入同一家公司。
[020]
引用 [020]
材料支持任职顺序、Abrash 的组织选择理由与积极重聚;不把复数团队成果缩写成两人的单独作品。
2013 Carmack CTO announcement; Abrash's investment Catch-22, Facebook rationale, Chief Scientist role, and positive reunion statement
同一张地图,两种互补尺度
29:18四年后,Carmack 站在 Oculus Connect 的舞台上。
他没有从遥远未来讲起。相反,他先把自己称作长期愿景演讲的反向角色。
他没有说长期研究不重要。他明确肯定,公司愿意投入一些需要多年才能成熟的工作。可他也提醒,宏大愿景很容易变成一块地毯,把今天产品里的缺陷盖住。
随后,他用一句很直接的话描述自己与 Abrash 的位置:他们在公司里承担 fundamentally different purposes,根本不同的作用。
这句话第一次把两人重新共事后的变化说了出来:他们已经不再围着同一项日常任务工作。
[021]
引用 [021]
自动字幕已用于文本核查但未达到 clip-ready;上下文支持职责差异,不支持私人不和。
Connect 2018 opening, explicit-counterpoint framing, support for long-term research, and fundamentally different purposes statement
原因就在他们重聚以后发生的变化里。VR 已经不再只是少数人戴过的演示,开始变成真正交到用户手里的产品。
用户面对的是今天的麻烦:设备能不能顺利启动,内容是否值得进入,头显是否足够轻。研究团队看到的则是现有产品还抵达不了的地方:显示还不能完全匹配人的视觉系统,双手也没有真正进入计算。
只处理眼前,产品跨不过现有显示和交互方式的上限;只处理远景,用户可能先在启动、内容和舒适度上离开。同一家公司需要同时处理两个方向。
Quake 时期,两人可以围着同一段负责把世界画到屏幕上的核心程序反复试做。到了 Oculus 和 Facebook,Abrash 面向十年之后的感知与交互,扩大下一轮产品能够调用的能力;Carmack 追踪下一次启动、下一项故障和下一台交到用户手里的设备,让真实使用不断暴露约束和优先级。
一个扩大未来的能力上限,一个缩短价值抵达用户的路径。两项工作前后相接,而不是互相取消。这就是同一张地图上的两种尺度。
[021]
引用 [021]
自动字幕已用于文本核查但未达到 clip-ready;上下文支持职责差异,不支持私人不和。
Connect 2018 opening, explicit-counterpoint framing, support for long-term research, and fundamentally different purposes statement
二零二一年,Facebook 把公司改名为 Meta,并把 Metaverse 提升为公司总目标。这里的 Metaverse,是一个让人们用虚拟身份进入、活动、创造和相遇的共享数字空间。Carmack 面对的不是“要不要未来”,而是应该从哪里开始建造未来。
他在二零二一年的公开演讲和访谈里说,自己长期反对公司从“建造 Metaverse”出发制定计划。他把这种诱惑称为给 architecture astronauts 准备的 honeypot trap:每个人都想先设计一套无限灵活的总架构,讨论却越来越远离地面上的用户价值。
他举出的反例是 Minecraft 和 Fortnite。它们不是先完成 Metaverse 设计,再等待用户进入;它们先成为好玩、值得反复进入的世界,连接、创造和共同空间随后从使用中生长。
Carmack 的顺序可以压缩成一句话:fun and value first,architecture second。
这并不否定 Thai Chef 餐桌上的愿景。恰恰相反,当年的愿景里已经有服务器、游戏、创作工具和玩家。令他警惕的,是 Metaverse 变成一种可以先于这些具体对象宣布完成的组织总图。
[022]
引用 [022]
Carmack 批评的是 architecture-first 路径,不是共享虚拟世界愿景本身。
2021 Connect and Kushner passages on architecture astronauts, Minecraft/Fortnite, and fun/value first
Abrash 回答的是另一半问题。
如果只修补今天的产品,人怎样获得今天的硬件还不能稳定提供的感觉?
二零二二年,他在一次长篇访谈里描述了一段触觉 demo。
戴上头显后,他看见一只颜色明亮、表面粗粝的陶瓷盘。现实中,他的手指只是在桌面上滑动,指尖只有一个会振动的小装置,也就是 actuator。没有真正的陶瓷,没有盘子的重量,也没有粗糙表面。
可当画面、指尖振动和摩擦声同时出现时,Abrash 毫不怀疑自己正在摸一只粗糙的盘子。
随后,他闭上眼睛,音频被关闭。
同一个 actuator 还在振动。单独留下的感觉,只像指尖上的嗡嗡声。那只陶瓷盘消失了。
没有任何一个部件独自制造了盘子。视觉、声音、追踪、触觉和大脑对这些信号的组合,共同让一个不存在的表面变得可信。
Presence 不是可以勾选的单一 feature。要把一次精心布置的实验变成稳定平台,需要显示、感知、交互、系统工程、资本和时间一起工作。这就是 Abrash 扩大未来产品能力边界的方式。
[023]
引用 [023]
陶瓷盘来自站方 transcript,未作为直接引语或原声;长期系统判断由 2014 论文交叉。
2022 ceramic-plate haptics demonstration and Abrash's system-level presence / long-term research framing
这不是“产品派”和“研究派”的胜负。两人没有必要同意每一项组织决策,才会理解另一种工作为什么必须存在。
[024]
引用 [024]
互补反馈回路是节目对双方公开表述的克制综合;不能扩写成所有组织意见一致。
- Oculus Connect 5 - John Carmack Keynote
- The Path to the Metaverse
- What VR Could, Should, and Almost Certainly Will Be within Two Years
Carmack's support for long-term research; Abrash's engineering-versus-research distinction and capital/time requirements
同一年,Carmack 的离职全文给近期产品这一端留下了一个结尾。
他一面说,Quest 2 几乎就是自己最初想要的产品:一体化运行,由头显自身完成位置追踪,需要时也能连接 PC,数百万人正在从中获得价值。
另一面,他写下自己对组织低效、决策摩擦和长期内耗的失望。他最终结束了接近十年的 VR 工作。
他关心的不只是公司是否拥有正确愿景,也关心自己能不能让下一个具体决定发生变化。当他判断已经无法有效推动组织时,他选择离开。
即使在离开时,他仍然说 VR 值得继续,Meta 仍然拥有做到这件事的条件。
他没有放弃那张地图。他只是停止在那家公司里继续沿自己的尺度工作。
[025]
引用 [025]
全文只支持 Carmack 与组织关系的结尾;没有 Abrash 评价,不承担双人关系证据。
full 2022 departure statement on Quest 2, organizational efficiency, personal agency, and continued VR value
最后,我们回到一九九七年的 Black Book。
书的前半部收着年轻 Carmack 追读过的文章,后半部收着 Abrash 在 Quake 中写下的新工作,Carmack 的前言放在最前面。
再过十多年,一封邮件从 Carmack 发给 Abrash。两条路线在 VR 重合。第二次成为同事以后,他们不再围着同一个 renderer 工作,却在同一系统的两个时间尺度上继续接近相似目标。
他们共享的愿景并不复杂:计算不应永远停留在二维屏幕和孤立应用里。人应该能够进入、行动、创造,并与别人共同在场。
他们没有完成 Metaverse。
但这段关系已经完成了一次更小、也更可靠的往返:文章先抵达陌生读者,读者后来把作者请进公司,作者再把共同经历写回公共世界。
此刻,Black Book 仍然在那里。下一位尚未出现的读者,可以把它翻开。
[026]
引用 [026]
知识往返是由公开文章、招募、合作写作和二次重聚构成的节目叙事命题,不冒充两人的共同自我定义。
- John Carmack's Foreword to Graphics Programming Black Book
- Inside Quake - Visible-Surface Determination
- Graphics Programming Black Book - Introduction and Acknowledgments
- The Path to the Metaverse
foreword, Quake chapters, and VR reunion article
片尾
35:33你刚刚收听的是《原代码》第五期,《虚拟-番外:John Carmack 与 Michael Abrash》。
本期使用的本人文字、技术文章、能源研究记录、同期报道、演讲和访谈,都会整理在本期 show notes 与公开证据页中。
你可以访问《原代码》的官方网站。网站地址是,原代码三个字的全拼,点 X Y Z。在那里,你可以查看本期逐字稿、证据引用关系和证据快照,也可以收听往期节目。
感谢你的收听。
我们下期再见。