第二章 · 引擎架构与运行时主干 本章要回答的三个问题:你在第一章按下的每一次 Play,引擎在幕后按什么顺序做事?世界里的每个物体在引擎眼中是什么身份、由什么规则管理?画面、物理和玩家的手指输入,是怎么在同一帧里接力完成的? 为什么会有这一章 学引擎最常见的弯路,是把它当成一堆互不相关的功能开关:要光照点光照、要粒子点粒子、要网络点网络。功能会用了,问题也来了——物体消失、引用丢失、帧率骤降这类"系统性"故障一出现就束手无策,因为故障的根源往往不在某个功能,而在架构的运转方式:垃圾回收收走了你以为还握着的对象,游戏线程和渲染线程的时间差让你的修改慢半拍出现,物理与渲染用了不同步的时间戳导致穿模。 架构就是这台机器的心跳规律。
本章要回答的三个问题:你在第一章按下的每一次 Play,引擎在幕后按什么顺序做事?世界里的每个物体在引擎眼中是什么身份、由什么规则管理?画面、物理和玩家的手指输入,是怎么在同一帧里接力完成的?
学引擎最常见的弯路,是把它当成一堆互不相关的功能开关:要光照点光照、要粒子点粒子、要网络点网络。功能会用了,问题也来了——物体消失、引用丢失、帧率骤降这类"系统性"故障一出现就束手无策,因为故障的根源往往不在某个功能,而在架构的运转方式:垃圾回收收走了你以为还握着的对象,游戏线程和渲染线程的时间差让你的修改慢半拍出现,物理与渲染用了不同步的时间戳导致穿模。
架构就是这台机器的心跳规律。虚幻引擎把"世界由 Actor 组成、Actor 由组件拼装、一切对象受统一的生命周期与内存规则管辖"作为底层公约,把"每一帧按固定顺序唤醒各子系统"作为节拍器。不掌握公约与节拍,后面七章的每个话题都只能学成孤立招式;掌握了,它们会自动连成一张网——这也是为什么本章排在全书第二,先于一切具体功能。
从帧预算的角度看,本章是在给你的账本立科目:游戏循环里哪一步花 CPU、哪一步花 GPU,模块边界决定了开销记在谁的账上。第九章做性能分析时填的每个数字,都能对应回本章的架构位置。
读完本章,你应当能用自己的话讲清一帧的完整旅程:从引擎启动时的模块加载,到每帧的游戏逻辑 tick、渲染指令提交、GPU 执行、画面呈现;能说出 Actor 与组件的分工,遇到"移动逻辑写在哪、表现逻辑写在哪"这类问题时有判断依据;能在 C++ 与蓝图出现之前理解 UObject、垃圾回收与反射这三块地基,为第三章的双轨编程扫清概念障碍;还能解释物理子步与输入采样发生在帧的哪个阶段——为什么有时手已经按了,角色却下一帧才动。
| 节 | 回答的问题 | 关键产出 |
|---|---|---|
| 2.1 引擎整体架构与模块系统 | 引擎由什么组成、对象如何生灭 | 架构分层心智模型 |
| 2.2 渲染管线基础 | 画面在一帧内如何被逐段加工 | 管线分段与预算意识 |
| 2.3 物理碰撞与输入事件 | 世界的碰撞规则与玩家的意图入口 | 碰撞通道与增强输入 |
三节顺序即数据流向:先立骨架(架构),再看骨架如何产出画面(渲染),最后接入外部刺激(物理与输入)。渲染管线一节刻意控制在"够用"深度——材质、光照的专门听证在第五章,这里只回答"一帧画面经过哪些工位"。
第一章的编辑器操作(选中、细节面板、Play)要熟;如果计划跟读 2.1 的代码示例,需要能看懂基础的 C++ 类语法,看不懂也不影响主线——示例的注释足够传达概念。第三章会系统讲双轨编程,本章不要求动手写代码。
本章的架构公约在第三章立刻兑现:蓝图与 C++ 之所以能互操作,正因为它们都长在 UObject 反射系统这块地基上。而"一帧的接力"这张图,会在第五章(渲染预算)、第六章(动画与特效开销)、第九章(性能定位)反复回来收利息。
找一位同伴(或对着橡皮鸭)把接力图口头讲一遍,讲到哪一步卡壳,就说明哪个环节只有"听过"没有"懂过"。架构知识的检验标准不是背出名词,而是能顺着数据流把一次按键到画面变化的全过程串起来——串通了,后面七章的性能话题就都有了挂靠点。