关于 Bevy 的系统性中文指南至今仍然欠缺,互联网上的资料零散、碎片化,且大多停留在如何做的层面,很少触及为什么这样设计。想要深入理解 Bevy 的内部机制,往往需要自行翻阅大量源码与文档,这消耗了开发者大量的时间,也严重阻碍了 Bevy 生态在中文社区的成长。
Bevy 经过五年的发展,距离 1.0 完成度已接近八成,其架构设计也趋于稳定。加之作者本人对Bevy比较感兴趣,遂决定撰写一本从源码出发、深入设计哲学的指南(本书撰写始于2025年10月11日)。
这是一本从源码出发、以理解引擎如何运作为目标的 Bevy 深度导读。
本书不教你搓一个简单的游戏,而是带你拆开 Bevy 这个复杂系统,看它的每一块齿轮是怎么咬合的,本书的内容和目的是解释如下问题。
-
ECS 是如何在运行时管理成千上万个实体与组件
-
反射是如何让静态语言获得动态能力的
-
Bevy是如何做到无锁并行的
-
宏是如何在编译期生成一整套 trait 实现的
-
渲染管线是如何把数据从 CPU 搬到 GPU的
-
GPU是如何把数据渲染成图像的
……以及更多底层而复杂的问题。
- 不是游戏开发教程。作者自己其实很少玩游戏,这本书也不是来教做游戏的。读完本书,你不会得到一个完整的游戏 Demo。(或许以后会有?)
- 不是 API 手册。API 会随版本变化,但设计思想不会。本书关注的是后者。
- 不是面面俱到的百科全书。物理引擎、音频细节、UI 系统等内容,本书要么简略带过,要么留给其他资料。
- 独立阅读 Bevy 的源码,理解它的模块划分与设计决策
- 理解 ECS、反射、宏、调度图、渲染管线背后的核心机制
- 在 Bevy 版本发生重大变化时,快速迁移自己的代码与理解
- 具备进一步研究引擎、框架、系统级软件的底层能力
- 对复杂系统如何被设计出来这件事,形成自己的判断力
但你不会因此成为游戏开发者。这不是本书的目标。
本书假设你:
- 已经初步掌握 Rust(trait、泛型、所有权、生命周期)
- 学过基本线性代数(矩阵乘法、向量点积)
- 对游戏开发、图形学、GPU 编程没有先验要求
如果你属于以下任意一种人,本书会非常适合你:
- 学过 Rust,但没见过一个真实的、大型的 Rust 项目是如何组织宏、trait 和模块的
- 学过线性代数,但想知道矩阵变换在 3D 引擎里到底是怎么被用起来的
- 对反射、宏、ECS、渲染管线这些魔法感到好奇,想知道它们是怎么被设计出来的
- 想理解游戏引擎这个复杂系统
- 未来想自己写引擎、写框架,或对系统级软件设计感兴趣
如果你只是想快速做一个游戏出来,本书可能不适合你。但如果你想理解 Bevy 为什么这样设计,并且愿意和我一起从源码出发去追根究底,那么来对地方了~
本书采用个人笔记式的源码阅读风格。先自顶向下帮助读者建立对Bevy的API的初始印象,然后自底向上分析Bevy的底层逻辑与源代码,逐步展开背后的设计动机。
- 我会大量地问为什么,然后去源码里找答案。
- 我会在必要的地方从0给出数学推导,也会在更多地方给出直觉解释。
- 我会承认自己没搞懂的地方,也会在后续版本中回头修正。
- 我不会假装自己什么都知道,但我会尽量把自己走过的弯路讲清楚。
最终目标不是让你记住 API,而是让你理解 Bevy 的设计哲学与内部原理。当你真正理解这套设计之后,API 的变化对你来说只是换了一层皮。即使未来 Bevy 发生了重大变化,你也能轻松上手。
本书计划分为上中下三册:
- 上册:自顶向下结构,Bevy 总览、ECS 架构、资产系统、时间、2D / 3D 渲染基础、空间变换、相机、动画、反射基础。上册的目标是让你能够读懂 Bevy examples 中的绝大部分内容。
- 中册:自顶向下 + 自底向上双模式,深入反射系统与有向无环并行图的构建与运作原理,包括
bevy_reflect的 derive 宏实现、调度图的构建与执行、并行调度的冲突检测等。 - 下册:自顶向下 + 自底向上双模式,深入 Bevy 的渲染管线与
wgpu渲染系统,包括渲染图、Extract 阶段、RenderCommand、着色器绑定等。
本书目前正在积极撰写中,也是我本人学习 Bevy 过程中的经验总结。由于事务缠身(导师横向、学术研究、其他项目),更新可能较慢,但绝不会弃坑。欢迎合作与贡献。
Github Pages:线上书籍在线观看。https://ailrid.github.io/Bevy-Engine-Guide/
virid:我的另一个项目,Bevy 思想的落地实践——使用类 ECS 实现的一站式重型 Electron 应用开发框架,将 Bevy 的设计哲学和 Rust 理念嵌入 TypeScript 与 Electron。https://github.com/Ailrid/virid
我花了很多个深夜去磨这些章节,每一小节都要写作数个小时甚至半天。如果你觉得有用,那是对我最大的认可。
为了保护这些心血不被滥用,本书文字、图片及示例代码均采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 (CC BY-NC-SA 4.0) 进行许可。
这意味着:
- 署名:您可以自由地转载、引用或基于本书进行二次创作,但必须保留原作者(Ailrid)的署名并提供本书链接。
- 非商业性使用:您不得将本书内容或其衍生作品用于任何商业目的(如付费课程、出版获利、商业 AI 训练)。
- 相同方式共享:如果您对本书进行了修改、转换或二次创作,您必须使用相同的许可协议分发您的贡献。
Caution
本书部分图像来自公开网络搜集,无法联系作者,若侵权请联系进行删除。