Menu

3D 遊戲引擎發展歷史 (上)

遊戲引擎(Game Engine)是什麼?大多數人給出的解釋都是基於engine的英文翻譯,將遊戲引擎等同於汽車中的引擎(發動機),再好一些的解釋成動力,這些解釋都對,但是動力只說並不全面,不能完整反映出遊戲引擎在遊戲中的作用與地位。


clip_image001

布加迪威龍之所以強大就是源自其W16發動機

先舉一個簡單例子,在某遊戲中的一個場景中,玩家控制的角色躲藏在屋子裡,敵人正在屋子外面搜索玩家。突然,玩家控制的是一個穿迷彩服的士兵,突然碰倒了桌子上的一個杯子,杯子墜地發出破碎聲,敵人在聽到屋子裡的聲音之後聚集到玩家所在位置,玩家開槍射擊敵人,子彈引爆了周圍的易燃物,產生爆炸效果。在這個簡單而常見的過程中,遊戲引擎便在後台起著作用,控制著遊戲中的一舉一動。

clip_image002 
一些遊戲中常見的場景都是引擎在後台起著作用

把這個過程用專業們的語言分解一下就會變成這樣:首先出場的是可以行動的士兵,也就是人物模型。模型由引擎中的動畫系統賦予運動能力,遊戲中角色能做出什麼動作便取決於動畫系統有多強大。人物的真實程度則取決於3D模型渲染引擎的能力,這也是遊戲引擎最重要的功能之一,遊戲的畫質高低便由它來決定。之後,士兵碰倒了杯子,這個過程涉及到引擎的碰撞檢測,它可以決定不同的物體在接觸的時候會產生什麼樣的結果,有的遊戲能穿牆有的則不能便是不同的碰撞檢測控制的。例子中設定的是把杯子碰倒了,杯子發出了破碎聲。在發生某種動作的同時發出相應的聲音則屬於引擎中的音效處理了。杯子破碎的聲音吸引了敵人的注意,這是引擎中的AI智能運算在起作用,最後雙方交火引發爆炸,爆炸產生的煙霧、爆炸物飛散則是引擎中的物理效果在起作用了。 
可以說,遊戲引擎雖然有著“動力(Engine)”之名,但是其實際上卻是行“大腦(brain)”之實,指揮控制著遊戲中各種資源。遊戲引擎的準確定義也是如此,“用於控制所有遊戲功能的主程序,從計算碰撞、物理系統和物體的相對位置,到接受玩家的輸入,以及按照正確的音量輸出聲音等等。”通常來講,遊戲引擎包含以下系統:渲染引擎(即“渲染器”,含二維圖像引擎和三維圖像引擎)、物理引擎、碰撞檢測系統、音效、腳本引擎、電腦動畫、人工智能、網絡引擎以及場景管理。(引自wikipedia)

2.遊戲引擎與遊戲開發

十幾年前的遊戲都很簡單(以現在的眼光來看),容量大小都是以M計,通常一款遊戲的開發週期在8到10個月左右,最主要的是,每款遊戲開發都需要重頭編寫代碼,期間存在著大量的重複勞動,耗時耗力。慢慢地,開發人員總結出一個規律,某些遊戲總是有些相同的代碼,可以在同題材的遊戲中應用,這樣就可以大大減少遊戲開發週期和開發費用,慢慢地這些通用的代碼就形成了引擎的雛形,伴隨著技術的發展,最終演變成今天這樣的遊戲引擎。

同樣地,遊戲引擎出現之後,也在另一方面促進著遊戲開發。隨著顯卡性能越來越強,遊戲的畫質越來越高,遊戲開發週期也越來越長,通常都會達到3到5年,自行開發遊戲引擎的話時間還會更長,所以大多數遊戲公司還是選擇購買現成的遊戲引擎,簡化遊戲的開發過程。 

那麼,實際的遊戲開發過程中,遊戲引擎是如何把遊戲與顯卡連接在一起的,遊戲中的各種特效是如何調用顯卡來實現的?這個問題如果要回答的很專業,恐怕不在筆者知識範圍之內了,不過我們可以用很簡單的方法來說解釋一下。顯卡是遊戲的物理基礎,所有遊戲效果都需要一款性能足夠的顯卡才能實現,在顯卡之上是各種圖形API,目前主流的是DirectX和OpenGL,我們所說的DX10、DX9就是這種規範,而遊戲引擎則是建立在這種API基礎之上,控制著遊戲中的各個組件以實現不同的效果。 在引擎之上,則是引擎開發商提供給遊戲開發商的SDK開發套件,這樣遊戲廠商的程序員和美工就可以利用現成的SDK為自家的遊戲加如自家建立的模型、動畫以及畫面效果,而最終的成品則是各種遊戲。

整個關係可用下面的關係圖來表示。


clip_image003


遊戲引擎與GPU的關係圖

經過十多年的發展,遊戲引擎的功能也越來越強大,湧現出一批比較知名的引擎如DOOM/Quake、Unreal虛幻,那麼這些引擎的成功之處在哪裡呢? 

 

3 什麼才是好的遊戲引擎

時至今日,遊戲引擎已從早期遊戲開發的附屬變成了今日的當家角色,對於一款遊戲來說,能實現什麼樣的效果,很大程度上取決於使用的引擎由多麼強力。如果對什麼才是優秀的遊戲引擎做個判斷,那麼優秀的遊戲引擎一定具有如下優點: 

 

  1. 完整的遊戲功能。隨著遊戲要求的提高,現在的遊戲引擎不再是一個簡單的3D圖形引擎,而是涵蓋3D圖形、音效處理、AI運算、物理碰撞等遊戲中的各個組件,組件設計也應該是模塊化的,可以按需購買。以這兩年最成功的虛幻3引擎為例,雖然全部授權金(不包括售後技術服務)高達幾十萬甚至上百萬美元,但是可以分別購買相關組件,降低授權費用。 
  2. 強大的編輯器和第三方插件。優秀的遊戲引擎還要具備強大的編輯器,包括場景編輯、模型編輯、動畫編輯等,編輯器的功能越強大,美工人員可發揮的餘地就越大,做出的效果也越多。而插件的存在,使得第三方軟件如3DS Max、Maya可以與引擎對接,無縫實現模型的導入導出。 
  3. 簡潔有效的SDK接口。優秀的引擎會把複雜的圖像算法封裝在模塊內部,對外提供的則是簡潔有效的SDK接口,有助於遊戲開發人員迅速上手,這一點就如各種編程語言一樣,越高級的語言越容易使用。 
  4. 其他輔助支持。優秀的遊戲引擎還提供網絡、數據庫、腳本等功能,這一點對於面向網遊的引擎來說更為重要,網遊還要考慮服務器端的狀況,要在保證優異畫質的同時降低服務器端的極高壓力。 
  5. 以上四條對於今天的遊戲引擎來說不成問題,當我們回頭曆數過去的遊戲引擎,便會發現這些功能也都是從無到有慢慢發展起來的,早期的遊戲引擎在今天看來已經沒有什麼優勢,但是正是這些先行者推動了今日的發展。 

 

 

4.3D遊戲引擎始祖―《Wolfenstein 3D》

談及遊戲引擎,有一家遊戲公司最應該被提起,也有一個人最不應該忘記,那就是ID software和它的創始人之一約翰?卡馬克(John D. Carmack)。據說這家公司僅有13名固定員工,而且停車場也只停13輛法拉利跑車,從這一八卦中可以看出大家都很關注這家公司是如何的盛產富翁,但是這群狂人開發的遊戲技術更為傲人。

1990年,卡馬克和id的另一巨頭羅梅洛製作了一款小遊戲《Commander Keen》(《指揮官基恩》),在PC機上首次實現了捲軸類遊戲背景的流暢效果,後來他們又花了一個晚上的時間把當時的街機遊戲《超級瑪麗》移植到PC機上,實現了流暢的橫板效果。他們把PC版《超級瑪麗》發給任天堂,希望借此吸引任天堂的興趣。當然,任天堂也確實很有興趣,誇獎了他們幾句,不過並無下文(大人物未成名之前總是被另一個大人物無視)。1991年,卡馬克和羅梅洛成立了ID Software,開始自主創業。

後面的事就很簡單了,憑藉著過人的技術和狂熱的信念,id公司創造了一個又一個技術巔峰。沒多久,他們推出了《Wolfenstein 3D》(德軍總部3D)。這款遊戲的畫面在現在看來不值一提,但是卻是3D射擊遊戲之祖,卡馬克也因此獲得了“FPS遊戲之父”的稱號。


clip_image004

《重返德軍總部3D》成了遊戲引擎的始祖

作為最早的3D遊戲引擎之一,《Wolfenstein 3D》(德軍總部3D)使用了一種射線追蹤技術來渲染遊戲內的物體(嚴格來說,《Wolfenstein 3D》還是一種偽3D)。遊戲中每個像素會發射一道光束,如果這道光束碰到了障礙物形成反射,遊戲就會按照設定好的程序在障礙物的相應位置創建單維深度緩存(dimensional depth buffer),建立紋理圖像。

《Wolfenstein 3D》開創了3D射擊遊戲時代,其獨創性的3D技術也為其他遊戲改採用,Blake Stone, Corridor 7,Operation Body Count、Super Noah's Ark 3D(超級諾亞方舟3D)、 Rise of the Triad(算是《Wolfenstein 3D》的續作,增加了跳躍和低頭抬頭等動作),還有一直未發售的 Hellraiser(養鬼吃人)等遊戲都沿用了卡馬克這一技術。 

 

5.《DOOM》問世―Id系列引擎之Id Tech 1 

註:Id公司為自家的引擎技術劃代為Id Tech,DOOM引擎正是Id Tech 1,後文都將按照這個序列來寫。

《Wolfenstein 3D》只是ID小試身手,1993年ID公司推出的DOOM(毀滅戰士)遊戲引擎才是引擎技術的代表。DOOM引擎改善了《Wolfenstein 3D》引擎中的一些缺陷,如所有房間的高度都是相同的,所有牆壁都是垂直的,運動也只能直線前進或後退等,並且加入了許多新效果。


clip_image005

在DOOM中,角色與遊戲中的物品的互動性進一步增強,樓梯、樓梯上的花朵以及路橋已經可升可降。遊戲中的光照效果也不再單一,不同的單位也有了不同的亮度,此外DOOM引擎還支持立體聲音效,環境的定位感更真實。這些效果在3D顯卡都沒有問世的1993年毫無疑問是非常激動人心的進步。

clip_image006 
Id Tech 5引擎能否讓Id公司站在引擎技術最前端?

 

clip_image009 
DOMM一代的畫面

 

憑藉自身的過人之處,DOOM獲得了350萬的銷量,為ID公司帶來了滾滾財源。更重要的是,DOOM成了ID公司第一款用於商業授權的引擎,從DOOM開始,遊戲公司又多了一條創收之路。當時使用過DOOM引擎的遊戲主要有:Raven公司的《ShadowCaster》(投影者)、《Heretic》(1994)、《Hexen》(1995)、Rogue Entertainment公司的《Strife》、《HacX》(免費)以及美國 Marine 公司的《Marine Doom》等等。這些遊戲全都使用了DOOM引擎,其中Raven公司於ID公司的合作最為緊密,出品的三款DOOM引擎遊戲也較為知名。

DOOM發售一年之後,ID又推出了DOOM系列的第二部作品《DOOM:Hell on Earth》。憑藉id的號召和一代的影響力,DOOM II獲得了94年度的最佳原創幻想/科幻電腦遊戲大獎,在銷量和口碑上再創新高。 
不過,從技術角度來講,DOOM II上並沒有什麼創新之處,使用的DOOM,也沒帶來新穎的圖形技術,就連遊戲中的怪物和武器也沒有新增多少。雖然id公司在1995年發佈了一款擴展包《Master Levels for Doom II》,但是人們還是更期待《DOOM III》,只是這個期待要很長時間,《DOOM III》在10年後的2004年才正式發佈。

現在,Id公司還在進行著《DOOM4》的開發,引擎也升級到Id Tech5,雖然詳細的技術規格仍然是迷,但是卡馬克已經放言:“Doom4是一款為30幀而拚搏的作品,就像是應用了全新的引擎,它基於我們這四年來的研發成果。”如果他指的是遊戲發佈時的硬件水平,那麼Id Tech5引擎恐怕又是高端顯卡的墳墓了。

 

6.雷神問世―ID系列引擎之《Quake》

就在DOOM系列熱火朝天的時候,Id公司又於1996年發售了另一款新型遊戲《Quake》,相比《DOOM》使用的將擁有高度信息的二維地圖渲染成3D圖像的偽3D引擎,Quake引擎是實實在在的3D引擎。


clip_image005[1]


真正3D模式的Quake引擎

Quake引擎是當時第一款完全支持多邊形模型、動畫和粒子特效的引擎,而在技術之外,《Quake》的遊戲操控方式也樹立了FPS遊戲的標準。遊戲採用流動控制方案(fluid control scheme ),它使用鼠標來觀看/瞄準/定向以及用鍵盤前進/後退/側移,這也成了FPS遊戲最普遍的操控模式,直到今日仍沒有變化。

clip_image010 
Quake的出現為FPS遊戲建立了經典的操控方式

使用《Quake》引擎的主要是Id自己的《Quake》和《Quake World》系列、《HeXen II》(異教徒)、MageSlayer、Nexuiz(鏖戰廢土)、Day of Defeat(勝利之日),還有大名鼎鼎的《Half life:》(半條命)以及《Half life》擴展出來的《反恐精英》。

clip_image011 
大名鼎鼎的CS使用的便是Quake引擎

7.多彩光影效果―ID公司系列引擎之Id Tech2 

90年代的Id公司相當勤奮,幾乎是每年推出一部新遊戲,而且每次都能或多或少地帶給人們不少驚喜。《Quake》一年之後,Id又發售了《Quake II》,採用的引擎也升級為Id Tech2。


clip_image012

《Quake II》

1997年的時候,當時3D加速卡(顯卡那是都叫3D加速卡)已經興起,《Quake II》引擎已經支持硬件3D加速,當時較為知名的3D API是OpenGL,《Quake》也因此重點優化了OpenGL性能,這也奠定了Id公司系列遊戲多為OpenGL渲染的基礎。

clip_image013 
《Quake II》首次實現了彩色光影效果

Id Tech2引擎添加了256色材質貼圖,首次實現了彩色光影效果,使得遊戲中的物體在反射光影時候能展現出不同樣的色彩效果,另外一個技術特性則是通過支持DLL(dynamic-link libraries,動態鏈接庫)文件實現了對軟件渲染和OpenGL渲染的支持。

基於Id Tech2引擎的遊戲有《Quake II》、《Anachronox》(時空傳奇)、《大刀》(Id另一強人羅梅洛離開Id之後開發的遊戲)、《Soldier of Fortune》(命運戰士)、《半條命》(Quake和Quake II的代碼都有)。

clip_image014  
《大刀》是羅梅洛離開Id之後使用《Quake II》引擎製作的一款遊戲

8.3D加速卡時代來臨―ID系列引擎之Id Tech3

1999年,Id又發佈了《Quake III:Arena》,這是《Quake》系列的第三步,也標誌著Id的引擎技術到了Id Tech3時代。在這一時代,Id Tec3已經不再支持軟件渲染,必須要有一款支持硬件加速的顯卡才能運行。


clip_image015

《Quake II》引擎需要一款硬件加速卡才能玩轉

《Quake III》引擎增加了32Bit 材質的支持,還直接支持高細節模型和動態光影。同時,引擎在地圖中的各種材質、模型上,都表現出了極好的真實光線效果。《Quake III》使用了革命性.MD3格式的人物模型,模型的採光使用了頂點光影(vertex animation)技術,每一個人物都被分為不同段(頭、身體等),並由玩家在遊戲中的移動而改變實際的造型,遊戲中真實感更強烈。

clip_image016 
《Quake III:Team Arena》

《Quake III》擁有遊戲內命令行的方式,幾乎所有使用這款引擎的遊戲都可以用`鍵調出遊戲命令行界面,通過指令的形式對遊戲進行修改,增強了引擎的靈活性。

《Quake III》一款十分優秀的遊戲引擎,即使是放到今天來講,這款引擎仍有可取之處,即使畫質可能不是第一流的了,但是其優秀的移植性、易用性、和靈活性使得它作為遊戲引擎仍能發揮餘熱,使用《Quake III》引擎的遊戲數量眾多,比如早期的《使命召喚》系列、《榮譽勛章》、《絕地武士2》、《星球大戰》、《傭兵戰場2》、《007》、《重返德軍總部2》等等。

clip_image017  
第一代的《使命召喚》使用了《Quake III》引擎

9.《DOOM3》震撼問世―ID系列引擎之Id Tech4

時間很快就到2004年,這一時代已經是DX9顯卡的時代,但是人們關注的年度3D大作仍是基於OpenGL渲染的《DOOM3》,這也是Id公司的第四代引擎―Id Tech 4的代表作。《DOOM3》命運多舛,03年的源碼洩露事件使得《DOOM3》很受傷,但是也因此使得其強悍面畫和要求為人所知。


clip_image018

DOOM3引擎的開山作

當時的《DOOM3》到底強到什麼程度?id自家人恐怕最清楚,《Doom3》的首席程序員羅布?達菲曾經說過:“Doom3從任何角度而言都是最完美的,而且它幾乎完全追隨並引導了硬件的發展。以id software的經驗來看,Doom3估計又會被追捧至少5年,而在這5年裡測試顯卡FPS的基準估計都會是它了。”(你這話太大了點,至少07年發佈的《Crysis》就超過了)。 
在《DOOM3》中,即時光影效果成了主旋律,它不僅實現了靜態光源下的即時光影,最重要的是通過shadow volume(陰影錐)技術,《DOOM3》引擎實現了動態光源下的即時光影在遊戲中大規模的使用。

clip_image019 
shadow volume(陰影錐)關閉(左)與開啟(右)的效果對比

當然了,除了shadow volume(陰影錐)技術之外,《DOOM3》中的凹凸貼圖、多邊形、貼圖、物理引擎和音效也都是非常出色的,可以說04年《DOOM3》一出,當時的顯卡市場可謂一片哀嚎,GeForce FX 5800/Radeon 9700以下的顯卡基本喪失了高畫質下流暢運行的能力,強悍能力也只有現在的《Crysis》能與之相比了。

clip_image020  
《Quake 4》是Id公司目前最高級的引擎

由於DOOM3引擎的優秀,後續有一大批遊戲都使用了這款引擎,包括《DOOM3》資料片《Resurrection of Evil》(邪惡復甦)、 Id自家的《Quake4》(實際是由Raven公司捉刀)、Human Head Studios的《Prey》、Splash Damage 的《Enemy Territory: Quake Wars》(敵佔區:雷神戰爭)和《Brink》、Raven的《Wolfenstein》(重返德軍總部)等等。

 

10.另一巨頭的崛起―虛幻競技場引擎Unreal

如果要找一個能跟Id公司的Quake/DOOM遊戲引擎相比肩的對手的話,那麼EPIC公司的Unreal引擎無疑是最合適的。而且相比只負責3D圖像處理的Quake/DOOM引擎來講,Unreal涵蓋的方面更多,涉及物理特性、動畫演示、音頻效果和碰撞檢測等遊戲的所有組件,也就是說Unreal引擎的集成度更高,通用性更強。 

註:Quake/DOOM後來也一樣涉及到了物理碰撞、音頻處理等內容,遊戲引擎的發展即是向全能向發展。

1998年5月22日,大約在《Quake II》發佈後半年左右,由Epic Games開發GT Interactive發行了《Unreal 》問世,遊戲中除了精緻的建築物外,還擁有許多遊戲特效,比如蕩漾的水波,美麗的天空,逼真的火焰、煙霧和力場,單純從畫面效果來看,《虛幻》是當之無愧的佼佼者。

 

clip_image007

最早的《虛幻》畫面

雖然在彩色光照效果上被Quake II引擎搶了先,但是Unreal引擎依然擁有自己的獨門秘籍。Unreal引擎在彩色光照和紋理過濾上的軟件渲染性能已經接近硬件級的加速,而且Unreal引擎還支持當時CPU剛剛集成的SIMD(單指令多數據)指令,比如AMD新增的3DNOW!,Intel的MMX和SSE指令集,這讓它的性能進一步增強。

Unreal問世的時候,大行其道的圖形接口還是3Dfx的Glide,性能最強的顯卡也是3Dfx的Voodoo 5,微軟的DX規範佔據主流之後,Unreal引擎又很快支持DX,而對OpenGL規範雖然也有支持,但是一直不太順,性能也不夠好,所以Unreal引擎慢慢就變成了專司DX規範了。

得益於畫面精美和DX規範的通用性,Unreal很快就得到了18款遊戲的支持,包括《Unreal》、《Unreal Tournament》、《哈利波特》、《Rune》、《Deus Ex》等都用Unreal引擎實現了不同的遊戲效果。而且,由於Unreal引擎的通用性,除了遊戲,它還廣泛使用在3D建模、建築設計、動作捕捉、電影特效等等領域。

 

clip_image008 
《Deus Dex》就使用了虛幻1引擎