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


我正在开发它变成一个“跨平台”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.

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

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

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


12300
2018-04-25 04:05


起源

有兴趣看看你的最终产品,如果它完成了吗? - adam
投票结束太宽/工具rec。 - Ciro Santilli 新疆改造中心 六四事件 法轮功


答案:


你是对的,花栗鼠已经开发出来,改善了很多Box2D倒塌的地方。

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


4
2018-04-25 08:50



我从个人经验中发现,花栗鼠往往有点“古怪”。为了让事情正确,我需要大量的黑客和调整。当然,如果我去Box2D,可能会发生同样的情况 - eviljack


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

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

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

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

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


6
2018-05-04 03:14



实际上我认为不需要一个社区是相当不错的,我今天开始使用Box2d ...我将自己评估,并坚持我找到最好的那个:-),感谢您的评论! - Goles


Chipmunk是直的C,而Box2D是C ++。还有一套新的 Objective-C绑定 对于Chipmunk,但他们不能自由使用。

据我了解,Chipmunk不支持连续碰撞检测,但Box2D支持。这对于防止“隧道效应”(物体在高速移动时略微穿过彼此)很重要

在一天结束时,从我听到的情况来看,它们都很棒。如果您更喜欢C ++到C或需要连续碰撞检测,您应该选择Box2D。

如果您更喜欢使用纯C库,请使用Chipmunk。

我个人使用Box2D,到目前为止我的经验非常棒。

另外,我认为Box2D有一组不同的(可能更大的)关节类型,所以可以考虑......


2
2017-08-29 22:53