文章摘要
Box3D是一款开源3D物理引擎,现已发布在GitHub上。它基于Box2D扩展,增加了三角网格碰撞、高度场碰撞等3D游戏所需功能,核心架构与Box2D几乎相同,支持C API、连续碰撞、多线程等特性。
文章总结
Box3D是一款开源3D物理引擎,现已发布在GitHub上。它可视为Box2D的扩展版本,新增了三角形网格碰撞、高度场碰撞和烘焙复合碰撞等3D游戏所需功能。其核心架构与Box2D几乎一致,包括C语言API、C17标准源码、子步求解器、连续碰撞、图着色、SIMD接触求解器、多线程支持、可选内部调度器、双精度大世界支持以及记录回放功能。
Box3D的诞生主要有两个原因。首先,作者在Kintsugiyama工作室开发的游戏《The Legend of California》需要它。该游戏使用Unreal引擎,但原生物理引擎Chaos存在无法模拟陀螺力矩、树木掉落时运动异常等问题。作者曾考虑使用Jolt等现有引擎,但朋友Dirk Gregorius建议他分支Rubikon-Lite引擎。作者将Rubikon-Lite接入Unreal后效果良好,随后逐步将其API、数据结构和算法替换为Box2D代码,最终演变为Box3D。目前Box3D仍保留部分Rubikon-Lite的凸包生成和碰撞算法代码。定制物理引擎能更好地满足游戏需求,如优化红杉树掉落、快速构建体素碰撞网格、以及通过复合碰撞系统高效加载大量碰撞网格。
其次,作者希望延续知识积累。自2004年起,他每次更换工作都会失去之前的物理引擎成果,Box2D正是为此而生。如今Kintsugiyama工作室允许他将Box3D开源并作为日常工作的一部分,这使其能够持续维护。
Box3D适合喜欢Box2D设计理念的用户。它已应用于《The Legend of California》、s&box游戏平台、Esoterica开源引擎和一款千人太空游戏。目前仍处于alpha阶段,计划发布v0.1版本,未来将完善角色移动、幽灵碰撞优化、求解器改进等功能。作者将长期支持Box3D,但成熟后可能减少功能开发,并接受社区贡献。用户可通过GitHub和Patreon赞助支持。
评论总结
根据评论内容,总结如下:
主要观点与论据:
对Box3D的期待与比较(多数评论持积极态度)
- 评论1(HexDecOctBin)好奇Box3D与Jolt(Valve/Erin Catto)及Horizon游戏所用引擎的对比。
- 评论6(tancop)指出开源3D物理引擎从Bullet扩展到Jolt、Rapier、Avian、PhysX,现在又有了Box3D,丰富了选择。
- 评论13(utopiah)询问Box3D与Rapier(及Cannon、Ammo)的对比,并分享自己制作简易物理引擎的学习体验。
对Box2D的怀旧与认可(多位评论者提及)
- 评论2(RobLach)认为Box2D是许多物理向独立游戏的基础,好奇当前市场是否还有空间让Box3D复兴。
- 评论5(alex_suzuki)回忆用Box2D从Python实现自然运动(如雨打浮萍),体验愉快,期待Box3D。
- 评论14(MomsAVoxell)称Box2D是顶尖开源项目之一,并期待基于Box3D的Spectre VR。
技术细节与生态关注(部分评论涉及)
- 评论4(nasso_dev)注意到Valve的Rubikon引擎持续演进,Dirk在Ragnarok引擎中开发了类似Box3D的优化。
- 评论11(LoganDark)提到s&box游戏因替换Source 2物理引擎而采用Box3D,并赞赏其开源。
- 评论9(999900000999)表示不会直接使用Box3D(因不喜底层编程),但期待上层抽象层。
对演示与性能的反馈(少量评论)
- 评论7(dude250711)讽刺Unreal Engine的Chaos物理引擎“名不副实”(基于视频表现)。
- 评论14(MomsAVoxell)称赞《Legend of California》演示中录制回放功能令人惊艳。
平衡性说明: 评论整体对Box3D持积极期待,但存在对比需求(如与Jolt、Rapier)和生态适配的顾虑。负面评价较少,仅评论7对Chaos引擎有批评,评论9表达对底层编程的回避。
关键引用(保留中英文): - “I do wonder how it compares against Jolt.”(评论1) - “Box2D was a foundation for a lot of interesting physics oriented indie games.”(评论2) - “I love that we went from bullet being the only real option for open source 3D physics to jolt, rapier, avian, nvidia physx and now box3d.”(评论6) - “I’m a bit familiar with Rapier... how does it compare?”(评论13)