唯一封神的游戏程序员——Doom的前世今生(中)

前言:微软旗下新作《毁灭战士:黑暗时代》,即将在5月15日正式发售,首发加入XGP,可能很多新盒友对毁灭战士这个IP不太熟悉,但是在老玩家的心中,毁灭战士绝对是FPS里程碑式开创性史诗级大作,今天就和大家来聊聊传奇游戏公司id Software的创始人、历史上唯一可以封神的程序员——约翰·卡马克!

上期:Doom的前世今生(上)

10 DOOM

承接上期,在1992年5月至9月间,卡马克利用从《指挥官基恩》和《德军总部3D》积累的经验,设计并实现了数个实验性引擎原型,来研究不同功能在486CPU上的性能表现,最终他认为这些改进不适合实际射击游戏,于是决定重头开始设计专用引擎。

当时,卡马克在《德军总部3D》发明的光线投射算法(Ray Casting),已经逐渐被其他游戏引用,但卡马克认为光线投射仍有局限性,只支持轴对齐墙面的情况,而且还只能从有限的角度内观看,否则会产生剪切失真。

与此同时,老黄才刚刚被卡马克的一系列创新所震撼,还没有成立英伟达公司,没有显卡的PC可以说是寸步难行,而卡马克为了解决PC的渲染问题,继续从算法的角度切入,发明了一种新方法——二叉空间分割算法(BSP树)。

11 二叉空间分割算法(BSP树)

BSP树算法是DOOM引擎最核心的创新,这是一种空间分割技术,用于优化3D场景的渲染效率。BSP树可以通过递归使用平面,将游戏世界分割成多个子区域,最终形成一棵二叉树。如果你是CS专业或者学过算法,肯定会对二叉树这种数据结构非常熟悉。

树的根节点代表整个地图,而叶节点则对应于凸多边形子扇区(subsectors),每个子扇区包含一组可见线段(segs),这些线段共同构成区域的墙壁和边界。当游戏在渲染时,引擎从BSP树的根节点开始遍历,根据玩家的位置和视角,确定哪些子扇区需要渲染。

这种方法的核心优势在于它能够快速计算可视化,仅仅只渲染玩家当前视野内的内容,从而减少不必要的计算量,这种思路与上一期讲的自适应平铺渲染技术(Adaptive Tile Refresh)几乎如出一辙。

12 FPS游戏之父

BSP树的构建依赖“节点构建器”工具,可以在地图编辑完成后运行,将地图数据转换为BSP树格式,节点构建过程可能因地图大小和复杂度的不同而耗时较长,但一旦完成,引擎就能高效地处理复杂的室内环境。

BSP树的层级结构显著简化了碰撞检测流程,支持从后到前或从前到后渲染,确保远处的物体不会被近处的物体遮挡,通过快速遍历树节点,引擎可精准判定物体位置关系,降低计算复杂度。

在后来的《雷神之锤》中,BSP树支持复杂地形下的弹道模拟和角色移动判定,奠定了FPS游戏物理交互的基础框架,从此BSP树也成为早期FPS游戏开发的核心技术,影响贯穿了游戏引擎的演进、硬件发展,卡马克也被冠以FPS游戏之父的名号。

13 卡马克阴影体积逆算法

除了BSP树,Doom引擎还引入了动态光影(dynamic lighting)技术,进一步提升游戏的视觉效果和氛围。动态光影允许游戏中的光源(如手电筒或火把)实时影响周围环境的亮度和阴影,卡马克为此开发了“卡马克阴影体积逆算法”(Carmack's Reverse)。

这是一种优化阴影渲染的技术,通过计算光源与场景几何体的交互,生成逼真的阴影效果。这种技术在当时的游戏也是最为开创性的革新,从此游戏的光影不再是静态的,而是随着玩家的移动和场景变化而动态调整。

卡马克也通过预计算光线衰减表和纹理映射,首次在PC上实现实时动态阴影效果!在初代DOOM中,动态光影增强了恐怖氛围,卡马克的动态光影也直接启发了日后的Unity和Unreal等引擎大厂,技术驱动游戏创新,也是卡马克本人的“第一性原理”。

14 游戏引擎之父

在卡马克之前,早期游戏的图形主要以2D为主,游戏开发多是个人或小团队以手工编码的方式进行,没有专门的引擎概念。开发者需要自己从头编写大量的底层代码,包括图形渲染、物理模拟、碰撞检测、声音处理等各个方面的功能,还要考虑与特定硬件的兼容性。

而卡马克的横空出世,直接推动了游戏引擎的发展——《德军总部3D》的光线投射算法(Ray Casting),在PC上首次实现第一人称视角的沉浸感,但还是伪3D引擎,到了《毁灭战士》,卡马克才真正确立游戏引擎之父的地位。

Doom引擎在技术上完全超越了《德军总部》引擎,有更复杂的场景设计,不同高度的地板和天花板、斜坡,更丰富的纹理效果,还支持网络多人游戏功能,Doom引擎也被游戏界公认为最早被广泛使用的游戏引擎。

15 WAD模块化引擎

可怕的是,3D游戏之父和游戏引擎之父这两个吓死人的头衔,远远不足以概括卡马克的全部贡献,除了BSP树和动态光影技术,卡马克在Doom引擎中还首次提出了WAD文件架构,即将地图、纹理、音效等游戏资源,封装为可独立编辑的WAD文件。

以初代《毁灭战士》为例,游戏的WAD文件分为IWAD(官方资源包)和PWAD(玩家自定义补丁包),支持动态替换和叠加资源,每个模块通过标准化接口与引擎交互,隐藏内部实现细节。

这种模块化的设计也是非常优秀的软件工程方法,本质上是通过标准化接口与资源封装实现系统的灵活构建与高效管理,对后世的游戏开发影响极大,甚至还推动了工业自动化、Web服务等领域的模块化发展,卡马克居功至伟。

16 MOD之父

WAD全名为Where's All the Data,一开始其实只是卡马克自己用来管理游戏资源的模块化工具,后来卡马克无偿分享给了Doom的玩家,大量玩家也可以通过工具自由修改关卡设计、武器属性甚至游戏规则。

卡马克的Doom引擎不仅开创了游戏引擎时代,同时也开启了MOD时代,这种“数据与逻辑分离”的设计,使得MOD创作无需修改引擎核心代码,极大降低开发门槛,从此,卡马克也被各路MOD大佬推为“MOD之父”。

17 真正的源神

(未完待续)

深度学习入门——图灵奖AI三巨头

AI编年史——深度学习的发展史(收藏向)

AI编年史2——GPT是如何诞生的?

AI学术巨佬——何恺明,从游戏中获得论文灵感

AI领军人物——孙剑,重剑无锋的经典之作

AI传奇巨佬——汤晓鸥,中国人工智能领袖人物!

AI女神李飞飞——从成都七中,到顶级AI科学家!

山姆·奥特曼——从游戏编程,到OpenAI之父!

张益唐——黎曼猜想,华人数学家再创重大突破!

柏原正树——日本数学巨匠,成亚洲首位获奖者!

B站大学——线代不挂科,MIT传奇教授的最后一课!

华为——盘古大模型解读,专注“小模型”工业落地!

英伟达——跟着老黄学AI,英伟达官方免费推出AI课!

微软免费AI课程——18节课,初学者入门大模型!

机器学习——科学家周志华,成为中国首位AI顶会掌门人!

机器学习入门——数学基础(积分篇

机器学习入门——数学基础(代数篇

机器学习入门——数学基础(贝叶斯篇

游戏&AI系列:

AI——是游戏NPC的未来吗?

巫师三——AI如何帮助老游戏画质重获新生

AI女装换脸——FaceAPP应用和原理

AI捏脸技术——你想在游戏中捏谁的脸?

Epic虚幻引擎——“元人类生成器”游戏开发(附教程)

脑机接口——特斯拉、米哈游的“魔幻未来技术”

白话科普——Bit到底是如何诞生的?

永劫无间——肌肉金轮,AI如何帮助玩家捏脸?

Adobe之父——发明PDF格式,助乔布斯封神

#gd的ai&游戏杂谈#

更多游戏资讯请关注:电玩帮游戏资讯专区

电玩帮图文攻略 www.vgover.com