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.

当然,如果您注意到其他任何事情,我很想听听。

你认为哪一个更符合我的需求?

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

4

3 回答 3

6

我两个都用,但是当我可以选择时,我会选择花栗鼠,它有更好的 API,而且更容易学习......

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

更新:我目前的游戏正在使用 Box2D,我希望我能使用 Chipmunk... 主要是因为 Box2D 有两个严重的问题,这在我的游戏中更加严重:首先,它有一个非常老的错误,即物体在角落“卡住” ,我的游戏是一个突破游戏,所以当球沿着墙壁“滚动”时,有时它会卡住并从墙壁上甩开,很多人问为什么我的游戏物理看起来“随机”。

Box2D 的其他问题是它如何存储对象,Chipmunk 使用空间散列,而 Box2D 使用二叉树,我的游戏在具有大量对象的关卡中出现了巨大的减速,我问 Erin(Box2D 的作者)原因,他解释说,因为 Box2D 使用二叉树,如果你将对象放在网格中(就像我说的,我的游戏是突破克隆!一切都在网格中!)树变得不平衡,Box2D 变慢。我的游戏的解决方案是将一些关卡做成“棋盘”模式以避免这个问题。

所以,对于所有基于瓷砖的游戏,我只会使用 Chipmunk,Box2D 真的不适合那些(因为瓷砖角落的“障碍”错误,以及瓷砖网格的减速错误)

于 2010-05-04T03:14:07.350 回答
5

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

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

于 2010-04-25T08:50:31.990 回答
4

Chipmunk 是纯 C,而 Box2D 是 C++。Chipmunk还有一组新的Objective-C 绑定,但它们不能免费用于商业用途。

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

归根结底,据我所知,他们俩都很棒。如果您更喜欢 C++ 而不是 C 或需要连续的碰撞检测,您可能应该选择 Box2D。

如果您更愿意使用纯 C 库,请使用 Chipmunk。

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

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

于 2011-08-29T22:53:47.313 回答