大纲
- 导论
- 支撑系统
- 渲染引擎
- 动画
- 物理
- 其他
导论
什么是架构?
软件架构是一个系统的草图,软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或对象。在面向对象领域中,组件之间的连接通常用接口来实现。
什么是游戏引擎?
定义组件最重要的是功能的增加和分解
常见组件的问题
- 单个组件的功能太多
- 组件的描述不够清晰
常见的游戏引擎
推荐书籍
运行时游戏引擎架构
游戏引擎由工具套件和运行时组件两部分构成
目标硬件
Hardware(PC,XBOX360, PS3, etc)
运行游戏的电脑系统或主机设备驱动程序
硬件驱动是比较底层的,由操作系统或硬件开发商提供的软件构成,硬件驱动管理硬件资源,把操作系统与引擎上层跟无数不同的可用的硬件细节操作隔离开来。操作系统
在PC上操作系统是一直运行着的,它指挥着多个程序在一台电脑上运行,其中包括你的游戏。这意味着PC游戏不能假设拥有硬件的所有控制权。在游戏主机上,操作系统通常只是一个轻量级的库,链接到游戏的执行档中,游戏一般完整的拥有整个硬件。-
第三方SDK和中间件
第三方SDK和中间件 -
平台独立层
平台独立层
游戏引擎需要运行在不同的平台上,绝大多数游戏引擎架构上都是一个平台无关层。这一层建立在硬件层、驱动层、操作系统、第三方软件之上。把引擎的剩余部分和大部分的底层细节隔离开来。通常包含C标准库、操作系统调用、基础API,保证引擎在所有不同的硬件平台上的行为一致性。
- 核心系统
断言:是进行错误检查而插入的,用来捕获逻辑错误以及违反程序员本意的代码,断言一般在最终产品生成时会被移走。
内存管理:游戏引擎都实现了自己一套内存分配机制,来确保高速的内存分配以及释放,并减小内存碎片带来的负面影响。
数学库:游戏是天生对数学要求很高,每个游戏引擎至少都有一个数学库。
字符串:字符串的复杂性主要在于编码,同样的内容不同的编码其二进制数据是不同的,在进行本地化(国际化)时不得不面对这个问题。另外,hash string表示将一个字符串转换成一个数值,在服务器验证时经常会用到。
词法分析器:可理解为XML等性能分析工具,如Unreal内置的Profiler。
引擎配置:常用手段是ini文件
- 资源管理
每个引擎都有某种形式的资源管理器,它提供一个统一的接口来存取及所有的游戏资源和其它引擎输入数据。