3d游戲引擎詳解剖析_第1頁
已閱讀1頁,還剩30頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、3D游戲引擎詳解剖析游戲引擎詳解剖析自Doom游戲時(shí)代以來我們已經(jīng)走了很遠(yuǎn)。DOOM不只是一款偉大的游戲,它同時(shí)也開創(chuàng)了一種新的游戲編程模式:游戲“引擎“。這種模塊化,可伸縮和擴(kuò)展的設(shè)計(jì)觀念可以讓游戲玩家和程序設(shè)計(jì)者深入到游戲核心,用新的模型,場(chǎng)景和聲音創(chuàng)造新的游戲,或向已有的游戲素材中添加新的東西。大量的新游戲根據(jù)已經(jīng)存在的游戲引擎開發(fā)出來,而大多數(shù)都以ID公司的Quake引擎為基礎(chǔ),這些游戲包括CounterStrike,TeamF

2、tress,TacOps,StrikeFce,以及QuakeSoccer。TacOps和StrikeFce都使用了UnrealTournament引擎。事實(shí)上,“游戲引擎“已經(jīng)成為游戲玩家之間交流的標(biāo)準(zhǔn)用語,但是究竟引擎止于何處,而游戲又從哪里開始呢像素的渲染,聲音的播放,怪物的思考以及游戲事件的觸發(fā),游戲中所有這一切的幕后又是什么呢?如果你曾經(jīng)思考過這些問題,而且想要知道更多驅(qū)動(dòng)游戲進(jìn)行的東西,那么這篇文章正好可以告訴你這些。本文分多

3、個(gè)部分深入剖析了游戲引擎的內(nèi)核,特別是Quake引擎,因?yàn)槲易罱ぷ鞯墓綬avenSoftware已經(jīng)在Quake引擎的基礎(chǔ)上開發(fā)出了多款游戲,其中包括著名的SoldierofFtune。開始讓我們首先來看看一個(gè)游戲引擎和游戲本身之間的主要區(qū)別。許多人們會(huì)混淆游戲引擎和整個(gè)游戲。這有點(diǎn)像把一個(gè)汽車發(fā)動(dòng)機(jī)和整個(gè)汽車混淆起來一樣。你能夠從汽車?yán)锩嫒〕霭l(fā)動(dòng)機(jī),建造另外一個(gè)外殼,再使用發(fā)動(dòng)機(jī)一次。游戲也像那。游戲引擎被定義為所有的非游戲特有的

4、技術(shù)。游戲部份是被稱為資產(chǎn)的所有內(nèi)容(模型,動(dòng)畫,聲音,人工智能和物理學(xué))和為了使游戲運(yùn)行或者控制如何運(yùn)行而特別需要的程序代碼,比如說AI人工智能。對(duì)于曾經(jīng)看過Quake游戲結(jié)構(gòu)的人來說,游戲引擎就是Quake.exe,而游戲部分則是QAGame.dll和CGame.dll。如果你不知道這是什么意思,也沒有什么關(guān)系;在有人向我解釋它以前,我也不知道是什么意思。但是你將會(huì)完全明白它的意思。這篇游戲引擎指導(dǎo)分為十一個(gè)部份。是的,從數(shù)量上來說

5、,總共是十一個(gè)部份!每個(gè)部分大概3000字左右?,F(xiàn)在就從第一部分開始我們的探索吧,深入我們所玩游戲的內(nèi)核,在這里我們將了解一些基本的東西,為后面的章節(jié)作鋪墊……渲染器讓我們從渲染器來開始游戲引擎設(shè)計(jì)的探討吧,我們將從游戲開發(fā)者(本文作者的背景)的角度來探討這些問題。事實(shí)上,在本文的各個(gè)段落,我們將常常從游戲開發(fā)者的角度探討,也讓您像我們一樣思考問題!什么是渲染器,為什么它又這么重要呢?好吧,如果沒有它,你將什么也看不到。它讓游戲場(chǎng)景可視

6、化,讓玩家觀眾可以看見場(chǎng)景,從而讓玩家能夠根據(jù)屏幕上所看到的東西作出適當(dāng)?shù)臎Q斷。盡管我們下面的探討可能讓新手感到有些恐懼,先別去理會(huì)它。渲染器做些什么?為什么它是必須的?我們將會(huì)解釋這些重要問題。當(dāng)構(gòu)造一個(gè)游戲引擎的時(shí)候,你通常想做的第一件事情就是建造渲染器。因?yàn)槿绻床灰娙魏螙|西–那么你又如何知道你的程序代碼在工作呢超過50%的CPU處理時(shí)間花費(fèi)在渲染器上面;通常也是在這個(gè)部分,游戲開發(fā)者將會(huì)受到最苛刻的評(píng)判。如果我們?cè)谶@個(gè)部分表現(xiàn)很

7、差,事情將會(huì)變得非常糟糕,我們的程序技術(shù),我們的游戲和我們的公司將在10天之內(nèi)變成業(yè)界的笑話。它也是我們最依賴于外部廠商和力量的地方,在這里他們將處理最大限度的潛在操作目標(biāo)。如此說來,建造一個(gè)渲染器確實(shí)不象聽起來那么吸引人(事實(shí)如此),但如果沒有一個(gè)好的渲染器,游戲或許永遠(yuǎn)不會(huì)躋身于排行榜前10名。問題來了。我現(xiàn)在有一個(gè)由幾十萬個(gè)頂點(diǎn)多邊形描述的世界。我以第一人稱視角位于我們這個(gè)3D世界的一邊。在視野中可以看見世界的一些多邊形,而另外一

8、些則不可見,因?yàn)橐恍┪矬w,比如一面看得見的墻壁,遮擋住了它們。即使是最好的游戲編碼人員,在目前的3D顯卡上,在一個(gè)視野中也不能處理300,000個(gè)三角形且仍然維持60fps(一個(gè)主要目標(biāo))。顯卡不能處理它,因此我們必須寫一些代碼,在把它們交給顯卡處理之前除去那些看不見的多邊形。這個(gè)過程被稱為剔除。有許多不同的剔除方法。在深入了解這些之前,讓我們探討一下為什么圖形顯示卡不能處理超高數(shù)量的多邊形。我是說,最新的圖形卡每秒鐘不能處理幾百萬個(gè)多

9、邊形嗎?它不應(yīng)該能夠處理嗎首先,你必須理解市場(chǎng)銷售宣稱的多邊形生成率和真實(shí)世界的多邊形生成率。行銷上宣稱的多邊形生成率是圖形顯示卡理論上能夠達(dá)到的多邊形生成率。如果全部多邊形都在屏幕上,相同的紋理,相同的尺寸大小,正在往顯示卡上傳送多邊形的應(yīng)用程序除了傳送多邊形以外什么也不做,這時(shí)顯卡能處理多少多邊形數(shù)量,就是圖形芯片廠商呈現(xiàn)給你的數(shù)字。然而,在真實(shí)的游戲情形中,應(yīng)用程序時(shí)常在后臺(tái)做著許多其他的事情多邊形的3D變換,光照計(jì)算,拷貝較多的

10、紋理到顯卡內(nèi)存,等等。不僅紋理要送到顯示卡,而且還有每個(gè)多邊形的細(xì)節(jié)。一些比較新的顯卡允許你實(shí)際上在顯卡內(nèi)存本身里面儲(chǔ)存模型世界幾何細(xì)節(jié),但這可能是昂貴的,將會(huì)耗光紋理正??梢允褂玫目臻g,所以你最好能確定每一幀都在使用這些模型的頂點(diǎn),否則你只是在浪費(fèi)顯示卡上的存儲(chǔ)空間。我們就說到這里了。重要的是,在實(shí)際使用顯卡時(shí),并不必然就能達(dá)到你在顯卡包裝盒上所看到的那些指標(biāo),如果你有一個(gè)比較慢速的CPU,或沒有足夠的內(nèi)存時(shí),這種差異就尤為真實(shí)。基本

11、的剔除方法最簡(jiǎn)單的剔除方式就是把世界分成區(qū)域,每個(gè)區(qū)域有一個(gè)其他可見區(qū)域的列表。那樣,你只需要顯示針對(duì)任何給定點(diǎn)的可見部分。如何生成可見視野區(qū)域的列表是技巧所在。再者,有許多方法可以用來生成可見區(qū)域列表,如BSP樹,窺孔等等。可以肯定,當(dāng)談?wù)揇OOM或QUAKE時(shí),你已經(jīng)聽到過使用BSP這個(gè)術(shù)語了。它表示二叉空間分割。BSP是一種將世界分成小區(qū)域的方法,通過組織世界的多邊形,容易確定哪些區(qū)域是可見的而哪些是不可見的–從而方便了那些不想做

12、太多繪制工作的基于軟件的渲染器。它同時(shí)也以一種非常有效的方式讓你知道你位于世界中的什么地方。在基于窺孔的引擎(最早由3DRealms已經(jīng)取消的Prey項(xiàng)目引入游戲世界)里,每個(gè)區(qū)域(或房間)都建造有自己的模型,通過每個(gè)區(qū)域的門(或窺孔)能夠看見另外的區(qū)段。渲染器把每個(gè)區(qū)域作為獨(dú)立的場(chǎng)景單獨(dú)繪制。這就是它的大致原理。足以說這是任何一個(gè)渲染器的必需部份,而且非常重要。盡管一些這樣的技術(shù)歸類在“遮擋剔除“之下,但是他們?nèi)慷加型瑯拥哪康?盡早

13、消除不必要的工作。對(duì)于一個(gè)FPS游戲(第一人稱射擊游戲)來說,視野中時(shí)常有許多三角形,而且游戲玩家承擔(dān)視野的控制,丟棄或者剔除不可見的三角形就是絕對(duì)必要的了。對(duì)空間模擬來說也是這樣的,你可以看見很遠(yuǎn)很遠(yuǎn)的地方–剔除超過視覺范圍外面的東西就非常重要。對(duì)于視野受到限制的游戲來說–比如RTS(即時(shí)戰(zhàn)略類游戲)通常比較容易實(shí)現(xiàn)。通常渲染器的這個(gè)部份還是由軟件來完成,而不是由顯卡完成,由顯卡來做這部分工作只是一個(gè)時(shí)間問題?;镜膱D形管線流程一個(gè)簡(jiǎn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論