Box3D,一个开源 3D 物理引擎
生态与对比
- Box3D 被视为一个罕见的新开源 3D 物理引擎,与 ODE、Bullet、Newton Dynamics、Jolt、PhysX、Havok、Rapier 等并列。
- 几位评论者对稳健性和速度进行了比较:PhysX 被描述为非常稳健且稳定,Havok 略快,但在精度上有不同的取舍。
- Jolt 因其 Web 支持和增量快照功能而受到称赞,这有助于确定性网络代码。
- 由于 Box3D 和 Jolt 都有很强的生产级背景,一些人很期待将两者直接比较。
Box2D 的遗产与演进
- Box2D 被广泛记住为许多 2D 独立游戏、Flash 时代作品以及强化学习基准(例如经典的 Gym 环境)的基础。
- 体验评价不一:很多人觉得它使用愉快、质量很高;也有人认为它在街机式游戏、大型世界或软体/可变形物体方面已经落后。
- 近期用 C 语言重写的版本(Box2D 3.x / Box2C)被认为是重大改进,但在一些人看来,它仍然缺少软体工具链,以及为非真实感平台游戏物理提供的易用“逃生通道”。
确定性与网络
- Box3D 的文档明确表示,它的设计目标是在不同平台和线程数之间保持确定性,并包含录制/回放机制。
- 这被强调为回滚网络代码和网络物理的一大优势,与在 Unity/PhysX 中实现确定性时遇到的困难形成对比。
- 也有人认为,对于范围非常明确、以物理为核心的游戏(例如台球),自己编写定制物理模拟可能仍然更合适。
使用场景、Web 与绑定
- Box3D 的 C API 和小体积二进制被认为非常适合做易用的语言绑定(例如 Odin),也适合编译到 WebAssembly。
- 该讨论串列举了多个 JS/WASM 物理引擎(ammo.js、cannon.js、oimo.js、rapier.js、jolt.js、physx/havok wasm)以及相关封装。
行业背景与 Valve
- 据称 Box3D 源自某个与 Valve 相关的物理引擎分支,类似的优化也出现在 Valve 即将推出的游戏所使用的内部引擎中。
- 据报道,S&box 已从 Source 2 物理切换到 Box3D,这进一步强化了它“已具备生产可用性”的印象。
- 讨论串还带有一些轻松的猜测,围绕未来的 Valve 游戏展开,把这个新引擎当作间接证据。
许可、署名与公平性争论
- 一则关于某个爆款游戏在最初未署名情况下使用 Box2D 的故事,引发了关于开源公平性的长篇争论。
- 一方强调,MIT 风格许可证在法律上只要求署名,不要求付款;另一方则坚持,大型商业受益者在道义上有责任为关键依赖提供资金支持。
- 这进一步引出了更广泛的反思:宽松许可证是否对维护者不够友好,以及双重许可和 copyleft(例如 AGPL)是否是替代方案。
总体情绪与注意事项
- 整体而言,大家对 Box3D 的情绪非常积极:人们称赞其前期工作、代码质量,并期待将它用于引擎、网页游戏和 VR 项目。
- 与此同时,评论者也提醒,刚体物理本身仍然是一个困难领域,在碰撞处理和求解器调优方面存在许多开放问题,而且没有任何单一引擎能满足所有游戏玩法需求。