● 游戲引擎演變史 |游戲引擎演化史
在閱讀各種游戲介紹的時候我們常常會碰見“引擎”(Engine)這個單詞,引擎在游戲中究竟起著什么樣的作用?它的進化對于游戲的發(fā)展產(chǎn)生了哪些影響?希望下面這篇文章能為大家釋疑。
一、什么是引擎
我們可以把游戲的引擎比作賽車的引擎,大家知道,引擎是賽車的心臟,決定著賽車的性能和穩(wěn)定性,賽車的速度、操縱感這些直接與車手相關(guān)的指標(biāo)都是建立在引擎的基礎(chǔ)上的。游戲也是如此,玩家所體驗到的劇情、關(guān)卡、美工、音樂、操作等內(nèi)容都是由游戲的引擎直接控制的,它扮演著中場發(fā)動機的角色,把游戲中的所有元素捆綁在一起,在后臺指揮它們同時、有序地工作。簡單地說,引擎就是“用于控制所有游戲功能的主程序,從計算碰撞、物理系統(tǒng)和物體的相對位置,到接受玩家的輸入,以及按照正確的音量輸出聲音等等!
可見,引擎并不是什么玄乎的東西,無論是2D游戲還是3D游戲,無論是角色扮演游戲、即時策略游戲、冒險解謎游戲或是動作射擊游戲,哪怕是一個只有1兆的小游戲,都有這樣一段起控制作用的代碼。經(jīng)過不斷的進化,如今的游戲引擎已經(jīng)發(fā)展為一套由多個子系統(tǒng)共同構(gòu)成的復(fù)雜系統(tǒng),從建模、動畫到光影、粒子特效,從物理系統(tǒng)、碰撞檢測到文件管理、網(wǎng)絡(luò)特性,還有專業(yè)的編輯工具和插件,幾乎涵蓋了開發(fā)過程中的所有重要環(huán)節(jié),以下就對引擎的一些關(guān)鍵部件作一個簡單的介紹。
首先是光影效果,即場景中的光源對處于其中的人和物的影響方式。游戲的光影效果完全是由引擎控制的,折射、反射等基本的光學(xué)原理以及動態(tài)光源、彩色光源等高級效果都是通過引擎的不同編程技術(shù)實現(xiàn)的。
其次是動畫,目前游戲所采用的動畫系統(tǒng)可以分為兩種:一是骨骼動畫系統(tǒng),一是模型動畫系統(tǒng),前者用內(nèi)置的骨骼帶動物體產(chǎn)生運動,比較常見,后者則是在模型的基礎(chǔ)上直接進行變形。引擎把這兩種動畫系統(tǒng)預(yù)先植入游戲,方便動畫師為角色設(shè)計豐富的動作造型。
引擎的另一重要功能是提供物理系統(tǒng),這可以使物體的運動遵循固定的規(guī)律,例如,當(dāng)角色跳起的時候,系統(tǒng)內(nèi)定的重力值將決定他能跳多高,以及他下落的速度有多快,子彈的飛行軌跡、車輛的顛簸方式也都是由物理系統(tǒng)決定的。
碰撞探測是物理系統(tǒng)的核心部分,它可以探測游戲中各物體的物理邊緣。當(dāng)兩個3D物體撞在一起的時候,這種技術(shù)可以防止它們相互穿過,這就確保了當(dāng)你撞在墻上的時候,不會穿墻而過,也不會把墻撞倒,因為碰撞探測會根據(jù)你和墻之間的特性確定兩者的位置和相互的作用關(guān)系。
渲染是引擎最重要的功能之一,當(dāng)3D模型制作完畢之后,美工會按照不同的面把材質(zhì)貼圖賦予模型,這相當(dāng)于為骨骼蒙上皮膚,最后再通過渲染引擎把模型、動畫、光影、特效等所有效果實時計算出來并展示在屏幕上。渲染引擎在引擎的所有部件當(dāng)中是最復(fù)雜的,它的強大與否直接決定著最終的輸出質(zhì)量。
引擎還有一個重要的職責(zé)就是負(fù)責(zé)玩家與電腦之間的溝通,處理來自鍵盤、鼠標(biāo)、搖桿和其它外設(shè)的信號。如果游戲支持聯(lián)網(wǎng)特性的話,網(wǎng)絡(luò)代碼也會被集成在引擎中,用于管理客戶端與服務(wù)器之間的通信。
通過上面這些枯燥的介紹我們至少可以了解到一點:引擎相當(dāng)于游戲的框架,框架打好后,關(guān)卡設(shè)計師、建模師、動畫師只要往里填充內(nèi)容就可以了。因此,在3D游戲的開發(fā)過程中,引擎的制作往往會占用非常多的時間,《馬科斯·佩恩》的MAX-FX引擎從最初的雛形Final Reality到最終的成品共花了四年多時間,LithTech引擎的開發(fā)共花了整整五年時間,耗資700萬美元,Monolith公司(LithTech引擎的開發(fā)者)的老板詹森·霍爾甚至不無懊悔地說:“如果當(dāng)初意識到制作自己的引擎要付出這么大的代價的話,我們根本就不可能去做這種傻事。沒有人會預(yù)料得到五年后的市場究竟是怎樣的。”
正是出于節(jié)約成本、縮短周期和降低風(fēng)險這三方面的考慮,越來越多的開發(fā)者傾向于使用第三方的現(xiàn)成引擎制作自己的游戲,一個龐大的引擎授權(quán)市場已經(jīng)形成。
二、引擎的進化
曾經(jīng)有一段時期,游戲開發(fā)者關(guān)心的只是如何盡量多地開發(fā)出新的游戲并把它們推銷給玩家。盡管那時的游戲大多簡單粗糙,但每款游戲的平均開發(fā)周期也要達到8到10個月以上,這一方面是由于技術(shù)的原因,另一方面則是因為幾乎每款游戲都要從頭編寫代碼,造成了大量的重復(fù)勞動。漸漸地,一些有經(jīng)驗的開發(fā)者摸索出了一條偷懶的方法,他們借用上一款類似題材的游戲中的部分代碼作為新游戲的基本框架,以節(jié)省開發(fā)時間和開發(fā)費用。根據(jù)馬老先生的生產(chǎn)力學(xué)說,單位產(chǎn)品的成本因生產(chǎn)力水平的提高而降低,自動化程度較高的手工業(yè)者最終將把那些生產(chǎn)力低下的手工業(yè)者淘汰出局,引擎的概念就是在這種機器化作業(yè)的背景下誕生的。
每一款游戲都有自己的引擎,但真正能獲得他人認(rèn)可并成為標(biāo)準(zhǔn)的引擎并不多?v觀九年多的發(fā)展歷程,我們可以看出引擎最大的驅(qū)動力來自于3D游戲,尤其是3D射擊游戲。盡管像Infinity這樣的2D引擎也有著相當(dāng)久遠(yuǎn)的歷史,從《博德之門》(Baldur’s Gate)系列到《異域鎮(zhèn)魂曲》(Planescape:Torment)、《冰風(fēng)谷》(Icewind Dale)直至今年夏天將要發(fā)布的《冰風(fēng)谷2》,但它的應(yīng)用范圍畢竟局限于“龍與地下城”風(fēng)格的角色扮演游戲,包括頗受期待的《夜在絕冬城》(Neverwinter Nights)所使用的Aurora引擎,它們都有著十分特殊的使用目的,很難對整個引擎技術(shù)的發(fā)展起到推動作用,這也是為什么體育模擬游戲、飛行模擬游戲和即時策略游戲的引擎很少進入授權(quán)市場的原因,開發(fā)者即便使用第三方引擎也很難獲得理想的效果,采用《帝國時代2》(Age of Empires)引擎制作的《星球大戰(zhàn):銀河戰(zhàn)場》(Star Wars:Galactic Battleground)就是一個最好的例子。
因此,下面對引擎的歷史回顧將主要圍繞動作射擊游戲的變遷展開,動作射擊游戲同3D引擎之間的關(guān)系相當(dāng)于一對孿生兄弟,它們一同誕生,一同成長,互相為對方提供著發(fā)展的動力。
引擎的誕生(1992年~1993年)
1992年,3D Realms公司/Apogee公司發(fā)布了一款只有2兆多的小游戲——《德軍司令部》(Wolfenstein 3D),稍有資歷的玩家可能都還記得初接觸它時的興奮心情,用“革命”這一極富煽動色彩的詞語也無法形容出它在整個電腦游戲發(fā)展史上占據(jù)的重要地位。這部游戲開創(chuàng)了第一人稱射擊游戲的先河,更重要的是,它在X軸和Y軸的基礎(chǔ)上增加了一根Z軸,在由寬度和高度構(gòu)成的平面上增加了一個向前向后的縱深空間,這根Z軸對那些看慣了2D游戲的玩家造成的巨大沖擊可想而知。
Wolfenstein 3D引擎的作者是大名鼎鼎的約翰·卡馬克,這位id Software公司的首席程序師正是憑借這款Wolfenstein 3D引擎在游戲圈里站穩(wěn)了腳跟。事實上,《德軍司令部》并非第一款采用第一人稱視角的游戲,在它發(fā)售前的幾個月,Origin公司就已經(jīng)推出了一款第一人稱視角的角色扮演游戲——《創(chuàng)世紀(jì):地下世界》(Ultima Underworld),這款角游戲采用了類似的技術(shù),但它與Wolfenstein 3D引擎之間有著相當(dāng)大的差別,舉例來說,《地下世界》的引擎支持斜坡,地板和天花板可以有不同的高度,分出不同的層次,玩家可以在游戲中跳躍,可以抬頭低頭,這些特性Wolfenstein 3D引擎都無法做到,而且從畫面上看,《德軍司令部》更接近漫畫風(fēng)格而不是傳統(tǒng)的像素畫面。
盡管從技術(shù)細(xì)節(jié)上看,Wolfenstein 3D引擎比不上《創(chuàng)世紀(jì):地下世界》的引擎,但它卻更好地利用了第一人稱視角的特點,快速火爆的游戲節(jié)奏使人們一下子記住了“第一人稱射擊游戲”這個單詞,而不是“第一人稱角色扮演游戲”!兜萝娝玖畈俊泛髞磉發(fā)布過一款名義上的續(xù)集——《三元的崛起》(Rise of the Triad),這款游戲在Wolfenstein 3D引擎的基礎(chǔ)上增加了許多重要特性,包括跳躍和抬頭低頭等動作。
引擎誕生初期的另一部重要游戲同樣是出自id Software公司的一款非常成功的第一人稱射擊游戲——《毀滅戰(zhàn)士》(Doom)。Doom引擎在技術(shù)上大大超越了Wolfenstein 3D引擎,《德軍司令部》中的所有物體大小都是固定的,所有路徑之間的角度都是直角,也就是說你只能筆直地前進或后退,這些局限在《毀滅戰(zhàn)士》中都得到了突破。盡管游戲的關(guān)卡還是維持在2D平面上進行制作,沒有“樓上樓”的概念,但墻壁的厚度可以為任意,并且路徑之間的角度也可以為任意,這使得樓梯、升降平臺、塔樓和戶外等各種場景成為可能。
由于Doom引擎本質(zhì)上依然是二維的,因此可以做到同時在屏幕上顯示大量角色而不影響游戲的運行速度,這一特點為游戲創(chuàng)造出了一種瘋狂刺激的動作風(fēng)格,在這方面迄今為止大約只有《英雄薩姆》(Serious Sam)系列能與之相比,除此之外還沒有哪款3D引擎能在大批敵人向你涌來的時候依然保持游戲的流暢,這也是為什么如今市面上的大部分第一人稱射擊游戲都在積極地培養(yǎng)玩家的戰(zhàn)術(shù)運用能力、提高玩家的射擊準(zhǔn)確率而拒絕濫砍濫殺的主要原因之一。值得一提的是,盡管Doom引擎缺乏足夠的細(xì)節(jié)度,但開發(fā)者仍然在《毀滅戰(zhàn)士》中表現(xiàn)出了驚人的環(huán)境效果,其純熟的設(shè)計技巧實在令人贊嘆。
不過更值得紀(jì)念的是,Doom引擎是第一個被用于授權(quán)的引擎。1993年底,Raven公司采用改進后的Doom引擎開發(fā)了一款名為《投影者》(ShadowCaster)的游戲,這是游戲史上第一例成功的嫁接手術(shù)。1994年Raven公司采用Doom引擎開發(fā)《異教徒》(Heretic),為引擎增加了飛行的特性,成為跳躍動作的前身。1995年Raven公司采用Doom引擎開發(fā)《毀滅巫師》(Hexen),加入了新的音效技術(shù)、腳本技術(shù)以及一種類似集線器的關(guān)卡設(shè)計,使你可以在不同關(guān)卡之間自由移動。Raven公司與id Software公司之間的一系列合作充分說明了引擎的授權(quán)無論對于使用者還是開發(fā)者來說都是大有裨益的,只有把自己的引擎交給更多的人去使用才能使引擎不斷地成熟起來。
《毀滅戰(zhàn)士》系列本身就相當(dāng)成功,大約賣了350萬套,而授權(quán)費又為id Software公司帶來了一筆可觀的收入。在此之前引擎只是作為一種自產(chǎn)自銷的開發(fā)工具,從來沒有哪家游戲商考慮過依靠引擎賺錢,Doom引擎的成功無疑為人們打開了一片新的市場。
引擎的轉(zhuǎn)變(1994年~1997年)
在引擎的進化過程中,肯·西爾弗曼于1994年為3D Realms公司開發(fā)的Build引擎是一個重要的里程碑,Build引擎的“肉身”就是那款家喻戶曉的《毀滅公爵》(Duke Nukem 3D)!稓绻簟芬呀(jīng)具備了今天第一人稱射擊游戲的所有標(biāo)準(zhǔn)內(nèi)容,如跳躍、360度環(huán)視以及下蹲和游泳等特性,此外還把《異教徒》里的飛行換成了噴氣背包,甚至加入了角色縮小等令人耳目一新的內(nèi)容。在Build引擎的基礎(chǔ)上先后誕生過14款游戲,例如《農(nóng)夫也瘋狂》(Redneck Rampage)、《陰影武士》(Shadow Warrior)和《血兆》(Blood)等,還有臺灣艾生資訊開發(fā)的《七俠五義》,這是當(dāng)時(至今依然是)國內(nèi)不多的幾款3D射擊游戲之一。Build引擎的授權(quán)業(yè)務(wù)大約為3D Realms公司帶來了一百多萬美元的額外收入,3D Realms公司也由此而成為了引擎授權(quán)市場上的第一個“暴發(fā)戶”。不過從總體來看,Build引擎并沒有為3D引擎的發(fā)展帶來任何質(zhì)的變化,突破的任務(wù)最終由id Software公司的《雷神之錘》(Quake)完成了。
《雷神之錘》緊跟在《毀滅公爵》之后發(fā)售,兩者孰優(yōu)孰劣一時之間成為玩家的熱門話題。從內(nèi)容的精彩程度來看《毀滅公爵》超過《雷神之錘》不少,但從技術(shù)的先進與否來看,《雷神之錘》是毫無疑問的贏家。Quake引擎是當(dāng)時第一款完全支持多邊形模型、動畫和粒子特效的真正意義上的3D引擎,而不是Doom、Build那樣的2.5D引擎。此外Quake引擎還是連線游戲的始作俑者,盡管幾年前的《毀滅戰(zhàn)士》也能通過調(diào)制解調(diào)器連線對戰(zhàn),但最終把網(wǎng)絡(luò)游戲帶入大眾的視野之中的是《雷神之錘》,是它促成了電子競技產(chǎn)業(yè)的發(fā)展。
一年之后,id Software公司推出《雷神之錘2》,一舉確定了自己在3D引擎市場上的霸主地位!独咨裰N2》采用了一套全新的引擎,可以更充分地利用3D加速和OpenGL技術(shù),在圖像和網(wǎng)絡(luò)方面與前作相比有了質(zhì)的飛躍,Raven公司的《異教徒2》(Heretic II)和《軍事冒險家》(Soldier of Fortune)、Ritual公司的《原罪》(Sin)、Xatrix娛樂公司的《首腦:犯罪生涯》(Kingpin:Life of Crime)以及離子風(fēng)暴工作室去年夏天剛剛發(fā)布的《安納克朗諾克斯》(Anachronox)都采用了Quake II引擎。
Quake II引擎的授權(quán)模式大致如下:基本許可費從40萬美元到100萬美元不等,版稅金視基本許可費的多少而定,40萬美元的許可費大約需提取10%以上的版稅金,100萬美元的許可費則提取很少一部分版稅金。這樣算下來,《雷神之錘2》通過引擎授權(quán)所獲得的收入至少有一千萬美元,盡管游戲本身的銷售業(yè)績比起《毀滅戰(zhàn)士》來要差很多,大約賣了110多萬套,收入在4500萬美元左右,但在授權(quán)金這一塊它所獲得的盈利顯然要遠(yuǎn)遠(yuǎn)高于《毀滅戰(zhàn)士》,此時的引擎已經(jīng)從一種單純的工具變成了一塊令人垂涎欲滴的肥肉。
俗話說“一個巴掌拍不響”,沒有實力相當(dāng)?shù)母偁幷撸魏问袌龆紵o法發(fā)展起來的。正當(dāng)Quake II獨霸整個引擎市場的時候,Epic Megagames公司(即現(xiàn)在的Epic游戲公司)的《虛幻》(Unreal)問世了。毫不夸張,第一次運行這款游戲的時候,我的確被眼前的畫面驚呆了,盡管當(dāng)時只是在300x200的分辨率下運行的這款游戲(四大悲事之一:玩游戲機器不夠勁)。除了精致的建筑物外,游戲中的許多特效即便在今天看來依然很出色,蕩漾的水波,美麗的天空,龐大的關(guān)卡,逼真的火焰、煙霧和力場等效果。從單純的畫面效果來看,《虛幻》是當(dāng)之無愧的佼佼者,其震撼力完全可以與人們第一次見到《德軍司令部》時的感受相比。
Unreal引擎可能是使用最廣的一款引擎,在推出后的兩年之內(nèi)就有18款游戲與Epic公司簽訂了許可協(xié)議,這還不包括Epic公司自己開發(fā)的《虛幻》資料片《重返納帕利》,其中比較近的幾部作品如第三人稱動作游戲《北歐神符》(Rune)、角色扮演游戲《殺出重圍》(Deus Ex)以及永不上市的第一人稱射擊游戲《永遠(yuǎn)的毀滅公爵》(Duke Nukem Forever),這些游戲都曾經(jīng)或?qū)⒁@得不少好評。
Unreal引擎的應(yīng)用范圍不限于游戲制作,還涵蓋了教育、建筑等其它領(lǐng)域。Digital Design公司曾與聯(lián)合國教科文組織的世界文化遺產(chǎn)分部合作采用Unreal引擎制作過巴黎圣母院的內(nèi)部虛擬演示,Zen Tao公司采用Unreal引擎為空手道選手制作過武術(shù)訓(xùn)練軟件,另一家軟件開發(fā)商Vito Miliano公司也采用Unreal引擎開發(fā)了一套名為“Unrealty”的建筑設(shè)計軟件,用于房地產(chǎn)的演示。
這款與《雷神之錘2》同時代的引擎經(jīng)過不斷的更新,至今依然活躍在游戲市場上,絲毫沒有顯出老邁的跡象,實屬難得。
引擎的革命(1998年~2000年)
游戲的圖像發(fā)展到《虛幻》這里已經(jīng)達到了一個天花板的高度,接下去的發(fā)展方向很明顯不可能再朝著視覺方面進行下去。前面說過,引擎技術(shù)對于游戲的作用并不僅局限于畫面,它還影響到游戲的整體風(fēng)格,例如,所有采用Doom引擎制作的游戲,無論是《異教徒》還是《毀滅巫師》,都有著相似的內(nèi)容,甚至連情節(jié)設(shè)定都如出一轍。玩家開始對端著槍跑來跑去的單調(diào)模式感到厭倦,開發(fā)者們不得不從其它方面尋求突破,由此掀起了第一人稱射擊游戲的一個新的高潮。
兩部劃時代的作品同時出現(xiàn)在1998年——Valve公司的《半條命》(Half-Life)和LookingGlass工作室的《神偷:暗黑計劃》(Thief:The Dark Project),盡管此前的《系統(tǒng)震撼》(System Shock)等游戲也為引擎技術(shù)帶來過許多新的特性,但沒有哪款游戲能像《半條命》和《神偷》那樣對后來的作品以及引擎技術(shù)的進化造成如此深遠(yuǎn)的影響。
曾獲得無數(shù)大獎的《半條命》采用的是Quake和Quake II引擎的混合體,Valve公司在這兩部引擎的基礎(chǔ)上加入了兩個很重要的特性:一是腳本序列技術(shù),這一技術(shù)可以令游戲以合乎情理的節(jié)奏通過觸動事件的方式讓玩家真實地體驗到情節(jié)的發(fā)展,這對于誕生以來就很少注重情節(jié)的第一人稱射擊游戲來說無疑是一次偉大的革命;第二個特性是對人工智能引擎的改進,敵人的行動與以往相比明顯有了更多的狡詐,不再是單純地?fù)湎驑尶。這兩個特點賦予了《半條命》引擎鮮明的個性,在此基礎(chǔ)上誕生的《要塞小分隊》、《反恐精英》和《毀滅之日》等優(yōu)秀作品又通過網(wǎng)絡(luò)代碼的加入令《半條命》引擎煥發(fā)出了更為奪目的光芒。
在人工智能方面真正取得突破的游戲是Looking Glass工作室的《神偷:暗黑計劃》,游戲的故事發(fā)生在中古年代,玩家扮演一名盜賊,任務(wù)是進入不同的場所,在盡量不引起別人注意的情況下竊取物品!渡裢怠凡捎玫氖荓ooking Glass工作室自行開發(fā)的Dark引擎,Dark引擎在圖像方面比不上《雷神之錘2》或《虛幻》,但在人工智能方面它的水準(zhǔn)卻遠(yuǎn)遠(yuǎn)高于后兩者,游戲中的敵人懂得根據(jù)聲音辨認(rèn)你的方位,能夠分辨出不同地面上的腳步聲,在不同的光照環(huán)境下有不同的目力,發(fā)現(xiàn)同伴的尸體后會進入警戒狀態(tài),還會針對你的行動做出各種合理的反應(yīng),你必須躲在暗處不被敵人發(fā)現(xiàn)才有可能完成任務(wù),這在以往那些純粹的殺戮游戲中是根本見不到的。如今的絕大部分第一人稱射擊游戲都或多或少地采用了這種隱秘的風(fēng)格,包括新近發(fā)布的《榮譽勛章:盟軍進攻》(Medal of Honor:Allied Assault)。遺憾的是,由于Looking Glass工作室的過早倒閉,Dark引擎未能發(fā)揚光大,除了《神偷:暗黑計劃》外,采用這一引擎的只有《神偷2:金屬時代》(Thief 2:The Metal Age)和《系統(tǒng)震撼2》等少數(shù)幾款游戲。
受《半條命》和《神偷:暗黑計劃》兩款游戲的啟發(fā),越來越多的開發(fā)者開始把注意力從單純的視覺效果轉(zhuǎn)向更具變化的游戲內(nèi)容,其中比較值得一提的是離子風(fēng)暴工作室出品的《殺出重圍》,《殺出重圍》采用的是Unreal引擎,盡管畫面效果十分出眾,但在個體的人工智能方面它無法達到《神偷》系列的水準(zhǔn),游戲中的敵人更多的是依靠預(yù)先設(shè)定的場景腳本做出反應(yīng),例如砸碎彈藥盒可能會引起附近敵人的警惕,但這并不代表他聽到了什么,打死敵人后周圍的同伙可能會朝你站立的位置奔過來也可能會無動于衷,這些不真實的行為即便在《榮譽勛章:盟軍進攻》里也依然存在。圖像的品質(zhì)抵消了人工智能方面的缺陷,而真正幫助《殺出重圍》在眾多射擊游戲中脫穎而出的則是它的獨特風(fēng)格,游戲含有濃重的角色扮演成分,人物可以積累經(jīng)驗、提高技能,還有豐富的對話和曲折的情節(jié)。同《半條命》一樣,《殺出重圍》的成功說明了敘事對第一人稱射擊游戲的重要性,能否更好地支持游戲的敘事能力成為了衡量引擎的一個新標(biāo)準(zhǔn)。
從2000年開始3D引擎朝著兩個不同的方向分化,一是如《半條命》、《神偷》和《殺出重圍》那樣通過融入更多的敘事成分和角色扮演成分以及加強游戲的人工智能來提高游戲的可玩性,二是朝著純粹的網(wǎng)絡(luò)模式發(fā)展,在這一方面,id Software公司再次走到了整個行業(yè)的最前沿,他們意識到與人斗才是其樂無窮,于是在Quake II出色的圖像引擎的基礎(chǔ)上加入更多的網(wǎng)絡(luò)成分,破天荒推出了一款完全沒有單人過關(guān)模式的純粹的網(wǎng)絡(luò)游戲——《雷神之錘3競技場》(Quake III Arena),它與Epic公司稍后推出的《虛幻競技場》(Unreal Tournament)一同成為引擎發(fā)展史上的一個轉(zhuǎn)折點。
隨著Quake III引擎的大獲成功,id Software公司在引擎授權(quán)市場上也大賺了一筆。Raven公司再次同id Software公司合作,采用Quake III引擎制作了第一人稱射擊游戲《星際迷航:精英部隊》(Star Trek Voyager:Elite Force),此外這部引擎還被用于制作第三人稱動作游戲《重金屬F.A.K.K. 2》(Heavy Metal F.A.K.K 2)和《艾麗絲漫游魔境》(American McGee’s Alice)、最近的兩款二戰(zhàn)題材的射擊游戲《重返德軍總部》(Return to Castle Wolfenstein)和《榮譽勛章:盟軍進攻》,以及開發(fā)中的《絕地放逐者:絕地武士2》(Jedi Outcast:Jedi Knight II)。從地牢到外太空,從童話世界到二戰(zhàn)年代,從第一人稱視角到第三人稱視角,充分顯示了Quake III引擎的強大潛力。
Epic公司的《虛幻競技場》雖然比《雷神之錘3競技場》落后了一步,但如果仔細(xì)比較一下的話,你就會發(fā)現(xiàn)它的表現(xiàn)要略高出后者一籌。從畫面方面看兩者差不多打成平手,但在聯(lián)網(wǎng)模式上,它不僅提供有死亡競賽模式,還提供有團隊合作等多種激烈火爆的對戰(zhàn)模式,而且Unreal Tournament引擎不僅可以應(yīng)用在動作射擊游戲中,還可以為大型多人游戲、即時策略游戲和角色扮演游戲提供強有力的3D支持。Unreal Tournament引擎在許可業(yè)務(wù)方面的表現(xiàn)也超過了Quake III,迄今為止采用Unreal Tournament引擎制作的游戲大約已經(jīng)有20多款,其中包括《星際迷航深度空間九:墜落》(Star Trek Deep Space Nine:The Fallen)、《新傳說》(New Legend)和《塞拉菲姆》(Seraphim)等。
在1998年到2000年期間迅速崛起的另一款引擎是Monolith公司的LithTech引擎,這款引擎最初是用在機甲射擊游戲《升剛》(Shogo)上的。前面說過,LithTech引擎的開發(fā)共花了整整五年時間,耗資700萬美元,功夫不負(fù)有心人,1998年LithTech引擎的第一個版本推出之后立即引起了業(yè)界的主意,為當(dāng)時處于白熱化狀態(tài)下的《雷神之錘2》vs.《虛幻》之爭潑了一盆冷水。
正是由于過于高昂的開發(fā)代價,2002年Monolith公司決定單獨成立一個LithTech公司,以LithTech引擎的授權(quán)許可作為主要業(yè)務(wù),希望借此撈回一些成本。采用LithTech第一代引擎制作的游戲包括《血兆2》和《清醒》(Sanity)等。2000年LithTech公司推出了引擎的2.0版本和2.5版本,加入了骨骼動畫和高級地形系統(tǒng),給人留下深刻印象的《無人永生》(No One Lives Forever)以及即將上市的《全球行動》(Global Operations)采用的就是LithTech 2.5引擎,此時的LithTech已經(jīng)從一名有益的補充者變成了一款同Quake III和Unreal Tournament平起平坐的引擎。如今LithTech引擎的3.0版本也已經(jīng)發(fā)布,并且衍生出了“木星”(Jupiter)、“鷹爪”(Talon)、“深藍(lán)”(Cobalt)和“探索”(Discovery)四大系統(tǒng),其中“鷹爪”被用于開發(fā)《異形大戰(zhàn)掠奪者2》(Alien Vs. Predator 2),“木星”將用于《無人永生2》的開發(fā),“深藍(lán)”用于開發(fā)PS2版《無人永生》,“探索”則將被用來制作一款尚未公布的大型網(wǎng)絡(luò)游戲。
LithTech引擎除了本身的強大性能外,最大的賣點在于詳盡的服務(wù),除了LithTech引擎的源代碼和編輯器外,購買者還可以獲得免費的升級、迅捷的電子郵件和電話技術(shù)支持,LithTech公司甚至還會把購買者請到公司進行手把手的培訓(xùn)。而且LithTech引擎的平均價格也不算很高,大約在25萬美元左右,同Quake III引擎的70萬美元相比已經(jīng)是相當(dāng)?shù)土恕?/P>
引擎的明天(2001年~)
2001年有許多優(yōu)秀的3D射擊游戲陸續(xù)發(fā)布,其中一部分采用的是Quake III和Unreal Tournament等現(xiàn)成引擎,如《星際迷航深度空間九:墜落》、《重返德軍總部》和《榮譽勛章:盟軍進攻》,而更多的則采用的是自己開發(fā)的引擎,比較有代表性的包括網(wǎng)絡(luò)射擊游戲《部落2》(Tribes 2)、第一人稱射擊游戲《馬科斯·佩恩》、《紅色派系》(Red Faction)和《英雄薩姆》等。
《部落2》采用的是V12引擎,這款引擎雖然無法同Quake III和Unreal Tournament相提并論,但開發(fā)者為它制定的許可模式卻相當(dāng)新穎,你只需花上100美元就可以獲得引擎的使用權(quán),不過天下沒有免費的午餐,隨之而來的一系列規(guī)定相當(dāng)苛刻,例如,開發(fā)者不能把該引擎用于為其它游戲發(fā)行商、其它商業(yè)游戲站點等競爭對手制作游戲,開發(fā)出來的游戲必須在發(fā)行前交給GarageGames公司(V12引擎的所有者),不能交給任何第三方,GarageGames公司將擁有這些游戲五年的獨家發(fā)行權(quán)等等。盡管如此,對于那些規(guī)模較小的獨立開發(fā)者來說,這個超低價引擎仍然具有非常大的吸引力。
《馬科斯·佩恩》采用的是MAX-FX引擎,這是第一款支持輻射光影渲染技術(shù)(Radiosity Lighting)的引擎,這種技術(shù)以往只在一些高級的建筑設(shè)計軟件中出現(xiàn)過,它能夠結(jié)合物體表面的所有光源效果,根據(jù)材質(zhì)的物理屬性及其幾何特性,準(zhǔn)確地計算出每個點的折射率和反射率,讓光線以更自然的方式傳播過去,為物體營造出十分逼真的光影效果。MAX-FX引擎的另一個特點是所謂的“子彈時間”(Bullet Time),這是一種《黑客帝國》風(fēng)格的慢動鏡頭,在這種狀態(tài)下甚至連子彈的飛行軌跡都可以看得一清二楚。MAX-FX引擎的問世把游戲的視覺效果推向了一個新的高峰。
《紅色派系》采用的是Geo-Mod引擎,這是第一款可任意改變幾何體形狀的3D引擎,也就是說,你可以使用武器在墻壁、建筑物或任何堅固的物體上炸開一個缺口,穿墻而過,或者在平地上炸出一個彈坑躲進去。Geo-Mod引擎的另一個特點是高超的人工智能,敵人不僅僅是在看見同伴的尸體或聽見爆炸聲后才會做出反應(yīng),當(dāng)他們發(fā)現(xiàn)你留在周圍物體上的痕跡如彈孔時也會警覺起來,他們懂得遠(yuǎn)離那些可能對自己造成傷害而自己又無法做出還擊的場合,受傷的時候他們會沒命地逃跑,而不會冒著生命危險繼續(xù)作戰(zhàn)。
《英雄薩姆》采用的是Serious引擎,這款引擎最大的特點在于異常強大的渲染能力,面對大批涌來的敵人和一望無際的開闊場景,你絲毫不會感覺到畫面的停滯,而且游戲的畫面效果也相當(dāng)出色。此外值得一提的還有《海底驚魂》(AquaNox)所用的Krass引擎,這款引擎被作為GeForce 3的官方指定引擎,專門用于宣傳、演示GeForce 3的效果,視覺方面的表現(xiàn)無可挑剔。
可以看出,2001年問世的幾部引擎依舊延續(xù)了兩年多來的發(fā)展趨勢,一方面不斷地追求真實的效果,例如MAX-FX引擎追求畫面的真實,Geo-Mod引擎追求內(nèi)容的真實,《軍事冒險家》(Soldier of Fortune)的GHOUL引擎追求死亡的真實;另一方面則繼續(xù)朝著網(wǎng)絡(luò)的方向探索,如《部落2》、《要塞小分隊2》(Team Fortress 2),以及Monolith公司那款尚未公布的大型網(wǎng)絡(luò)游戲。
不過,由于受到技術(shù)方面的限制,把第一人稱射擊游戲放入大型網(wǎng)絡(luò)環(huán)境中的構(gòu)想至少在目前還很難實現(xiàn)。眾所周知,一般的大型網(wǎng)絡(luò)游戲多為節(jié)奏較慢的角色扮演游戲,這些游戲所使用的引擎,無論是《卡米洛特的黑暗年代》(Dark Age of Camelot)使用的NetImmerse引擎,還是《地平線:伊斯塔里亞大陸》(Horizons:Empires of Istaria)使用的Horizons引擎,或是“據(jù)說可以保證50萬人在同一虛擬世界中盡情游戲而不會有任何滯后感”的Big World引擎,都無法支持一個供數(shù)百名玩家同時戰(zhàn)斗的大型團隊動態(tài)環(huán)境。正是基于這樣的考慮,id Software公司重新把目光放在了單人模式上,去年年底公布的《雷神之錘4》和《毀滅戰(zhàn)士3》將重新建構(gòu)一個以單人游戲為主的引擎。與此同時,老對手Epic游戲公司也在緊鑼密鼓地開發(fā)新一代Unreal引擎和《虛幻競技場2》的引擎。盡管目前關(guān)于這幾款引擎的具體資料并不多,但從已展示的幾段采用新引擎實時渲染的動畫片段來看,它們的確完全超越了市面上的其它引擎,預(yù)示著一個新的引擎時代的到來。
最后需要指出的是,許多優(yōu)秀的游戲開發(fā)者正在退出游戲開發(fā)市場,轉(zhuǎn)而進入引擎授權(quán)市場,僅靠開發(fā)引擎吃飯,這是個危險的信號。盡管引擎的不斷進化使游戲的技術(shù)含量越來越高,但最終決定一款游戲是否優(yōu)秀的因素在于使用技術(shù)的人而不是技術(shù)本身。如前所述,引擎相當(dāng)于游戲的框架,框架打好后,你只需往里填充內(nèi)容即可,在這里,框架只是提供了一種可能性,游戲的精彩與否取決于內(nèi)容如何而非框架如何。正如《無人永生》開發(fā)小組所說:“所有問題最終都會歸結(jié)為一點——你的游戲是否好玩!
附錄:
3D Engine 的設(shè)計架構(gòu)
作者:Luke Hodorowicz
翻譯:樂晨光 (2001/9/28)
本人對3D也不甚了解,譯文動機一則是內(nèi)容所致興致昂然,二則鍛煉英譯中技能。由本人水平及經(jīng)驗有限,文中絕對不乏大量誤解與誤譯,亦懇請讀者指出,得以一同提高。
佳文須共賞,也歡迎大家自由轉(zhuǎn)載 :)
Introduction (簡介)
讓咱們談?wù)勀闳绾巫珜懸环萏峁﹥?yōu)雅性能的3D引擎。你的引擎需要提供的包括:曲面(curved surfaces)、動態(tài)光線(dynamic lighting)、體霧(volumetric fog)、鏡面(mirrors)、入口(portals)、天空體(skyboxes)、節(jié)點陰影(vertex shaders)、粒子系統(tǒng)(particle systems)、靜態(tài)網(wǎng)格模型(static mesh models)、網(wǎng)格模型動畫(animated mesh models)。假如你已經(jīng)知道如何以上所述的所有功能順利工作,你也許便能將那些東東一起置入到一個引擎當(dāng)中。
等等!在你開始撰寫代碼前你必須先構(gòu)思一下如何去架構(gòu)你的引擎。多數(shù)來講,你一定是迫切地渴望去制作一個游戲,但如果你立即投入便開始為你的引擎撰寫代碼后,你一定會覺得非常難受,開發(fā)后期你可能會為置入新的特效與控制而不得不多次重寫大量的局部代碼,甚至以失敗而放棄告終;ㄒ稽c時間好好地為你引擎深謀遠(yuǎn)慮一番,這將會為你節(jié)省大量時間,也少一點頭痛。你一定不會急切地去架構(gòu)一個巨型的工程;或許你也會在引擎未完成時而干脆放棄它,然后去干的別的什么事兒。好了,當(dāng)你掌握學(xué)習(xí)你所需知識的方式之前,也許你還不能完成那些事兒。將設(shè)計真正地完成確實是件美事,為之你會感覺更好,你將為之而耀眼!
讓我們分析一下具備完整功能的3D游戲引擎的需要哪些基本部件。首先,這為具有相應(yīng)3D經(jīng)驗但且還需一些指引的開發(fā)者提供了一些信息。這是一些并不難且能快速掌握但是你必須應(yīng)用的內(nèi)容條目。為將你的工作更好地進行下去,這里將對關(guān)于“把多大的工作量”與“多少部分”置入一個游戲引擎給出一個總概。我把這些成分稱為 系統(tǒng)(System)、控制臺(Console)、支持(Support),渲染/引擎 內(nèi)核(Renderer/Engine Core)、游戲介質(zhì)層(Game Interface)、以及工具/數(shù)據(jù)(Tools/Data)。
Tools/Data (工具/數(shù)據(jù))
在開發(fā)過程中,你總是需要一些數(shù)據(jù),但不幸的是這并不象寫文本文件或是定義一個立方體那么簡單。至少,你得需要3d模型編輯器,關(guān)卡編輯器,以及圖形程序。你可以通過購買,也可以在網(wǎng)上找一些免費的程序滿足你的開發(fā)要求。不幸的是你可能還需要一些更多的工具可你卻根本無法獲得(還不存在呢),這時你只得自己動手去寫。最終你很可能要自行設(shè)計編寫一個關(guān)卡編輯器,因為你更本不可能獲得你所需。你可能也會編寫一些代碼來為大量的文件打個包,整天面對應(yīng)付成百上千個文件倒是非常痛苦的。你還必須寫一些轉(zhuǎn)換器或是插件將3d模型編輯器的模型格式轉(zhuǎn)換成你自己的格式。你也需要一些加工游戲數(shù)據(jù)的工具,譬如可見度估算或是光線貼圖。
一個基本的準(zhǔn)則是,你可能要為設(shè)計工具而置入比游戲本身等量甚至更多的代碼。開始你總能找到現(xiàn)成的格式和工具,但是經(jīng)過一段時間以后你就能認(rèn)識到你需要你的引擎有很大的特性,然后你就會放棄以前的撰寫方式。
也許目前非常流行利用的第3方工具輔助開發(fā),所以你必須時刻注意你的設(shè)計。因為一旦當(dāng)你將你的引擎發(fā)布為opensouce或是允許修改,那也許在某天中會有某些人來應(yīng)用你的開發(fā)成果,他們將其擴展或者做某些修改。
或許你也應(yīng)該花大量時間去設(shè)計美術(shù),關(guān)卡,音效,音樂和實體模型,這就和你設(shè)計撰寫游戲,工具以及引擎一樣。
System (系統(tǒng))
系統(tǒng)(system)是引擎與機器本身做通信交互的部件。一個優(yōu)秀的引擎在待平臺移植時,它的系統(tǒng)則是唯一需要做主要更改(擴加代碼)的地方。我們把一個系統(tǒng)分為若干個子系統(tǒng),其中包括:圖形(Graphics)、輸入(Input)、聲音(Sound)、記時器(Timer)、配置(Configuration)。主系統(tǒng)負(fù)責(zé)初始化、更新、以及關(guān)閉所有的子系統(tǒng)。
圖形子系統(tǒng)(Graphics Sub-System)在游戲里表現(xiàn)得非常直觀,如果想在屏幕上畫點什么的話,它(圖形子系統(tǒng))便干這事兒。大多數(shù)來講,圖形子系統(tǒng)都是利用OpenGL、Direct3D, Glide或是軟件渲染(software rendering)實現(xiàn)。如果能更理想一些,你甚至可以把這些API都給支持了,然后抽象出一個“圖形層”并將它置與實現(xiàn)API之上,這將給了客戶開發(fā)人員或是玩家更多的選擇,以獲取最好的兼容性、最佳的表現(xiàn)效果。
輸入子系統(tǒng)(Input Sub-System)需要把各種不同輸入裝置(鍵盤、鼠標(biāo)、游戲板[Gamepad],游戲手柄[Joystick])的輸入觸發(fā)做統(tǒng)一的控制接收處理。(透明處理) 比方說,在游戲中,系統(tǒng)要檢測玩家的位置是否在向前移動,與其直接地分別檢測每一種輸入裝置,不如通過向輸入子系統(tǒng)發(fā)送請求以獲取輸入信息,而輸入子系統(tǒng)才在幕后真正地干活(分別檢測每一種輸入裝置),這一切對于客戶開發(fā)人員都是透明的。用戶與玩家可以非常自由地切換輸入裝置,通過不同的輸入裝置來獲取統(tǒng)一的行為將變的很容易。
聲音子系統(tǒng)(sound system)負(fù)責(zé)載入、播放聲音。該子系統(tǒng)功能非常簡潔明了,但當(dāng)前很多游戲都支持3D聲音,實現(xiàn)起來會稍許復(fù)雜一些。
3D游戲引擎中很多出色的表現(xiàn)都是基于“時間系統(tǒng)”(time)的。因此你需要一段時間來為時間子系統(tǒng)(Timer sub-system)好好構(gòu)思一番。即使它非常的簡單,(游戲里)任何東西都是通過時間觸發(fā)來做移動變化,但一份合理的設(shè)計將會讓你避免為實現(xiàn)而一遍又一遍地撰寫大量雷同的控制代碼……
配置系統(tǒng)(Configuration)位于所有子系統(tǒng)的頂端。它負(fù)責(zé)讀取配置記錄文件,命令行參數(shù),或是實現(xiàn)修改設(shè)置(setup)。在系統(tǒng)初始化以及運行期間,所有子系統(tǒng)都將一直與它保持通訊。切換圖象解析度(resolution),色深(color depth),定義按鈕(key bindings),聲音支持選項(sound support options),甚至包括載入游戲,該系統(tǒng)將這些實現(xiàn)顯得格外的簡單與方便。把你引擎設(shè)計得更為可設(shè)置化一些,這將為調(diào)試與測試帶來更大的方便;玩家與用戶也能很方便地選擇他(她)們喜歡的運行方式。
Console (控制臺)
哈!我知道所有人都樂意去更風(fēng)做一個象Quake那樣的控制臺(console)系統(tǒng)。但這的確是一個非常好的想法。通過命令行變量與函數(shù),你就能夠在運行時改變你的游戲或是引擎的設(shè)置,而不需要重啟。開發(fā)期間輸出調(diào)試信息它將顯得非常的有效。很多時間你都需要測試一系列變量的值,將這些值輸出到控制臺上要比運行一個debugger速度顯然要快得多。你的引擎在運行期間,一旦發(fā)現(xiàn)了一個錯誤,你不必立即退出程序;通過控制臺,你可以做些非常輕便的控制,并將這個錯誤信息打印出來。假如你不希望你的最終用戶看見或是使用該控制臺,你可以非常方便地將其disable,我想沒人能看得見它。
Support (支持)
支持系統(tǒng)(Support)在你引擎中任何地方都將被使用到。該系統(tǒng)包含了你引擎中所有的數(shù)學(xué)成分(點,面,矩陣等),(內(nèi))存儲管理器,文件載入器,數(shù)據(jù)容器(假如你不愿自己寫,也可以使用STL)。該模塊任務(wù)顯得非;A(chǔ)與底層,或許你會將它復(fù)用到更多別的相關(guān)項目中去。
Renderer/Engine Core (渲染/引擎 內(nèi)核)
哈~是呀,所有的人都熱愛3D圖象渲染!因為這邊有著非常多的不同種類的3D世界渲染方式,可要為各類擁有不同工作方式的3D圖形管道做出一個概要描述也是幾乎不可能的。
不管你的渲染器如何工作,最重要的是將你的渲染器組件制作得基化(based)與干凈(clean)。
首先可以確定的是你將擁有不同的模塊來完成不同的任務(wù),我將渲染器拆分為以下幾個部份:可見裁減(Visibility)、碰撞檢測與反饋(Collision Detection and Response)、攝像器(Camera)、靜態(tài)幾何體(Static Geometry)、動態(tài)幾何體(Dynamic Geometry)、粒子系統(tǒng)(Particle Systems)、布告板(Billboarding)、網(wǎng)格(Meshes)、天空體(Skybox)、光線(Lighting)、霧(Fogging)、節(jié)點陰影(Vertex Shading)和輸出(Output)。
其中每一個部分都得需要一個接口來方便地實現(xiàn)改變設(shè)置(settings)、位置(position)、方向(orientation)、以及其他可能與系統(tǒng)相關(guān)的屬性配置。
即將顯露出來的一個主要缺陷便是“特性臃腫”,這將取決于設(shè)計期間你想實現(xiàn)什么樣的特性。但如不把新特色置入引擎的話,你就會發(fā)覺一切都將變的很困難,解決問題的方式也顯得特別遜色。
還有一件有意義的事便是讓所有的三角形[triangles](或是面[faces])最終在渲染管道里經(jīng)過同一點。(并非每次的每個三角形,這里討論的是三角形列表[triangle lists]、扇形[fans]、帶形[strips]、等) 多花一些工作讓所有物體的格式都能經(jīng)過相同的光線、霧、以及陰影代碼,這樣就能非常便利地僅通過切換材質(zhì)與紋理id就使任何多邊形具有不同的渲染效果。
這不會傷及到被大量被渲染繪出的點,但是一旦你不當(dāng)心,它可能會導(dǎo)致大量的冗余代碼。
你也許最終便能發(fā)現(xiàn),實現(xiàn)所有這些你所需的極酷效果可能只占了所有的15%左右的代碼量甚至更少。這是當(dāng)然的,因為大多數(shù)游戲引擎并不只是圖形表現(xiàn)。
Game Interface (游戲介質(zhì))
一個3D(游戲)引擎很重要的部分便是------它是一個游戲引擎。但這并不是一個游戲。一個真正的游戲所需的一些組件永遠(yuǎn)不要將它包含到游戲引擎里。引擎與游戲制作之間的控制介質(zhì)能使代碼設(shè)計變得更清晰,應(yīng)用起來也會更舒服。這雖是一些額外的代碼,但它能使游戲引擎具有非常好重用性,通過設(shè)計架夠游戲邏輯(game logic)的腳本語言(scripting language)也能使開發(fā)變的更方便,也可以將游戲代碼置入庫中。如果你想在引擎本身中嵌入你的游戲邏輯系統(tǒng)設(shè)計的話,大量的問題與大量修改一定會讓你打消復(fù)用這個引擎的念頭。
因此,此時你很可能在思考這個問題:聯(lián)系引擎與游戲的介質(zhì)層到底提供了什么。答案就是控制(control)。幾乎引擎的每一個部分都有動態(tài)的屬性,而該引擎/游戲介質(zhì)層(engine/game layer)提供了一個接口去修改這些動態(tài)屬性。它們包括了攝像器(camera)、模型屬性(model properties)、光線(lights)、粒子系統(tǒng)物理(particle system physics)、聲效播放(playing sounds)、音樂播放(playing music)、輸入操作(handling input)、切換等級(changing levels)、碰撞檢測以及反饋(collision detection and response)、以及2D圖形界面的頂端顯示、標(biāo)題畫面等相關(guān)的東西;旧蟻碇v如果你想讓你的游戲能優(yōu)雅的實現(xiàn)這些元素,在引擎中置入這個介質(zhì)層(interface)是必不可少的。
The Game (游戲)
在這里,我無法告訴你如何去寫你的游戲。這該輪到你發(fā)揮啦。如果你已經(jīng)為你那令人贊異的引擎設(shè)計出了一套出色的介質(zhì)層的話,我想在設(shè)計撰寫游戲過程中一定會輕松許多。
3D游戲引擎設(shè)計是一項巨大的軟件工程。一個人獨立完成設(shè)計并撰寫也并非不可能,但這不只是熬一兩個晚上便能搞定的,你很可能會出寫出幾兆的源代碼量。如果你沒有持久的信念與激情,你很可能無法完成它。
當(dāng)然,別指望你的第一次嘗試就能寫出完整的引擎,挑一個比較小的項目所需的小規(guī)模引擎去實現(xiàn)。按你的方式去努力工作,你就能到達成功。陣等),(內(nèi))存儲管理器,文件載入器,數(shù)據(jù)容器(假如你不愿自己寫,也可以使用STL)。該模塊任務(wù)顯得非常基礎(chǔ)與底層,或許你會將它復(fù)用到更多別的相關(guān)項目中去。
Renderer/Engine Core (渲染/引擎 內(nèi)核)
哈~是呀,所有的人都熱愛3D圖象渲染!因為這邊有著非常多的不同種類的3D世界渲染方式,可要為各類擁有不同工作方式的3D圖形管道做出一個概要描述也是幾乎不可能的。
不管你的渲染器如何工作,最重要的是將你的渲染器組件制作得基化(based)與干凈(clean)。
首先可以確定的是你將擁有不同的模塊來完成不同的任務(wù),我將渲染器拆分為以下幾個部份:可見裁減(Visibility)、碰撞檢測與反饋(Collision Detection and Response)、攝像器(Camera)、靜態(tài)幾何體(Static Geometry)、動態(tài)幾何體(Dynamic Geometry)、粒子系統(tǒng)(Particle Systems)、布告板(Billboarding)、網(wǎng)格(Meshes)、天空體(Skybox)、光線(Lighting)、霧(Fogging)、節(jié)點陰影(Vertex Shading)和輸出(Output)。