3D游戏引擎入门课程1——概述

本文由整份的 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