版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、3D游戲引擎詳解剖析游戲引擎詳解剖析自Doom游戲時代以來我們已經(jīng)走了很遠(yuǎn)。DOOM不只是一款偉大的游戲,它同時也開創(chuàng)了一種新的游戲編程模式:游戲“引擎“。這種模塊化,可伸縮和擴(kuò)展的設(shè)計觀念可以讓游戲玩家和程序設(shè)計者深入到游戲核心,用新的模型,場景和聲音創(chuàng)造新的游戲,或向已有的游戲素材中添加新的東西。大量的新游戲根據(jù)已經(jīng)存在的游戲引擎開發(fā)出來,而大多數(shù)都以ID公司的Quake引擎為基礎(chǔ),這些游戲包括CounterStrike,TeamF
2、tress,TacOps,StrikeFce,以及QuakeSoccer。TacOps和StrikeFce都使用了UnrealTournament引擎。事實上,“游戲引擎“已經(jīng)成為游戲玩家之間交流的標(biāo)準(zhǔn)用語,但是究竟引擎止于何處,而游戲又從哪里開始呢像素的渲染,聲音的播放,怪物的思考以及游戲事件的觸發(fā),游戲中所有這一切的幕后又是什么呢?如果你曾經(jīng)思考過這些問題,而且想要知道更多驅(qū)動游戲進(jìn)行的東西,那么這篇文章正好可以告訴你這些。本文分多
3、個部分深入剖析了游戲引擎的內(nèi)核,特別是Quake引擎,因為我最近工作的公司RavenSoftware已經(jīng)在Quake引擎的基礎(chǔ)上開發(fā)出了多款游戲,其中包括著名的SoldierofFtune。開始讓我們首先來看看一個游戲引擎和游戲本身之間的主要區(qū)別。許多人們會混淆游戲引擎和整個游戲。這有點像把一個汽車發(fā)動機(jī)和整個汽車混淆起來一樣。你能夠從汽車?yán)锩嫒〕霭l(fā)動機(jī),建造另外一個外殼,再使用發(fā)動機(jī)一次。游戲也像那。游戲引擎被定義為所有的非游戲特有的
4、技術(shù)。游戲部份是被稱為資產(chǎn)的所有內(nèi)容(模型,動畫,聲音,人工智能和物理學(xué))和為了使游戲運(yùn)行或者控制如何運(yùn)行而特別需要的程序代碼,比如說AI人工智能。對于曾經(jīng)看過Quake游戲結(jié)構(gòu)的人來說,游戲引擎就是Quake.exe,而游戲部分則是QAGame.dll和CGame.dll。如果你不知道這是什么意思,也沒有什么關(guān)系;在有人向我解釋它以前,我也不知道是什么意思。但是你將會完全明白它的意思。這篇游戲引擎指導(dǎo)分為十一個部份。是的,從數(shù)量上來說
5、,總共是十一個部份!每個部分大概3000字左右。現(xiàn)在就從第一部分開始我們的探索吧,深入我們所玩游戲的內(nèi)核,在這里我們將了解一些基本的東西,為后面的章節(jié)作鋪墊……渲染器讓我們從渲染器來開始游戲引擎設(shè)計的探討吧,我們將從游戲開發(fā)者(本文作者的背景)的角度來探討這些問題。事實上,在本文的各個段落,我們將常常從游戲開發(fā)者的角度探討,也讓您像我們一樣思考問題!什么是渲染器,為什么它又這么重要呢?好吧,如果沒有它,你將什么也看不到。它讓游戲場景可視
6、化,讓玩家觀眾可以看見場景,從而讓玩家能夠根據(jù)屏幕上所看到的東西作出適當(dāng)?shù)臎Q斷。盡管我們下面的探討可能讓新手感到有些恐懼,先別去理會它。渲染器做些什么?為什么它是必須的?我們將會解釋這些重要問題。當(dāng)構(gòu)造一個游戲引擎的時候,你通常想做的第一件事情就是建造渲染器。因為如果看不見任何東西–那么你又如何知道你的程序代碼在工作呢超過50%的CPU處理時間花費(fèi)在渲染器上面;通常也是在這個部分,游戲開發(fā)者將會受到最苛刻的評判。如果我們在這個部分表現(xiàn)很
7、差,事情將會變得非常糟糕,我們的程序技術(shù),我們的游戲和我們的公司將在10天之內(nèi)變成業(yè)界的笑話。它也是我們最依賴于外部廠商和力量的地方,在這里他們將處理最大限度的潛在操作目標(biāo)。如此說來,建造一個渲染器確實不象聽起來那么吸引人(事實如此),但如果沒有一個好的渲染器,游戲或許永遠(yuǎn)不會躋身于排行榜前10名。問題來了。我現(xiàn)在有一個由幾十萬個頂點多邊形描述的世界。我以第一人稱視角位于我們這個3D世界的一邊。在視野中可以看見世界的一些多邊形,而另外一
8、些則不可見,因為一些物體,比如一面看得見的墻壁,遮擋住了它們。即使是最好的游戲編碼人員,在目前的3D顯卡上,在一個視野中也不能處理300,000個三角形且仍然維持60fps(一個主要目標(biāo))。顯卡不能處理它,因此我們必須寫一些代碼,在把它們交給顯卡處理之前除去那些看不見的多邊形。這個過程被稱為剔除。有許多不同的剔除方法。在深入了解這些之前,讓我們探討一下為什么圖形顯示卡不能處理超高數(shù)量的多邊形。我是說,最新的圖形卡每秒鐘不能處理幾百萬個多
9、邊形嗎?它不應(yīng)該能夠處理嗎首先,你必須理解市場銷售宣稱的多邊形生成率和真實世界的多邊形生成率。行銷上宣稱的多邊形生成率是圖形顯示卡理論上能夠達(dá)到的多邊形生成率。如果全部多邊形都在屏幕上,相同的紋理,相同的尺寸大小,正在往顯示卡上傳送多邊形的應(yīng)用程序除了傳送多邊形以外什么也不做,這時顯卡能處理多少多邊形數(shù)量,就是圖形芯片廠商呈現(xiàn)給你的數(shù)字。然而,在真實的游戲情形中,應(yīng)用程序時常在后臺做著許多其他的事情多邊形的3D變換,光照計算,拷貝較多的
10、紋理到顯卡內(nèi)存,等等。不僅紋理要送到顯示卡,而且還有每個多邊形的細(xì)節(jié)。一些比較新的顯卡允許你實際上在顯卡內(nèi)存本身里面儲存模型世界幾何細(xì)節(jié),但這可能是昂貴的,將會耗光紋理正??梢允褂玫目臻g,所以你最好能確定每一幀都在使用這些模型的頂點,否則你只是在浪費(fèi)顯示卡上的存儲空間。我們就說到這里了。重要的是,在實際使用顯卡時,并不必然就能達(dá)到你在顯卡包裝盒上所看到的那些指標(biāo),如果你有一個比較慢速的CPU,或沒有足夠的內(nèi)存時,這種差異就尤為真實。基本
11、的剔除方法最簡單的剔除方式就是把世界分成區(qū)域,每個區(qū)域有一個其他可見區(qū)域的列表。那樣,你只需要顯示針對任何給定點的可見部分。如何生成可見視野區(qū)域的列表是技巧所在。再者,有許多方法可以用來生成可見區(qū)域列表,如BSP樹,窺孔等等??梢钥隙ǎ?dāng)談?wù)揇OOM或QUAKE時,你已經(jīng)聽到過使用BSP這個術(shù)語了。它表示二叉空間分割。BSP是一種將世界分成小區(qū)域的方法,通過組織世界的多邊形,容易確定哪些區(qū)域是可見的而哪些是不可見的–從而方便了那些不想做
12、太多繪制工作的基于軟件的渲染器。它同時也以一種非常有效的方式讓你知道你位于世界中的什么地方。在基于窺孔的引擎(最早由3DRealms已經(jīng)取消的Prey項目引入游戲世界)里,每個區(qū)域(或房間)都建造有自己的模型,通過每個區(qū)域的門(或窺孔)能夠看見另外的區(qū)段。渲染器把每個區(qū)域作為獨立的場景單獨繪制。這就是它的大致原理。足以說這是任何一個渲染器的必需部份,而且非常重要。盡管一些這樣的技術(shù)歸類在“遮擋剔除“之下,但是他們?nèi)慷加型瑯拥哪康?盡早
13、消除不必要的工作。對于一個FPS游戲(第一人稱射擊游戲)來說,視野中時常有許多三角形,而且游戲玩家承擔(dān)視野的控制,丟棄或者剔除不可見的三角形就是絕對必要的了。對空間模擬來說也是這樣的,你可以看見很遠(yuǎn)很遠(yuǎn)的地方–剔除超過視覺范圍外面的東西就非常重要。對于視野受到限制的游戲來說–比如RTS(即時戰(zhàn)略類游戲)通常比較容易實現(xiàn)。通常渲染器的這個部份還是由軟件來完成,而不是由顯卡完成,由顯卡來做這部分工作只是一個時間問題?;镜膱D形管線流程一個簡
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 3D游戲圖形引擎設(shè)計.pdf
- 3D游戲引擎研究與實現(xiàn).pdf
- DirectX 3D游戲引擎制作與實現(xiàn).pdf
- 3D游戲引擎的設(shè)計與實現(xiàn).pdf
- 手機(jī)室內(nèi)3D游戲渲染引擎研究.pdf
- Android 3D游戲引擎研發(fā)(基于Quake3開源引擎移植).pdf
- 3D游戲渲染引擎的設(shè)計與實現(xiàn).pdf
- 3D外景游戲引擎的設(shè)計與實現(xiàn).pdf
- 3D手機(jī)游戲引擎的研發(fā)和實現(xiàn).pdf
- 3D游戲渲染引擎的研究和實現(xiàn).pdf
- 基于游戲引擎的3D圖形系統(tǒng)的研究.pdf
- 外文翻譯--3d 游戲引擎技術(shù)開發(fā)的研究
- 3D網(wǎng)絡(luò)游戲引擎的研究及實現(xiàn).pdf
- 游戲引擎剖析
- 基于directx9.0的3d游戲引擎研究與實現(xiàn)
- 游戲引擎剖析
- 軍事3D網(wǎng)絡(luò)游戲引擎的設(shè)計與實現(xiàn).pdf
- 3D角色游戲中AI引擎的設(shè)計與實現(xiàn).pdf
- 3D游戲圖形引擎若干關(guān)鍵技術(shù)的研究.pdf
- 3D Android游戲引擎的渲染內(nèi)核技術(shù)研發(fā).pdf
評論
0/150
提交評論