用于C++ 2D GameEngine的Chipmunk Physics或Box2D?

Gol*_*les 11 c++ iphone physics game-engine

我正在开发它正在变成一个"跨平台"的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.
Run Code Online (Sandbox Code Playgroud)

当然,如果你发现其他任何事情,我很乐意听到.

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

编辑:我最后写了一篇关于我的特定选择的文章,你可以在这里找到它

spe*_*der 6

我同时使用它们,但是当我可以选择时,我会选择花栗鼠,它有更好的API,并且更容易学习......

但那是因为我学会了它而不需要社区,手册完全没问题.

更新:我目前的游戏是使用Box2D,我希望我使用Chipmunk ...主要是因为Box2D有两个严重的问题,在我的游戏中加剧了:首先,它有一个真正的旧错误,其中对象在角落"躲避" ,我的游戏是一个突破性的游戏,所以当球在墙上"滚动"时,有时会阻碍并从墙上甩开,很多人都会问为什么我的游戏物理看起来"随机".

Box2D的其他问题是它如何存储对象,Chipmunk使用空间哈希,而Box2D使用二叉树,我的游戏在大量物体的水平上有很大的减速,我问Erin(Box2D的作者)的原因,并且他解释说因为Box2D使用二叉树,如果你把对象放在一个网格中(就像我说的那样,我的游戏是一个突破性的克隆!一切都在网格中!)树变得不平衡,Box2D变慢了.我的游戏的解决方案是将一些级别变成"棋盘"模式以避免这个问题.

因此,对于所有基于图块的游戏,我将只使用Chipmunk,Box2D REALLY不适合那些(因为在瓷砖角落bug上的"障碍",以及瓦片网格的减速错误)


ada*_*dam 5

你是对的,花栗鼠已经被开发改进了很多 Box2D 失败的地方。

然而,Box2D 绝对是更成熟的平台,根据我在决定使用哪个引擎时的个人经验,我发现 Box2D 有更大的社区追随者,因此更容易通过示例学习。