我正在开发它变成一个“跨平台”2D游戏引擎,我的初始平台目标是iPhone OS,但可以转移到Android甚至某些控制台,如PSP,或任天堂DS,我想保持我的选择。
我的引擎是用C ++开发的,并且已经阅读了很多关于Box2D和Chipmunk的内容,但我还是无法决定使用哪个作为我的物理中间件。
Chipmunk似乎很容易嵌入,Box2D似乎被广泛使用。 Chipmunk是C,而Box2D是C ++,但我听说Box2D的API比chipmunk的API差得多。
目前我将使用不规则多边形(非凹面)的引擎形状创建和碰撞检测功能。
我重视:
1) Good API's
2) Easy to integrate.
3) Portability.
当然,如果您发现其他任何事情,我很乐意听到它。
您认为哪一种更适合我的需求?
编辑:我最后写了一篇关于我的特定选择的文章,你可以找到它here
答案 0 :(得分:6)
我使用两者,但是当我可以选择时,我会选择花栗鼠,它有更好的API,并且更容易学习......
但那是因为我学会了它而不需要社区,手册完全没问题。
更新:我目前的游戏正在使用Box2D,我希望我用它来使用Chipmunk ...主要是因为Box2D有两个严重的问题,在我的游戏中加剧了:首先,它有一个真正的旧bug,其中的对象“阻碍“在角落里,我的比赛是一场突破性的比赛,所以当球在墙上”滚动“时,有时它会扯开并被扔离墙壁,很多人都会问为什么我的游戏物理看起来是”随机的“。
Box2D的其他问题是它如何存储对象,Chipmunk使用空间哈希,Box2D使用二叉树,我的游戏在大量物体的水平上有大量减速,我问Erin(Box2D的作者)原因,他解释说因为Box2D使用二叉树,如果你把对象放在一个网格中(就像我说的那样,我的游戏是一个突破性的克隆!一切都在网格中!)树变得不平衡,Box2D变慢了。我的游戏的解决方案是将一些级别变成“棋盘”模式以避免这个问题。
所以,对于所有基于平铺的游戏,我将只使用Chipmunk,Box2D REALLY不适合那些(因为在瓷砖角落上的“障碍”,以及瓦片网格的减速错误)
答案 1 :(得分:4)
你是对的,花栗鼠已经开发出来,改善了很多Box2D倒塌的地方。
然而,Box2D绝对是更成熟的平台,根据我个人的经验,在决定使用哪种引擎时,我发现Box2D有一个更大的社区跟随,所以通过示例更容易学习。
答案 2 :(得分:2)
Chipmunk是直的C,而Box2D是C ++。还有一套新的Objective-C bindings用于Chipmunk,但它们不能自由使用。
据我了解,Chipmunk不支持连续碰撞检测,但Box2D支持。这对于防止“隧道效应”(物体在高速移动时略微穿过彼此)非常重要。
在一天结束时,从我听到的情况来看,他们都很棒。如果您更喜欢C ++到C或需要连续碰撞检测,您应该选择Box2D。
如果您更愿意使用纯C库,请使用Chipmunk。
我个人使用Box2D,到目前为止我的经验非常棒。
另外,我认为Box2D有一组不同的(可能更大的)关节类型,所以可以考虑......