寫在前面#
本專欄內容均為學堂在線慕課《3D 遊戲引擎架構設計基礎》中的內容。個人將其轉化成文字和圖片的版本(個人更加喜歡文字版本的教程,閱讀速度更快很多),方便查閱。
原課程鏈接:3D 遊戲引擎架構設計基礎。
本文由整份的 word 文檔轉化而來,可選擇閱讀整份文檔(轉化成的 web 專欄閱讀起來感覺會更加舒服)。鏈接放到最後。
導圖#
課程思維導圖:
大圖查看鏈接:高清版
因此,本專欄將根據導圖的索引,分為 7 個章節。
索引#
- 概述
- [場景管理]((https://olimiya.github.io/posts/3D 遊戲引擎入門課程 2—— 場景管理)
- [資源管理]((https://olimiya.github.io/posts/3D 遊戲引擎入門課程 3—— 資源管理)
- [場景渲染]((https://olimiya.github.io/posts/3D 遊戲引擎入門課程 4—— 場景渲染)
- [角色動畫]((https://olimiya.github.io/posts/3D 遊戲引擎入門課程 5—— 角色動畫)
- [事件處理與腳本語言]((https://olimiya.github.io/posts/3D 遊戲引擎入門課程 6—— 事件處理與腳本語言)
- [內存管理]((https://olimiya.github.io/posts/3D 遊戲引擎入門課程 7—— 內存管理與插件機制)
概述#
遊戲引擎概述#
定義:如果把遊戲開發中的核心基礎功能獨立抽象出來,供遊戲開發者調用,這樣的組件被稱為遊戲引擎。使用遊戲引擎開發遊戲,能夠提高遊戲的開發效率和質量。在早期的遊戲開發中,設計者們逐步地、不斷地抽取出遊戲設計的公共組件,將這些功能抽象化、模塊化,形成了遊戲引擎。隨著遊戲開發的不斷成熟,遊戲引擎的功能已經越來越強大。
其中開源的遊戲引擎包括,Unreal Engine 4,OGRE,Panda3D 等,流行的商業遊戲引擎包括,Unity 等。下文將主要通過 OGRE 和 Panda3D 進行举例。
遊戲引擎框架概述#
遊戲引擎的需求分析,即遊戲引擎應該包含的功能。
其中環境需求包括:
-
目標硬件
-
設備驅動
-
操作系統
-
第三方軟件包和中間件
-
支撐引擎的平台獨立層
功能需求包括:
-
引擎的核心基礎模塊
-
引擎資源管理
-
引擎場景管理和圖形渲染
-
角色動畫
-
聲音
-
物理和碰撞檢測
-
人工智能
-
圖形用戶界面 GUI
-
腳本處理等
遊戲引擎的設計原則包括:功能完善(多),運行效率高(快),性能穩定(好),同時具備良好的擴展性。
遊戲引擎的架構設計,應將以下內容按照一定的方式組合在一起:
-
基礎平台的支撐組件
-
第三方的基礎庫:數據運算、圖形處理、數據結構等
-
引擎功能(如上面功能需求所述)
遊戲引擎層次化組織架構:
功能遊戲#
功能遊戲的分類:
遊戲引擎中的設計模式#
創建型模式:
-
單例模式:系統中只存在一個實例,一般是全程存在的。
-
抽象工廠模式:為創建若干個有關聯的工廠類提供接口,是抽象類,無需指定具體類。
-
工廠模式:提供若干個有關聯對象的接口,是具體類,可以實例化。
結構性模式:
- 適配器模式:將一個類的接口轉換成所希望的另外一個類的接口。讓原本因接口不兼容而不能一起使用的那些類可以一起工作。通過該模式可以為第三方的基礎庫定義統一的接口。
行為性模式:
-
迭代器模式:順序訪問一個聚合對象中的各個元素,但不需要了解該對象的內部表示。
-
觀察者模式:由多個觀察者對象同時監聽某個主體,當主體對象發生變化時,通知所有的觀察者,並做成響應。
-
訪問者模式:將一些操作封裝,並施加於某種數據結構元素上,當修改封裝的操作時,不會影響被施加的數據結構,即可以將不穩定的方法和穩定的數據結構隔離。如,將渲染算法封裝為訪問者模式的類,可將方法和數據隔離,如果某個數據結構的某個算法發生改變,則只需要修改算法,而不影響數據結構的元素。
文檔鏈接#
[金山文檔] 3D 遊戲引擎基礎.doc