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

來源:互聯網
上載者:User

(因為這個引擎是商業引擎,所以,我不會粘貼“原始碼”像這樣:class OoXx{ public ...};但是我會這樣:
  So, technically, technically, I don't breaking any laws here. But IF you want fuck me, go ahead, I don't give a shit. )
(另:引用請註明出處 blog.csdn.net/xjyhust,以及聲明:全部資料來自互連網,如果對文章內容有意見,請e-mail我: xjyhust@gmail.com;否則管我鳥事,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搜種子以外,還有哪些方法可以找到這些資源的。。。;) )

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.