发布于 

《游戏引擎架构》笔记1:导论

本文是阅读《游戏引擎架构》第一章"导论”进行的归纳和总结。

下面展示了游戏引擎的架构图:

运行时引擎架构
运行时引擎架构
  • 目标硬件
  • 设备驱动程序
  • 操作系统
  • 第三方软件开发包和中间件
    • 数据结构和算法:STLSTLportBoostLoki
    • 图形:Glide、OpenGL、DirectX、libgcm、Edge、Vulkan
    • 碰撞和物理:Havok、PhysXOpen Dynamics Engine(ODE)
    • 角色动画:Granny、Havok Animation、Edge
    • 人工智能:Kynapse(路径搜寻、静态和动态物体回避、空间脆弱点辨认等)
    • 生物力学模型:Endorphin和Euphoria
  • 平台独立层(中间接口层)
    • 平台检测
    • 原子数据模型
    • 集合及迭代器
    • 文件系统
    • 网络传输层(UDP/TCP)
    • 高分辨率时钟
    • 线程库
    • 图形包裹类RHI
    • 物理/碰撞包裹类
  • 核心系统
    • 模块启动及终止
    • 断言
    • 单元测试
    • 内存分配
    • 数学库
    • 字符串及散列字符串标识符
    • 调试用打印及日志
    • 本地化服务
    • 影片播放器
    • 语法分析器(CSV、XML等)
    • 性能剖析/统计采集
    • 引擎配置(INI文件等)
    • 随机数生成器
    • 曲线及曲面库
    • RTTI/反射/序列化
    • 对象句柄/唯一标识符
    • 异步文件I/O
    • 自定义数据结构及算法
  • 资源管理器
    • 三维模型资源
    • 纹理资源
    • 材质资源
    • 字体资源
    • 骨骼资源
    • 碰撞资源
    • 物理参数
    • 游戏世界/地图
    • 其他
  • 渲染引擎:参考[1-3]
    • 低阶渲染器
      • 材质及着色器
      • 静态及动态光照
      • 摄像机
      • 文本及字体
      • 几何图元提交
      • 视区及虚拟屏幕
      • 纹理及表面管理
      • 调试绘图(直线等)
      • 图形设备接口
    • 场景图/剔除优化
      • 空间部分(BSP树/八叉树/kd树/包围球树)
      • 遮挡及潜在可见集(PVS)
      • 细致程度系统
    • 视觉效果
      • 粒子系统(烟/火/水花)
      • 贴花系统(弹孔/脚印)
      • 光照贴图(Light mapping)和环境贴图(Environment mapping)
      • 动态阴影
      • 全屏后期处理效果
      • 高动态范围(HDR)色调映射/bloom
      • 全屏抗锯齿
      • 颜色校正及颜色偏移,包括略过漂白/饱和度/去饱和度等
      • PRT光照/次表面散射
  • 前端
    • 平视显示器(HUD)
    • 游戏内置菜单、主控台、开发工具
    • 图形用户界面(GUI)
    • 全动视频(FMV)
    • 游戏内置电影(IGC)
    • 包裹/吸引模式
  • 剖析和调试工具
    • 录影和回放
    • 内存及性能统计:VTune、Quantify.Purify、Bounds Checker
    • 游戏内菜单或控制台
  • 碰撞和物理
  • 动画
    • 精灵/纹理动画
    • 刚体层次结构动画
    • 骨骼动画:动画状态树及层、反向运动学、游戏后期处理、线性插值和加法混合、动画播放、子骨骼动画、动画解压
    • 顶点动画
    • 变形目标动画
    • 布娃娃(ragdoll)
  • 人体学接口设备
    • 键盘和鼠标
    • 游戏手柄
    • 其他游戏控制器
  • 音频
    • DSP/效果
    • 三维音频模型
    • 音频播放/管理
  • 游戏性基本系统
    • 游戏世界和游戏对象模型
    • 事件系统
    • 脚本系统
    • 人工智能基础
  • 个别游戏专用子系统
    • 地形渲染
    • 水体渲染
    • 玩家状态机及动画
    • 游戏摄像机
    • 人工智能
  • 资产管理
    • 三维网格
    • 骨骼动画
    • 音频
    • 粒子系统
  • 世界编辑器
  • 资源数据库
  • 构建工具
独立工具架构
独立工具架构
工具和游戏建立在相同框架
工具和游戏建立在相同框架
虚幻引擎的工具架构
虚幻引擎的工具架构

[1] James D. Foley. 计算机图形学原理及实践C语言描述
[2] Tomas Akenine-Möller. 实时计算机图形学
[3] Alan Watt. 3D Computer Graphics