posts

《游戏引擎实现原理》子系统与工具 · 全书目录与章节索引(34 篇)

《游戏引擎实现原理》卷三《子系统与工具》全 34 篇,在卷一《引擎内核》与卷二《渲染引擎》之上用 TypeScript 从零实现让《微光岛》活起来的一整套运行时子系统与工具:从资源模型、GUID 与依赖图起步,经异步加载、引用计数、离线导入、缓存与增量构建、流式区块,再到动画剪辑与求值器、状态机与混合树、蒙皮集成与性能基准、引擎与物理库的边界、固定步长与穿透、空间查询与接触事件、混音图与音频总线、音效池与流式、Web Audio 的限制与解锁、设备抽象与事件队列、动作映射与重绑定、输入缓冲与手感、反射驱动的属性暴露、组件脚本生命周期、模块替换与状态迁移,最后进入编辑器四章:场景文档模型与脏标记、序列化与场景格式、命令模式与撤销栈、事务与合并、反射属性面板、控件类型映射、多选批量编辑、gizmo 与拾取射线、场景视口与渲染接入、资产浏览器与关卡编辑。每一节都写代码,每一节的代码都在本机真跑过,跑出来的是真实字节、真实耗时与真实样本。

《游戏引擎实现原理》卷三《子系统与工具》全 34 篇,是接在卷一《引擎内核》与卷二《渲染引擎》之上的一套书:从第 1 章「资源模型、GUID 与依赖图」起,到第 11 章把前面所有零件装配成一个能编辑、能撤销、能存盘的最小编辑器,helio 会一路让《微光岛》活起来——一条从资源模型到流式区块的资源管线、一套剪辑轨道与状态机混合树的动画系统、一层骨骼与蒙皮矩阵的 GPU 蒙皮、一条引擎与物理库之间的清晰边界、一张把音源与总线连成有向图的混音链、一层四设备归一化的输入与可重绑定动作映射、一套反射驱动的脚本属性与热重载状态迁移,以及一套文档模型、命令栈、反射属性面板、视口与资产浏览器的编辑器。每一节都写代码,每一节的代码都在本机真跑过,跑出来的是真实字节、真实耗时与真实样本。

本页是《子系统与工具》的全书目录:按章节顺序列出全部 34 篇,点击标题直达正文。也可以从各节末尾的「阅读导航」按顺序通读,或先看目录篇 里的阅读路径与周计划。

全书概览

项目内容
书稿《游戏引擎实现原理》卷三《子系统与工具》
篇数34 篇(正文 11 章 33 节 + 目录篇)
领域游戏引擎运行时子系统与编辑器工具链从零实现
贯穿项目《微光岛》——一款低多边形 3D 收集冒险小游戏
从零引擎helio——纯 TypeScript,在卷一卷二之上接出 src/subsys/ 与 src/editor/
阅读方式从目录篇 进入按顺序通读,或按查漏场景跳读
实测环境Node 26 与 headless Chromium(Web Audio / 视口渲染 / GPU 蒙皮)
可运行性L1 逻辑本机实跑;L2 渲染与音频用 headless Chromium 验证,附真实像素与样本;编辑器面板 / 视口含 L3 / L4 部分
前置卷一《引擎内核》与卷二《渲染引擎》,或了解句柄、ECS 与 Job System 的基本概念

全书目录

前置

篇目核心内容
目录本卷定位、与卷一卷二的关系、阅读路径、周计划与可运行性口径

第一部分:资源与流式(第 1–2 章)

让资源「进得来、存得下、装得对」——从资源模型与依赖图起步,经异步加载、引用计数、离线导入、增量构建,最后落到运行时的流式区块。

节文章核心内容
1.11.1 资源模型、GUID 与依赖图GUID、类型与路径;Kahn 拓扑加载序 + DFS 三色循环检测
1.21.2 异步加载与进度并发上限、优先级队列、in-flight 去重、字节进度回调
1.31.3 引用计数、生命周期与释放引用计数表、延迟释放队列、帧末 collect 统一释放
2.12.1 资源导入器与离线处理注册表分派、版本失效、PPM / BC1 / mip 链、自描述产物
2.22.2 缓存、热重载与增量构建FNV-1a 内容哈希、依赖键沿 DAG 传播、增量重导脏子树
2.32.3 流式加载与区块(《微光岛》的岛)4x4 区块、距离优先级、每帧字节预算、双半径滞回

第二部分:运行时子系统(第 3–7 章)

让《微光岛》「动起来、碰得到、响得出、按得动、改得了」——动画与蒙皮、物理集成、音频、输入、脚本绑定与热重载。

节文章核心内容
3.13.1 剪辑、轨道与求值器时间轴钳制 / 循环 / 乒乓、关键帧二分、step / linear / cubic 与 slerp
3.23.2 状态机与混合树参数驱动转移、exitTime、any-state、交叉淡化与一维混合树
3.33.3 蒙皮集成与性能基准CPU LBS + WGSL 蒙皮、CPU / GPU 逐顶点比对、蒙皮代价基准
4.14.1 引擎与物理库的边界判别联合碰撞体、PhysicsBackend 接口、ColliderSync 版本同步
4.24.2 固定步长、插值与穿透固定步长累加器、上一态与当前态插值、扫掠 AABB 防穿透
4.34.3 空间查询、分层与事件位掩码分层、raycast 与 overlap、enter / exit / stay 三态事件
5.15.1 混音图与音频总线有向图、拓扑序求和、OfflineAudioContext 逐样本比对
5.25.2 音效池、BGM 与流式voice 池、优先级抢占、淡入淡出包络、流式重采样与欠载检测
5.35.3 Web Audio 的限制与解锁自动播放解锁、渲染量子量化、延迟补偿、设备缓冲
6.16.1 设备抽象与事件队列四种设备归一化 InputEvent、帧内队列、边沿 / 电平语义
6.26.2 动作映射与重绑定动作→控制绑定表、多设备并行、冲突检测、版本化持久化
6.36.3 输入缓冲与手感跳跃缓冲、土狼时间、输入延迟补偿(手感数值属 L4)
7.17.1 反射驱动的属性暴露类型描述符→属性视图、类型强制、只读与隐藏、最小变更集
7.27.2 组件脚本的生命周期onCreate / onUpdate / onDestroy、状态机、帧末延迟卸载
7.37.3 模块替换与状态迁移数据与代码分离、版本戳、迁移链升版(真实刷新时序属 L4)

第三部分:编辑器(第 8–11 章)

让内容「做得出来、改得回去」——场景文档模型、可撤销命令栈、反射驱动的属性面板、视口与资产浏览器。

节文章核心内容
8.18.1 编辑器与运行时的关系共享文档、编辑态 / 运行态两实例、Play / Pause / Stop 与快照
8.28.2 文档模型与脏标记扁平节点表、id 与稳定 uid、脏标记沿父链传播、变更记录
8.38.3 序列化落盘与场景格式JSON 关卡格式、uid 引用、版本字段与迁移、拒绝更高版本
9.19.1 命令模式与可撤销操作Command 的 do / undo、撤销栈、redo 链断裂、合并判定
9.29.2 事务、合并与撤销栈原子事务补偿回滚、时间窗合并、栈条数上限与字节预算
9.39.3 与数据模型的接缝文档为唯一编辑目标、SetProperty / AddNode、命令→脏标记→重绘
10.110.1 反射驱动的属性面板面板描述数据模型(纯数据,L1);DOM 渲染属 L3
10.210.2 编辑器控件与类型映射类型→控件映射表、可覆写注册表(映射 L1);控件创建属 L3
10.310.3 多选编辑与批量修改公共属性、全等 / 混合判定、批量命令(L1);面板交互属 L3 / L4
11.111.1 gizmo 与拾取射线像素→NDC→世界射线、轴 / 面手柄、沿轴拖拽求解(拖拽属 L4)
11.211.2 场景视口与渲染接入渲染器接进视口、双相机、片元描边、网格叠加(回读像素核对)
11.311.3 资产浏览器与关卡编辑资产树、类型判定、稳定 GUID、拖放载荷、关卡加载(拖放属 L4)

说明:本卷没有序、前言与附录(与卷一《引擎内核》不同),全部内容就是上表的 11 章 33 节,外加一篇目录 。

怎么用这份索引

相关阅读

全部文章 Golang Game Saas Rust Python Java 游戏开发 客户端开发 GameDev TypeScript
engine

《游戏引擎实现原理》5.1 混音图与音频总线

把「音源 → 总线 → 主输出」建模成一张有向图:节点带线性增益,边是数据流,渲染一个量子时按拓扑序累加、逐节点乘增益。先用纯 TS 真跑分贝换算、等功率声像、混音求和与总线路由,再把同一张图放进 headless Chromium 的 OfflineAudioContext 复算,逐样本比对 Web Audio 与 L1 的输出。

7 分钟阅读
游戏引擎 子系统与工具 音频
engine

《游戏引擎实现原理》2.3 流式加载与区块(《微光岛》的岛)

《微光岛》的岛不是一整块资源:本节用 TypeScript 把它切成 4x4 个区块,用相机距离排加载优先级、用每帧字节预算限流、用加载与卸载双半径做滞回防抖,写出一个可逐帧推进的流式调度器,并实测单块字节数、峰值驻留与单帧最大派发量,全部来自本机实跑。

10 分钟阅读
游戏引擎 子系统与工具 资源管线
engine

《游戏引擎实现原理》1.3 引用计数、生命周期与释放

资源加载进来之后,谁拥有它、什么时候可以扔?本节从零实现资源级的引用计数表:acquire 加引用、release 减引用、归零不立刻释放而是挂进待释放队列、帧末 collect 统一释放。用一个「材质释放时级联释放它持有的 mesh」的场景证明延迟释放如何避开 re-entrant 释放,并量出本机约 2100 万次 acquire/release 每秒。

7 分钟阅读
游戏引擎 子系统与工具 资源管线
engine

《游戏引擎实现原理》1.2 异步加载与进度

依赖图告诉引擎「先加载谁」,但真正的加载是异步并发的,还要让 UI 看到进度。本节从零实现带并发上限、优先级队列、in-flight 去重与字节进度回调的异步加载器,用注入的假 IO 在 Node 直跑,量出并发从 1 到 8 时加载 64 个资源的墙钟耗时几乎线性下降,并解释为什么进度条要按字节而不是按个数。

7 分钟阅读
游戏引擎 子系统与工具 资源管线
engine

《游戏引擎实现原理》1.1 资源模型、GUID 与依赖图

资源管线的第一课是把「资源」本身建模清楚:一个 GUID、一个类型、一条路径、一张依赖表。本节从零实现 helio 的资源模型与依赖图,用 Kahn 算法算出「依赖在前」的拓扑加载序,用 DFS 三色标记检测循环依赖,再给出反向边供后续热重载定位受影响资源。全部代码在 Node 直跑,11 条用例锁住行为。

7 分钟阅读
游戏引擎 子系统与工具 资源管线