Gamebryo 遊戲引擎分析(一)整體設計

2021-07-04 17:31:30 字數 1445 閱讀 3760

(因為這個引擎是商業引擎,所以,我不會貼上「源**」像這樣:class ooxx;但是我會這樣:

(另:引用請註明出處 blog.csdn.net/xjyhust,以及宣告:全部資料來自網際網路,如果對文章內容有意見,請e-mail我: [email protected];否則管我鳥事,i just come to buy some sauce. )

gamebryo有很多的工程,大概是這樣組織的:

核心的庫:corelib,引擎的核心執行時,包括了這樣幾個專案:

看名字就知道這些模組的功能。其中nidxrenderer其實就是nimain中渲染類的實現。看裡面的巨集定義就知道,gamebryo其實是設計成支援ps3的(至少是這樣),但是我沒有找到ps3的渲染器,也許是因為我用的這個版本是win32的sdk.

應用程式和輔助功能庫:

這個工程就是對核心的一些輔助,包括:製作遊戲編輯器的時候需要的一些基礎元件、內建的視覺化效能監視工具等等,好像還支援將log輸出到網頁上面,非常直觀。

還有一些工程,我這裡就打不開了,因為我沒有弄到完整的**,只有核心庫的**是全的。最為關鍵的shader系統的**暫時沒有找到(也許只是工程沒有裝,**也許是有的)。編輯器的**應該也是沒有的。。。可惜了。。。

總體來看gamebryo的框架設計,也是一層一層的裹起來的(大型程式都應該是這樣的),因為是跨平台的引擎設計,感覺裡面簡單的使用巨集定義的地方比較多,當然這樣比較有效率,但是後面維護修改起來可能就麻煩一些。跨平台比較方便的就是大範圍的替換,比如渲染器,xbox、ps3、wii上的渲染器結構差別都比較大,當然用繼承的方式實現功能的差異是最好的選擇。基礎的部分,因為差異不是很多,用巨集定義就是比較好的選擇,而且效率肯定高。

但是有一點,ps3和xbox上面的記憶體那麼小,不知道這個跨平台引擎怎麼設計記憶體管理系統和資源管理系統的,這個和pc上面的差別比較大,用繼承來實現可能會簡單一些,比如:memsysps3, memsysxb。。。我完全沒有非pc平台的開發經驗,但是感覺這些平台上面的記憶體管理策略就是和pc有很大的不同。id tech 5的主要技術亮點也是這個地方:他們的引擎可以同時跑三個平台,而美工不用做任何修改(zero-delta), 這點太了不起了。unreal 好像都不能做到這點,有些關卡還需要修改才行(比如貼圖大小啦,指令碼大小了。。。)。

剛剛弄到的源**,準備好好看看,畢竟我手頭的商業**裡面,這個算是最正規的。(有誰還知道除了電驢和google搜種子以外,還有哪些方法可以找到這些資源的。。。;) )

Gamebryo 引擎的RITI機制

一 什麼是riti 通過執行時型別識別 rtti run time type identification 程式能夠使用基類的指標或引用來檢查這些指標或引用所指的物件的實際派生型別,在c 中,riti最大的用處是通過虛函式來實現多型。不過有些時候我們必須在執行時期確切的知道基類指標實際所指的型別,而...

Gamebryo2 5引擎評估報告

1.gamebryo 2.5 引擎新增特性 1.1.開發工具方面 1.1.1.場景編輯器 1 新增地形編輯功能,被整合到了gamebryo的場景編輯器中 2 支援動態lod 3 可選擇的整合idv speedtree 4 支援貼圖,貼花,碰撞檢測,meta data,基本的變形能力,基本的水的建立。...

WiEngine遊戲引擎學習筆記(一)

1.menuitemlabel 可以算是wiengine封裝的使用起來比較簡單的menu元件。第一種,只需要給選單新增文字,就可以生成選單。start 是選單的文字,onstart 是選單的響應方法,menuitemlabel裡是用對映來響應的,按照例子,它會自動去尋找方法名是onstart的方法,...