游戏引擎内核

游戏引擎是”游戏的实时操作系统”——每帧 16ms(60fps)内完成输入、物理、AI、渲染。

为什么学游戏引擎内核

游戏引擎的约束条件与操作系统内核类似: 严格的实时要求 (不能掉帧), 资源管理 (GPU 显存, 音频缓冲区), 并发调度 (渲染线程 vs 逻辑线程)。Eigen 数学库、Lua 虚拟机、物理求解器——这些组件共同构成了”游戏的 OS”。同时, ECS 架构的数据驱动思维对通用软件架构也有深刻启示。

文件索引

文件内容C/C++ 关联
游戏循环Game Loop: process_input→update→render→present, fixed vs variable timestep, delta time, vsync[[../../ISSUES
渲染管线顶点着色→光栅化→片段着色→后处理, GPU 资源生命周期, 场景图, 视锥剔除[[../../ISSUES
物理引擎碰撞检测: BVH→SAT/GJK; 刚体动力学: 力→加速度→速度→位置; 约束求解 (Sequential Impulse)[[../../ISSUES
ECS架构Entity-Component-System: SoA 数据布局, Archetype, Sparse Set, 对比 OOP 继承[[../../ISSUES
音频引擎音频图: source→filter→mixer→output, DSP 基础 (卷积/混响/延迟), 空间音频, PortAudio/OpenAL[[../../ISSUES
脚本引擎C++↔脚本绑定, Lua C API, 反射/序列化, 热重载, embedding vs extending[[../../ISSUES

核心循环

FUNCTION game_loop():
    WHILE running:
        delta_time ← clock.update()
        process_input()
        update_physics(delta_time)
        update_ai(delta_time)
        render_frame()
        present_frame()
        IF delta_time < target_frame_time:
            SLEEP(target_frame_time - delta_time)

阅读路径

游戏循环 → ECS架构 → 渲染管线 → 物理引擎 → 音频引擎 → 脚本引擎
  • 先理解帧循环——这是游戏引擎的心脏
  • ECS 是数据架构基础, 渲染/物理 System 都跑在 ECS 上
  • 然后看渲染和物理——计算量最大的两个子系统
  • 最后看音频和脚本——技术支持层面

著名引擎

引擎语言特点
Unreal EngineC++ECS (Mass), Blueprint 可视化脚本, Niagara VFX
UnityC++/C#ECS (DOTS), Burst Compiler, Job System
GodotC++自定义脚本 (GDScript), 节点树架构
BevyRust纯 ECS, 数据驱动
raylibC极简, 适合学习引擎原理

相关模块

  • [[|系统内核]] — 操作系统提供的底层支持 (GPU 驱动, 音频驱动, 定时器)
  • [[|语言运行时内核]] — 嵌入的脚本运行时 (Lua, Python, V8)
  • C 与 Rust 的内核新时代 — 系统编程语言的演进