唯一封神的遊戲程序員——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