1. 程式人生 > >如何學習一款遊戲引擎

如何學習一款遊戲引擎

市面上的引擎應用的最廣的無非是Cocos2D引擎和Unity3D引擎以及虛幻4引擎,當然還有許多開源的引擎,面對這麼多的引擎,讀者該如何學習?筆者就以自己工作十多年的經驗給讀者分享一下,因為人與人是不同的,所以我分享的知識不一定適合所有人。

        學習一款引擎從哪裡下手?通常的做法是看到引擎程式碼後,先看看其說明文件,它能做哪些事情,比如這款引擎核心功能是什麼?它擅長做哪些事情?以Unity引擎為例,它首先解決的問題跨平臺的問題,製作的產品可以一鍵匯出Android和ios以及其他平臺的工程。幫助開發者解決了大部分問題,因為它滿足了當前產品需求。其次是它提供了指令碼程式設計,因為C++對於開發者來說難度比較大,不容易掌握,而C#就解決了這個問題,只要有程式語言功底的都可以使用該指令碼。再次,它提供了一個功能比較完善的編輯器,開發者通過這個編輯器可以很容易進行場景的搭建和邏輯的編寫。最後,Unity的學習對於初學者上手非常快,另外它的架構保證了引擎的擴充套件性非常好。大部分功能都可以通過外掛的方式進行完善。

       引擎有自己的優點也有自己的缺點,Unity引擎的缺點是包體比較大,這個是最致命的弱點,因為玩家它非常在意包體的大小,通常的包體壓縮在40M左右是最好的,另外一個致命的缺點是,它的程式碼對於開發者是封閉的。這個不利於開發者深入理解引擎內部結構,而且開發產品時都會有特定需求,這個也無法做出改變。如果從學習角度看,Unity並不適合學習。

      程式設計師都需要自己的駕馭能力,對於程式開發來說,開源引擎是非常適合學習的,從學習角度看,Cocos2d-x引擎無非是最適合的,Ogre引擎和虛幻4相對來說比較龐大,而Cocos2d-x引擎的3D模組對於學習者來說非常容易入手的。它的程式碼量相對來說不大。模組結構比較簡單,尤其對於場景管理和渲染來說更容易學習。

     在學習3D遊戲引擎之前,對於3D的一些基礎知識還是需要掌握的,比如固定流水線和可程式設計流水線。矩陣運算和向量運算這些數學知識。如何運用固定流水線解決問題,可程式設計流水線主要做哪些事情?材質的渲染,場景後處理渲染等等,為了能快速的掌握這些基礎知識筆者利用業餘時間專門編寫了一本書為讀者解釋固定流水線和可程式設計流水線。著作名字:《手把手教你架構3D遊戲引擎》電子工業出版社。書的封皮如下所示:


掌握了固定流水線和可程式設計流水線後,接下來就要看看場景的組織結構,一個物體在場景中是如何顯示出來的。這個要整清楚,隨著這個問題繼續深入進去就是看看引擎是如何載入讀取的。

       接下來就要看看材質的渲染,場景的後處理渲染,模型的載入,骨骼動畫,特效的載入讀取。這也是引擎的核心模組。以材質渲染為例給讀者介紹一下,材質的渲染最常用的是高光,法線,反射等效果。這些是必須要掌握的。後處理渲染比較常用的是Bloom渲染,Blur渲染,SSAO渲染,PSSM渲染等。

骨骼動畫的實現也是引擎中比較重要的部分,引擎必須有載入模型以及播放骨骼動畫的播放。骨骼動畫有很多方式,最常用的是Morph和蒙皮的實現,骨骼還需要編寫模型匯出外掛。

       接下來要看看特效的實現了,特效分為粒子特效和UV動畫。這個也要去研究的。

最後是一些演算法的實現,碰撞體演算法實現,地形演算法等等。現將3D引擎的模組圖給大家展示一下:


Cocos2d-x中的3D模組非常適合初級開發者學習的。程式碼模組比較清晰,簡單。

最後歡迎大家訪問我的個人網站:姜雪偉個人網頁