玩家按下方向键时,一台没有画完、算完、装下或确认整个世界的机器,为什么仍能立刻回应?本期《原代码》从 1990 年那块没有完整重画却开始移动的 PC 屏幕出发,沿着 Commander Keen、Doom、QuakeWorld、Doom 3 与 Rage,追踪实时路径如何把工作转移给预处理、缓存、预测、工具和内容团队。
从只补画屏幕边缘,到每秒六十次必须兑现的现在:玩家越不需要等待,越多工作已经在别处提前开始。
你可在官方网站 yuandaima.xyz 中查看本期逐字稿、证据引用关系和证据快照。
时间轴
没有画完的屏幕
为了速度,世界先收窄
玩家进入以前,地图已经工作
服务器还没有同意
三十分钟消失以后
一张纹理背后的工厂
回到玩家的现在
本期资料
- [John Carmack 为 Michael Abrash《Graphics Programming Black Book》所写前言](github.com)
- [Game Developer:Monsters From the Id,Doom 制作期报道](www.gamedeveloper.com)
- [Wired:The Egos at Id,Quake 制作期报道](www.wired.com)
- [John Carmack:Issues and Rewards of Bleeding Edge Engine Development,GDC 2004](www.youtube.com)
- [Digital Foundry:Face-Off: Rage](www.eurogamer.net)
- [PC Perspective:RAGE Performance and Image Quality Evaluation](pcper.com)
源码与工程记录
- [Commander Keen in Keen Dreams 公开源码](github.com)
- [Hovertank 3-D 公开源码](github.com)
- [Catacomb 3-D 公开源码](github.com)
- [Wolfenstein 3D 公开源码](github.com)
- [Fuchs、Kedem 与 Naylor 1980 年 BSP 原论文](www.cs.unc.edu)
- [id Software 公开的 Doom BSP 构建工具](www.gamers.org)
- [Doom 公开源码](github.com)
- [Michael Abrash:Inside Quake: Visible-Surface Determination](jacobfilipp.com)
- [Quake 与 QuakeWorld 公开源码](github.com)
- [John Carmack:Quake's data access,1996](www.gamers.org)
- [John Carmack .plan 文件公开归档](github.com)
- [Doom 3 renderer 与 MegaTexture 公开源码](github.com)
访谈与历史原声来源
- [Lex Fridman Podcast #309:John Carmack,本期使用 Carmack 原声](lexfridman.com)
- [QuakeCon 2011 John Carmack Keynote,本期使用 Carmack 原声](www.youtube.com)
- [Electric Play 1997 年 John Carmack 访谈重刊](www.quakewiki.net)
- [John Carmack Press Interview Collection](archive.org)
说明与延伸阅读
- “购买未来”是本期用来描述工程成本交换的叙事隐喻。它受到 Carmack 2006 年关于让应用“假装拥有未来五到十年硬件”的回答启发,但不是他为这些技术建立的统一术语。
- PC 滚屏不是从真空里出现的。Carmack 明确回忆自己从 Abrash 的文章中学习 EGA 控制器知识,再发展具体技巧;Hall、Romero、Adrian Carmack 及后续内容工作又把技术接成了可以发行的游戏。Keen Dreams 公开源码保存的是后续实现,不能冒充 1990 年最初演示的逐行代码。
- BSP 在 Doom 之前已有长期的学术与工业实践。Doom 的离线 BSP 构建、运行时遍历,以及 Quake 的 PVS 和 surface cache 是不同机制,不能合并成一项由 Carmack 发明的算法。
- QuakeWorld 的客户端预测没有消灭网络延迟,权威服务器状态仍会回来;Doom 3 的实时编辑反馈也没有让完整内容生产等比例缩短。
- Rage 的 virtual texturing 不等于无限显存,接近 60 FPS 也不是单项技术或个人独立完成的结果。存储、缓存、驱动、平台、构建基础设施、内容团队与玩家端条件都会改变最终表现和代价。
- 本期用“虚拟”描述一个由被选择的信号、重新安排的计算、及时反馈和人与人的关系共同维持的世界;这不是 Carmack 的术语,也不表示重写版仍讨论 Oculus、VR、timewarp、presence 或 Metaverse。

