遊戲引擎全剖析

Game2遊戲:


自Doom遊戲時代以來我們已經走了很遠。 DOOM不只是一款偉大的遊戲,它同時也開創了一種新的遊戲編程模式: 遊戲“引擎”。這種模塊化,可伸縮和擴展的設計觀念可以讓遊戲玩家和程序設計者深入到遊戲核心,用新的模型,場景和聲音創造新的遊戲, 或向已有的遊戲素材中添加新的東西。大量的新遊戲根據已經存在的遊戲引擎開發出來,而大多數都以ID公司的Quake引擎為基礎, 這些遊戲包括Counter Strike, Team Fortress, Tac Ops, Strike Force, 以及Quake Soccer。 Tac Ops 和Strike Force 都使用了Unreal Tournament 引擎。事實上, “遊戲引擎” 已經成為遊戲玩家之間交流的標準用語,但是究竟引擎止於何處,而遊戲又從哪裡開始呢?像素的渲染,聲音的播放,怪物的思考以及遊戲事件的觸發,遊戲中所有這一切的幕後又是什麼呢?如果你曾經思考過這些問題, 而且想要知道更多驅動遊戲進行的東西,那麼這篇文章正好可以告訴你這些。本文分多個部分深入剖析了遊戲引擎的內核, 特別是Quake引擎,因為我最近工作的公司Raven Software已經在Quake引擎的基礎上開發出了多款遊戲,其中包括著名的Soldier of Fortune 。

開始

讓我們首先來看看一個遊戲引擎和遊戲本身之間的主要區別。許多人們會混淆遊戲引擎和整個遊戲。這有點像把一個汽車發動機和整個汽車混淆起來一樣。你能夠從汽車裡面取出發動機, 建造另外一個外殼,再使用發動機一次。遊戲也像那。遊戲引擎被定義為所有的非遊戲特有的技術。遊戲部份是被稱為'資產' 的所有內容(模型,動畫,聲音,人工智能和物理學)和為了使遊戲運行或者控制如何運行而特別需要的程序代碼, 比如說AI–人工智能。

  對於曾經看過Quake 遊戲結構的人來說, 遊戲引擎就是Quake。 exe ,而遊戲部分則是 QAGame。 dll 和 CGame。 dll 。如果你不知道這是什麼意思, 也沒有什麼關係;在有人向我解釋它以前, 我也不知道是什麼意思。但是你將會完全明白它的意思。這篇遊戲引擎指導分為十一個部份。是的, 從數量上來說,總共是十一個部份! 每個部分大概3000字左右。現在就從第一部分開始我們的探索吧,深入我們所玩遊戲的內核,在這裡我們將了解一些基本的東西, 為後面的章節作鋪墊。 。 。

渲染器

讓我們從渲染器來開始遊戲引擎設計的探討吧, 我們將從遊戲開發者(本文作者的背景)的角度來探討這些問題。事實上,在本文的各個段落,我們將常常從遊戲開發者的角度探討, 也讓您像我們一樣思考問題!

  什麼是渲染器,為什麼它又這麼重要呢?好吧,如果沒有它,你將什麼也看不到。它讓遊戲場景可視化,讓玩家/觀眾可以看見場景,從而讓玩家能夠根據屏幕上所看到的東西作出適當的決斷。儘管我們下面的探討可能讓新手感到有些恐懼,先別去理會它。渲染器做些什麼?為什麼它是必須的?我們將會解釋這些重要問題。

  當構造一個遊戲引擎的時候, 你通常想做的第一件事情就是建造渲染器。因為如果看不見任何東西– 那麼你又如何知道你的程序代碼在工作呢? 超過50% 的CPU 處理時間花費在渲染器上面; 通常也是在這個部分,遊戲開發者將會受到最苛刻的評判。如果我們在這個部分錶現很差,事情將會變得非常糟糕, 我們的程序技術,我們的遊戲和我們的公司將在10 天之內變成業界的笑話。它也是我們最依賴於外部廠商和力量的地方,在這裡他們將處理最大限度的潛在操作目標。如此說來, 建造一個渲染器確實不像聽起來那麼吸引人(事實如此), 但如果沒有一個好的渲染器, 遊戲或許永遠不會躋身於排行榜前10 名。

  如今,在屏幕上生成像素,涉及到3D 加速卡, API ,三維空間數學, 對3D 硬件如何工作的理解等等。對於主機(遊戲機)遊戲來說,也需要相同類型的知識,但是至少對於主機, 你不必去嘗試擊中一個移動中的目標。因為一台主機的硬件配置是固定的“時間快照”, 和PC(個人計算機)不同, 在一台主機的生命期中,它的硬件配置不會改變。

  在一般意義上,渲染器的工作就是要創造出遊戲的視覺閃光點,實際上達到這個目標需要大量的技巧。 3D圖形本質上是用最少的努力創造出最大效果的一門藝術, 因為額外的3D 處理在處理器時間和和內存帶寬方面都是極為昂貴的。它也是一種預算, 要弄清楚你想在什麼地方花費處理器時間,而你寧願在什麼地方節省一些從而達到最好的整體效果。接下來我們將會介紹一些這方面的工具,以及怎樣更好的用它們讓遊戲引擎工作。

建造3D世界

最近,當我和一位從事計算機圖形方面工作長達數年之久的人會談時,她向我吐露道, 當她第一次看到實時操縱計算機3D 圖像時, 她不知道這是怎麼實現的, 也不知道計算機如何能夠存儲3D 圖像。今天這對於在大街上的普通人來說或許是真實的,即使他們時常玩PC 遊戲, 遊戲機遊戲, 或街機遊戲。

  下面我們將從遊戲設計者的角度討論創造3D 世界的一些細節,你也應該看一看Dave Salvator 所寫的“3D 管線導論“,以便對3D 圖像生成的主要過程有一個整體的了解。

  3D 物體(對象)被儲存成3D 世界中的一系列點(被稱為頂點), 彼此之間有相互關係,所以計算機知道如何在世界中的這些點之間畫線或者是填充表面。一個立方體由8個點組成,每個角一個點。立方體有6個表面, 分別代表它的每一個面。這就是 3D 對象儲存的基礎。對於一些比較複雜的3D 物體, 比如說一個Quake 的關卡,將有數以千計(有時數以十萬計)的頂點, 和數以千計的多邊形表面。

  參見上圖的線框表示(注:原文在這裡有一幅圖)。本質上與上面的立方體例子類似, 它僅僅是由許許多多的小多邊形組成的一些複雜場景。模型和世界如何儲存是渲染器的一部份功能, 而不屬於應用程序/遊戲部份。遊戲邏輯不需要知道對像在內存中如何表示, 也不需要知道渲染器將怎樣把他們顯示出來。遊戲只是需要知道渲染器將使用正確的視野去表示對象, 並將在正確的動畫幀中把正確的模型顯示出來。

  在一個好的引擎中,渲染器應該是可以完全被一個新的渲染器替換掉, 並且不需要去改動遊戲的一行代碼。許多跨平台引擎, 而且許多自行開發的遊戲機引擎就是這樣的,如Unreal 引擎, –舉例來說, 這個遊戲GameCube 版本的渲染器就可以被你任意的替換掉。

遊戲網誌:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系

Comments are closed.