当一台机器还不足以画出、传送或及时更新一个世界,开发者只能等待下一代硬件吗?本期《原代码》回到 1990 年那块没有被完整重画却开始移动的 PC 屏幕,沿着 Commander Keen、Doom、QuakeWorld、Rage 与 Oculus,追踪 John Carmack 和同行如何重新安排像素、空间判断、网络确认、纹理与身体反馈。
从只更新边缘的一块屏幕,到根据新姿态改写过去的一帧:所谓“虚拟”,正是在一次次及时回应中,从能被看见的图像,变成可以行动、进入并共同维持的世界。
时间轴
那块屏幕又回来了
世界移动,显存大部分不动
玩家进入以前,机器已经等过了
借来一个尚未确认的现在
一张纹理背后的工厂
花掉过去的一帧
哪些等待不能藏起来
尾声
本期资料
- [John Carmack 为 Michael Abrash《Graphics Programming Black Book》所写前言](github.com)
- [Michael Abrash:Inside Quake: Visible-Surface Determination](jacobfilipp.com)
- [Digital Foundry:Face-Off: Rage](www.eurogamer.net)
- [John Carmack:Latency Mitigation Strategies](danluu.com)
- [Michael Abrash:What VR Could, Should, and Almost Certainly Will Be within Two Years](media.steampowered.com)
- [David Kushner:Masters of Disruption,John Carmack 访谈](davidkushner.substack.com)
- [Chip Morningstar 与 F. Randall Farmer:The Lessons of Lucasfilm's Habitat](web.stanford.edu)
- [VRML 1.0C 规范](www.jch.com)
- [Philip Rosedale:Enabling Player-Created Online Worlds with Grid Computing and Streaming](www.gamedeveloper.com)
源码、论文与工程记录
- [Commander Keen in Keen Dreams 公开源码](github.com)
- [Fuchs、Kedem 与 Naylor 1980 年 BSP 原论文](www.cs.unc.edu)
- [id Software 公开的 Doom BSP 构建工具](www.gamers.org)
- [Doom 公开源码](github.com)
- [Quake 与 QuakeWorld 公开源码](github.com)
- [John Carmack .plan 文件公开归档](github.com)
- [Quake III Arena q_math.c](github.com)
- [Doom 3 renderer 与 MegaTexture 公开源码](github.com)
访谈与历史原声来源
- [Lex Fridman Podcast #309:John Carmack](lexfridman.com)
- [QuakeCon 2011 John Carmack Keynote](www.youtube.com)
- [Eurogamer:John Carmack and the Virtual Reality Dream](www.eurogamer.net)
- [GDC 2004:Issues and Rewards of Bleeding Edge Engine Development](www.youtube.com)
说明与延伸阅读
- “购买未来”是本期用来描述工程成本交换的叙事隐喻,不是 Carmack 为这些技术建立的统一术语;“被看见、被使用、被进入、被共同维持”同样是节目用于解释“虚拟”的分析框架。
- PC 滚屏不是从真空里出现的。Carmack 明确回忆自己通过 Romero 注意到 Abrash 的 EGA 文章,在理解已有显示控制器知识后发展自己的方法;Hall、Romero、美术与后续工具工作又把它变成了可以发行的游戏。
- BSP 在 Doom 之前已有长期的学术与工业实践。Doom 的离线 BSP 构建、运行时遍历与 Quake 的 PVS 是不同产品中的不同机制,不能合并成一项由 Carmack 发明的算法。
- QuakeWorld 的客户端预测没有消灭网络延迟,权威服务器状态仍会回来;Rage 的 virtual texturing 也没有消灭存储、内容生产和兼容成本,纹理迟到的程度会随平台、安装方式、驱动和负载变化。
- 0x5f3759df 出现在 Quake III 公开代码中,但 Carmack 后来明确否认作者身份。现有材料指向更早的工业与数值方法谱系,仍不足以把精确常数无条件归给某一个人。
- Timewarp 可以用更新姿态修正旧帧,却不能创造遮挡后原本不存在的像素,也不能让持续低帧率无损变成高帧率。VR presence 与长期运行的共享世界都依赖团队、产品和用户关系;Habitat、VRML 与 Second Life 在本期只是比较坐标,不是 Carmack 的直接影响来源。

