Box3D:Box2D 作者 Erin Catto 出山,开源 3D 物理引擎

开源
游戏开发
物理引擎
C
Box2D
2026/9/29
·

阅读时间: 大约 7 分钟

Box3D:Box2D 作者 Erin Catto 出山,开源 3D 物理引擎

Box3D 官方公告列出的特性清单:C17/C API、子步进求解器、连续碰撞、宽 SIMD 接触求解、跨平台确定性、录制回放等

2026 年 6 月 30 日,Box2D 的作者 Erin Catto 宣布开源 Box3D——一个 3D 物理引擎,现已上架 GitHub。Box2D 在过去近二十年里几乎是 2D 游戏物理的事实标准,Catto 的个人口碑让 Box3D 还没发布就自带信任度。本文基于其官方公告,梳理这个引擎从哪来、能做什么、现在成熟度如何。

一、它从哪来:Rubikon-Lite 嫁接 Box2D v3

Catto 说得很直白:你可以把 Box3D 看作 Box2D 的一个 fork,扩展了 3D 游戏需要的能力。核心架构几乎与 Box2D 一致。新增的 3D 相关能力包括三角网格碰撞、高度场碰撞、以及”烘焙过的复合碰撞”(baked compound collision)。

它的身世很有意思。Catto 自 2022 年起在 Kintsugiyama 做一款名为 The Legend of California 的生存游戏,基于虚幻引擎。原生 Chaos 物理让他很头疼:不支持陀螺力矩(gyroscopic torque),细长出射体转起来会一直转;更糟的是砍倒的大树会”瞬移”——他判断 Chaos 在大胶囊砸平滑三角网格时用了某种连续碰撞回退,本应是简单场景却行为异常。加上游戏服务器上有数十万个实体,需要一个快速 broad-phase。

朋友 Dirk Gregorius(《半条命:爱莉克斯》物理引擎 Rubikon 的作者)建议他 fork 自己的业余版 Rubikon-Lite。Catto 照做并接进虚幻,陀螺力矩和树木下落都正常了。之后,他把 Box2D v3.0 的大量优化搬进来——由于 2D/3D 的数据结构对空间维度基本不敏感,最终他几乎用 Box2D 的 API、数据结构和算法替换了 Rubikon-Lite。如今 Box3D 里只剩凸包生成和部分碰撞算法还留着 Rubikon-Lite 的代码,其余是 Box2D 代码和他为 3D 新写的代码。

二、技术特性

按官方公告(见上图),Box3D 是纯 C17、对外提供 C API,关键能力包括:

  • 子步进求解器(sub-stepping solver);
  • 连续碰撞检测(CCD);
  • **大图着色(graph coloring)**处理大型孤岛(island);
  • 宽 SIMD 接触求解器;
  • 多线程钩子与可选内置调度器;
  • 大世界支持:位置用 double 浮点;
  • 跨平台确定性(determinism);
  • 录制与回放(recording and replay)。

游戏向的工程优化也来自真实需求:为倒下的红杉砸向体素地形专门调过网格碰撞与 CCD;体素系统运行时用 median split 快速构建碰撞网格;针对”一个要塞约 5 万个独立碰撞网格”的流式加载,做了复合碰撞系统——把上千个碰撞形状烘焙成一个 uber shape,省掉逐个体创建 body/shape 的开销。

三、谁在用,成熟度如何

公告时点已有的采用方:Catto 自己的 The Legend of California、Facepunch Studios 的游戏平台 s&box、Bobby Anguelov 主导的开源引擎 Esoterica,以及 Glenn Fiedler 的一款千人太空多人游戏。

但 Catto 自己的定性很关键:尽管已有几款游戏在用,他仍把 Box3D 视为 alpha 软件。即将打 v0.1,再走向 v1.0;还需要更多测试与文档。后续计划包括角色移动、ghost 碰撞缓解、优化、关节求解器改进。与 Box2D 不同,他预计未来会开放 PR(可能配 CLA)。他承诺会无限期维护,但成熟后可能暂停新特性开发。

四、口径与局限

  1. alpha 阶段,别上生产核心:作者自述需要更多测试与完整文档,v0.1 才刚要打——公告里的特性清单不等于生产就绪。
  2. 有 Rubikon-Lite 的血统:凸包生成与部分碰撞算法仍来自 Valve 的业余版,虽经 Box2D 重写大部分,但边界 case 的成熟度需要社区打磨。
  3. “不是来竞争的”:Catto 明说”开源对我不是生意,我做 Box2D/Box3D 是因为热爱游戏物理”——这既是优点(无商业绑架),也意味着资源投入取决于他个人与 Kintsugiyama 的支持。
  4. 生态位竞争已在:开源 3D 物理领域 Jolt 刚凭与 Godot 的整合站稳脚跟(Koala 点评也指出这点),Box3D 入场会让这个长期被商业引擎(Havok、PhysX)主导的领域更热闹,但短期内迁移成本与文档完备度是门槛。
  5. 无独立站点/Discord:更新都在 box2d.org 博客和 Box2D Discord 里,新人要自己找路。

五、客观分析:价值与谁该关注

价值:Box2D 十余年沉淀的求解器设计、C17 可移植代码、跨平台确定性、录制回放,加上 SIMD 与多线程——对想要一个不绑定商业引擎、可自托管、API 干净的 3D 物理库的团队,这是重量级新选项;且作者承诺长期维护。

局限:alpha 阶段、文档未完成、3D 生态相对 Jolt/Havok 还很年轻;特性广度(软体、车辆、角色控制器)仍在补齐。

适合谁:喜欢 Box2D 设计哲学、需要 C API、跨平台确定性、想把物理引擎自托管进自研 ECS 的游戏/引擎开发者;建议先关注 v0.1→v1.0 的成熟过程,在新项目里小范围试用。

参考来源