Chipmunk Physics还是Box2D适用于C++ 2D游戏引擎?

12

我正在开发一个“跨平台”的2D游戏引擎,我的初始目标平台是iPhone OS,但可以转移到Android甚至像PSP或Nintendo DS这样的某些控制台,我想保持我的选择。

我的引擎是用C++开发的,已经阅读了很多关于Box2D和Chipmunk的文章,但我仍然不能决定使用哪个作为我的物理中间件。

Chipmunk似乎被设计成易于嵌入,而Box2D似乎被广泛使用。 Chipmunk是C,而Box2D是C ++,但我听说Box2D的API比Chipmunk的API糟糕得多。

现在,我将使用引擎形状创建和碰撞检测功能来处理不规则多边形(不凸)。

我重视:

1) Good API's
2) Easy to integrate.
3) Portability.

如果您注意到任何其他问题,我很乐意听取您的意见。

您认为哪个更适合我的需求?

编辑:最终我写了一篇关于我的选择的文章,您可以在这里找到它。


1
如果你最终完成了产品的话,我会很有兴趣看一下。 - adam
投票关闭,因为问题过于宽泛/工具推荐。 - Ciro Santilli OurBigBook.com
@Goles 我无法访问该网站。 - Ekrem Dinçel
3个回答

6

我两个都用过,但是当我可以选择时,我会选择Chipmunk,它有更好的API,并且更容易学习…

但这是因为我在不需要社区的情况下学习了它,手册完全没问题。

更新:我的当前游戏正在使用Box2D,我希望我能够将之与Chipmunk一起使用…主要是因为Box2D存在两个严重问题,这在我的游戏中更加恶化:首先,它有一个非常老的Bug,物体会“卡住”在角落处,我的游戏是一个打砖块游戏,所以当球在沿墙“滚动”时,有时会被卡住并从墙上弹开,很多人问我为什么我的游戏物理看起来“随机”。

Box2D还有另一个问题,就是它存储对象的方式,Chipmunk使用空间哈希,而Box2D使用二叉树,我的游戏在有大量物体的关卡中出现了巨大的减速,我问Erin(Box2D的作者)原因,他解释说,因为Box2D使用二叉树,如果你把物体放在网格中(就像我说的,我的游戏是一个打砖块克隆游戏!一切都在网格中!),那么树就会失去平衡,Box2D就会减速。我的游戏的解决方法是将一些关卡制作成“棋盘”图案,以避免这个问题。

因此,对于所有基于瓦片的游戏,我将只使用Chipmunk,Box2D真的不适合这些游戏(因为“卡住”瓦片角落的Bug和与瓦片网格减速的Bug)


其实我认为不需要社区也挺好的,今天我开始接触Box2d了... 我会自己评估并选择最好的那个 :-),感谢您的评论! - Goles

6

你说得对,chipmunk已经发展了很多Box2D表现不佳的方面。

然而,Box2D无疑是更成熟的平台。从我的个人经验来看,在决定使用哪个引擎时,我发现Box2D有一个更庞大的社区追随者,所以更容易通过示例进行学习。


我从个人经验中发现,花栗鼠引擎有点“古怪”。我需要进行大量的黑客和调整才能使事情正确。当然,如果我使用Box2D也可能会出现同样的情况。 - eviljack

4
Chipmunk是直接使用C语言编写的,而Box2D则使用C++。同时,Chipmunk还有一套新的Objective-C绑定,但商业使用需要付费。
据我所知,Chipmunk不支持连续碰撞检测,而Box2D支持。这对于防止“隧道效应”(物体在高速移动时略微穿过彼此)非常重要。
总的来说,从我听到的信息来看,它们都很棒。如果你更喜欢C++而不是C,或者需要连续碰撞检测,那么你应该选择Box2D。
如果你想使用一个纯C库,那就选择Chipmunk。
我个人使用Box2D,迄今为止我的经验非常好。
另外,我认为Box2D有一组不同(可能更大)的关节类型,这也是需要考虑的因素...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接