Gamebryo遊戲引擎概要

Game2遊戲:


編者按:引擎在遊戲研發中起著重要的作用,很多開發人員在選擇遊戲引擎過程中會事先做一些了解。這期我們向大家簡單介紹Gamebryo引擎的一些情況,以後,我們將為大家帶來更多有關遊戲引擎方面的介紹。

  前言:2008年度Gamebryo巡迴亞洲研討會圓滿落幕,包括北京、上海、深圳、廈門、台北等遊戲界相關朋友們都應邀參加這段時間的研討會。較以往不同的是,當中有不少非遊戲從業朋友是因為想接觸遊戲製作而前來參加,為共同探討Gamebryo技術,交流使用Gamebryo的經驗,在研討會​​中,Scaleform公司參與協助對Scaleform的GFx與Gamebryo的結合使用提供指導。兩年多來,Emergent公司通過唯晶科技的代理支持,在大中華地區迅速發展。目前,包括盛大、九城、久游、騰訊、渡口遊戲、燭龍、寶德以及台灣的樂昇​​科技(XPEC)、基因遊戲、億啟數位娛樂和Seed Studio等在內的眾多公司都在使用Gamebryo開發遊戲。藉此次活動的餘熱,筆者在這裡再向大家簡單介紹一下Gamebryo。

一、Gamebryo的基本構成及其工作流程

  Gamebryo是一款便捷且易上手的開放式跨平台遊戲開發引擎,他整合了多家當今的成熟技術。圖01說明了Gamebryo的基本構成和技術特點。我們隨後對其中的主要技術特點做簡單的介紹。

Gamebryo的基本構成和技術特點

  那麼,Gamebryo中的技術是如何在開發遊戲中發揮作用的呢?圖02演示了使用Gamebryo的工作流程。

Gamebryo的工作流程

  從圖中可看出,Gamebryo為當今主要的DCC工具(MAX、Maya、XSI),它都提供了遊戲所需資源的導出插件。這些導出插件的用戶界面簡單、方便且易使用。美術人員可輕而易舉地設置導出環境。從而導出遊戲所需的數據:

• NIF文件包含與幾何模型有關的數據;

• KF文件包含動畫數據;

• KFM文件包含定義一個角色所需的NIF和KF以及動畫序列間的默認轉換方式。

  在上圖中,我們還看到Gamebryo所提供的三個主要工具:

• 資源觀察器(AssetViewer)

這個工具可直接從DCC工具中啟動。美術人員可以在導出數據前用它對DCC中的導出物件、人物設置、場景效果等進行觀察以便在導出前進行修改。當然也可用來對已經導出的NIF進行觀察。

• 動畫工具(Animation Tool)

此工具可以設置導出的動畫序列之間的轉換,建立多層動畫組合。它所產生KFM文件定義了一個完整的角色。

• 場景編輯器(Scene Designer)

顧名思義此工具是美術和策劃用來創建遊戲場景的。 2.5版增加的地形編輯功能使得場景編輯器更上一層樓。從DCC工具中導出的物件、人物可以通過此編輯器加到場景中。也可方便地設置場景中的燈光、相機等。使用者也可以通過寫插件的方式拓展編輯器的功能。場景編輯器產生的GSA文件是XML格式,可被直接加載到遊戲中。

  上述三個主要工具的使用在Gamebryo文檔中都有詳細的描述,參考網站:www.gamebryo101.com可以通過看錄像的方式了解如何使用Gamebryo DCC插件以及如何使用Gamebryo所帶的三個主要工具。

二、Gamebryo的主要技術特點

  前面講到了在使用Gamebryo工作流程中,我們有了遊戲中所需的資源。現在該是談談Gamebryo技術特點的時候了。正是這些優秀的技術才使得這些資源高效高質量地展現在遊戲玩家的面前。那麼,Gamebryo的主要技術包括哪些呢?筆者在下文中做簡單介紹。

場景圖結構(Scene Graph)

Gamebryo的場景圖是一張從場景的根節點起單向非循環的層級結構圖表。這張圖代表了聽得見摸得著的三維世界,是Gamebryo的場景數據庫的基礎。圖03是一張代表從3DS MAX中導出的直升機的場景圖。

 

從3DS MAX中導出的直升機的場景圖

  圖中右邊即為代表直升機的場景圖。 “SceneNode”為此場景圖的根節點。在這種結構下,場景可以有效地以深度優先的方式計算所有物體在世界坐標下的轉換矩陣以及包圍球(Bounding Sphere)。場景圖中的所有節點的類(class)都繼承於NiAVObject。

渲染系統(Frame Rendering)

 

【圖04:Gamebryo渲染系統的架構】

• Render Frame(NiRenderFrame)

這是Gamebryo渲染系統中的最上層界面。它代表一個完整的渲染過程。從圖中可知,這一過程是由一系列的Render Step來完成的。

• Render Step (NiRenderStep)

Render Step是一個獨立的渲染過程。它既可完成主場景的渲染,又可完成一個特效的渲染過程(比如HDR,DOF等)。一個獨立的渲染操作過程可能由一個或幾個Render Click來完成。

• Render Click (NiRenderClick)

Render Click是一個針對單一渲染目標(Render Target Group)的獨立的渲染操作。

• Render View (NiRenderView)

Render View直接對參與渲染的物體進行處理(如剪切、Alpha排序等)。一個Render View可以參與不同Render Click的渲染操作。

  這一架構使得Gamebryo渲染系統的建立與管理更為方便靈活。使用者可以根據渲染的需要來安排Render Step、Render Click和Render View的順序。同時,NiRenderFrame、NiRenderStep、NiRenderClick都可以靠設置Call​​back來完成渲染前以及渲染後使用者需要做的事情。

材質系統(Material/Shader/Texture)

  Gamebryo的材質系統是一種機制。這種機制有效地為基於參與渲染的幾何模型狀態的著色器(Shader)提供服務。在這樣的機制下,美術人員可在DCC工具中輕鬆地設置材質即可。而Gamebryo的材質系統會產生所需的Shader,並儲存在緩衝存儲器中。 Gamebryo有自己的Shader文件格式(即NSF格式),同時也支持其它格式(如FX)。在Gamebryo中,對於在高端機器上運行的遊戲,一般會採用標準材質(Standard Material)。而對低端機器來講,會用到固定管線(fix-pipeline)。

多線程管理系統(Floodgate)

  Floodgate系統是一個跨平台的多線程管理系統(也可說是一個數據流處理器管理系統)。在Gamebryo中,幾何模型的變形、粒子系統的模擬計算、人物模型的蒙皮計算等都由Floodgate系統來完成。圖05顯示Floodgate在系統中的工作流程。其中一片雲的部分就是Floodgate系統。主線程把任務交給Floodgate系統,它完成之後再返回主線程。

Floodgate在系統中的工作流程

  有了Floodgate系統,Gamebryo的用戶在處理與多線程有關的程序時就不必再寫底層代碼了。只要建立所要完成的任務(Task),並把它交給Floodgate系統就可以了。我們在這裡僅僅提到了這個系統。今後有機會再詳細介紹。

幾何模型系統(NiMesh)

  新的幾何系統(NiMesh)是由數據流組成的。上面講到幾何模型的計算是由NiMeshModifier通過Floodgate系統來完成的。圖06顯示了幾何系統與Floodgate系統之間的關係。 NiMeshModifier會把任務交給Floodgate系統,並等待它完成任務返回。對這方面的編程方法感興趣的朋友可以參照Gamebryo所帶的例子MeshCreation。

幾何系統與Floodgate系統之間的關係

  與模型系統的處理方式一樣,Gamebryo所帶的強大、靈活且可拓展的粒子特效的模擬計算也是通過Floodgate系統來完成的。

動畫系統(Animation)

• Gamebryo不僅支持人物模型的細節等級,也支持骨胳的細節等級。等級之間的切換由遊戲系統的邏輯來完成。這部分邏輯是要由遊戲開發者自己來寫的。

• 支持骨胳動畫、面部動畫、層級動畫(Layered Animation)

• 支持動畫序列與動畫序列,動畫與物理模擬結果的混合。動畫序列之間的混和方式可由動畫工具(Animation Tool)來設定。

• 支持動畫序列之間的同步處理。

• 支持人物根節點的動畫累加。

• 具有響應動畫驅動事件的功能。

物理系統(Physics)

  在Gamebryo中,物理系統使用的是NVidia公司的PhysX系統。 Emergent已經完整地把PhysX系統整合到Gamebryo中了。使用者要做的只是拿到NVidia公司的PhysX SDK及其DCC工具的插件。導出帶有物理屬性的物體或人物並加載到遊戲中。在遊戲程序中,首先對物理系統初始,再在更新過程中使Gamebryo系統和物理系統能順利地交換數據。這個交換過程是這樣完成的,首先由Gamebryo系統向物理系統傳遞數據,物理系統完成模擬計算後再把結果返還給Gamebryo系統。其工作流程如圖07所示。

Gamebryo物理系統的工作流程

  我們知道如上所述的Gamebryo的技術特點僅僅是個概括性的描述。對於已經使用過Gamebryo的朋友們來說是遠遠不夠的。今後如有機會,我們會對Gamebryo的主要技術特點以各種方式做更為詳細的介紹。

【作者簡介】

  郭振平,資深軟件工程師,Emergent Game Technologies。 2006年加入Emergent Game Technologies團隊,為Emergent的亞洲客戶提供技術支持。自獲得應用科學碩士學位後,他已從事三維軟件和遊戲引擎開發工作16年。加入Emergent之前,他參與開發了SoftImage的三維動畫工具軟件,Alias​​/Wavefront的Maya,Electric Image的三維工具-Electric Image Universe。在Rockstar,他參與了《SpyHunter 2》,《Midnight Club 2》,《Red Dead Revolver》等遊戲的開發。在Collective,參與了《Star Wars Episode III: Revenge of the Sith》,《Marc Ecko's Getting Up: Contents Under Pressure》,《The Da Vinci Code》,《Dirty Harry》等遊戲的開發。作者郵箱是gamebryosupport@winkingworks.comsupport@gamebryo.com

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

Comments are closed.