3D遊戲引擎系列一

2021-07-26 07:01:43 字數 2421 閱讀 8852

筆者介紹:

姜雪偉,

it公司技術合夥人,

it高階講師,

csdn

社群專家,特邀編輯,暢銷書作者,國家專利發明人

;已出版書籍:《手把手教你

架構

3d遊戲引擎》電子工業出版社

和《unity3d

實戰核心技術詳解》電子工業出版社等。

為了能讓開發者重視引擎開發,最近一直在寫一些關於學習引擎的一些博文,為此還寫了一本入門級引擎開發的書籍《手把手教你架構3d遊戲引擎》電子工業出版社,供初級開發者學習。接下來我還會寫一些關於引擎方面的博文,供讀者參考。

十多年前,筆者剛踏入遊戲公司做研發時,公司當時並沒有

3d遊戲引擎,公司研發遊戲都是在上款已研發好的產品基礎上進行修改,換句話說就是「換皮」。做的時間久了會遇到相同的**邏輯在不同的遊戲專案裡面重複出現,行業裡面俗稱:「重複的造輪子」,開發者在開發產品時通常的做法就是複製貼上,導致專案出現

bug的概率非常高,大大降低了研發效率。為了改變這種現狀,公司安排專門的人嘗試著把遊戲裡面常用的**抽離出來,重新做乙個新工程編譯成靜態庫

lib或者動態庫

dll,這樣

3d引擎的雛形開始形成了。隨著工程的**量不斷增加完善,久而久之,

3d遊戲引擎就形成了。開發3d遊戲引擎目的是簡化遊戲製作的複雜度,縮短遊戲開發周期,降低產品製作成本,因為封裝好的引擎可開發多種型別的產品。

學習引擎首先要明白什麼是引擎?引擎是用來做什麼的?在現實生活中很多開發者對引擎的概念比較模糊,市面上也有很多關於

3d遊戲引擎的書籍,但是介紹的都不是很清晰,或者介紹的面太廣不利於初級開發者學習。在這裡打個形象一點的比喻介紹

3d遊戲引擎,以汽車的發動機為例,驅動汽車在公路上行駛的是發動機引擎,汽車發動機引擎是驅動汽車行駛的動力源。不論是油箱還是驅動軸等都要受發動機控制,換句話說,發動機就相當於乙個控制模組,控制所有其他裝置執行。發動機的效能也決定了汽車的效能,圍繞發動機引擎可以製造出多款不同型號的汽車。知識**於生活,

3d遊戲引擎的原理與汽車發動機引擎的原理是類似的,遊戲的邏輯模組也是在遊戲引擎的基礎上實現出來的。遊戲開發者只需要呼叫引擎提供的介面編寫邏輯,引擎的渲染效率直接影響遊戲執行效率,引擎的渲染品質直接決定了遊戲的渲染品質。當然用同一款引擎可以做出許許多多款遊戲,最直觀的就是

unity

引擎,使用

unity

引擎研發的產品種類非常多,接下來介紹引擎的工作原理。

隨著it產業的蓬勃發展,越來越多的開源3d引擎,商業3d引擎都湧現出來了,其中最具代表作的是廣泛運用於移動端開發的unity3d引擎和虛幻4引擎以及開源圖形學ogre引擎。unity引擎在市面上比較流行,相信大多數it開發者都使用過,先以unity3d引擎為例介紹引擎的原理,unity3d引擎提供了乙個功能非常強大的編輯器供使用者開發使用。支撐編輯器執行的是許多已經封裝好的dll檔案,讀者可通過其安裝目錄檢視到許多dll動態庫檔案,這些封裝的dll動態庫就是unity3d引擎底層封裝提供的。遊戲開發者在使用其開發遊戲寫具體邏輯時,也需要利用c#指令碼呼叫動態庫dll封裝的函式介面,從而能夠執行引擎底層的**實現出想要的效果。介面的使用可通過檢視unity幫助文件獲取到,它的底層**的實現對使用者來說是不可見的,但是這不妨礙使用者開發專案,因為使用者只需要知道函式的功能就可以了。

3d引擎本身也是一種3d軟體,主要負責處理遊戲虛擬世界的渲染,3d引擎架構設計其實非常複雜,用到的知識點非常多,比如設計模式,多執行緒程式設計,演算法,gpu程式設計等,但是不管多麼複雜,其最基本架構思想還是模組化開發,就比如打籃球一樣,不論採用那種戰術跑位,最基本的還是擋拆戰術。繼續模組思想的討論,以模組化思想設計的3d引擎便於擴充套件,可以有效的減少模組之間的耦合性。開發3d遊戲引擎時,切記面面俱到,換句話說3d遊戲引擎主要功能是渲染,在這方面做的比較好的是開源的ogre圖形學引擎以及商業引擎虛幻4,它們核心功能只是負責3d渲染,做3d引擎該做的事情。對於unity3d引擎,它在3d引擎渲染的基礎上還增加了網路庫等功能,對於引擎來說顯得過於臃腫,當然這裡不是說unity3d引擎不好,只是其功能太多,對開發者來說並不一定是好事情。對引擎自身來說也不一定時好事情,因為這樣引擎的功能失去了重點,所以一提到unity3d引擎,大家的第一印象是其跨平台功能與引擎核心功能渲染不搭邊,而對於ue4引擎,大家的第一印象是渲染,ue4在渲染這方面做的非常專一,結果就是ue4引擎渲染功能比unity3d引擎更強大。當然unity3d引擎的優點也是非常多的,比如引擎的架構設計使用了元件的理念,使用指令碼寫邏輯,可以跨多個平台等。而且對於初學者上手非常快,這也是它能快速普及的乙個主要原因。

如果要開發一款引擎具體如何做?以及引擎由那些主要模組組成?遊戲引擎涵蓋的模組非常多,它是乙個處理遊戲所有邏輯的系統。引擎渲染功能是否強大,決定了遊戲渲染品質的高低,以及遊戲渲染執行的流暢度。下面簡單的介紹一下通用的3d遊戲引擎架構:

3D遊戲引擎系列四

筆者介紹 姜雪偉,it公司技術合夥人,it高階講師,csdn社群專家,特邀編輯,暢銷書作者,國家專利發明人 已出版書籍 手把手教你架構3d遊戲引擎 電子工業出版社和 unity3d實戰核心技術詳解 電子工業出版社等。在設計引擎時,首先我們要做的是把整個引擎的框架設計好,引擎設計採用的都是模組化開發,...

3D手機遊戲引擎

一,寒霜2引擎 frostbite 2 engine 但手機上貌似不支援 二,虛幻3引擎 unreal engine 3 沒用過 三,unity 引擎 本人使用過 以上3d引擎我推測應該都是基於 opengl es2.0圖形庫支援嵌入式裝置。2d手機遊戲引擎 一,cocos2d x cocos2d ...

3D遊戲引擎系列 一 渲染流程和座標轉換

在3d遊戲中,真實遊戲場景會經過一系列的變化,最終會以2d的形式在螢幕中向我們展示出來。這一整個過程就是通常所說的 繪製流水線 大多數時候稱之為 管 線 所謂 固定管線 是指資料進入硬體 gpu 後,使用的是directx或者opengl內建指令,我們無法去干涉整個流程。而 可程式設計管線 是指這裡...