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

标签 c++ iphone physics game-engine

我正在开发它正在变成一个“跨平台”2D 游戏引擎,我最初的平台目标是 iPhone 操作系统,但可以转移到 Android 或什至一些控制台,如 PSP 或 Nintendo DS,我想保持我的选择开放。

我的引擎是用 C++ 开发的,并且已经阅读了很多关于 Box2D 和 Chipmunk 的内容,但我仍然无法决定使用哪一个作为我的物理中间件。

Chipmunk 看起来很容易嵌入,而 Box2D 似乎被广泛使用。 Chipmunk 是 C 语言,Box2D 是 C++,但我听说 Box2D 的 API 比 chipmunk 的 API 差很多。

现在我将为不规则多边形(非凹面)使用引擎形状创建和碰撞检测功能。

我的值(value)观:

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

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

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

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

最佳答案

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

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

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

Box2D 的其他问题是它如何存储对象,Chipmunk 使用空间散列,而 Box2D 使用二叉树,我的游戏在包含大量对象的关卡中速度大幅下降,我问 Erin(Box2D 的作者)原因,他解释说因为 Box2D 使用二叉树,如果你把对象放在一个网格中(就像我说的,我的游戏是一个突破性的克隆!一切都在一个网格中!)树变得不平衡,Box2D 变慢了。我的游戏的解决方案是将某些级别设置为“棋盘”模式以避免此问题。

所以,对于所有基于图 block 的游戏,我将只使用 Chipmunk,Box2D 真的不适合那些(因为图 block 角上的“阻碍”错误,以及图 block 网格的减速错误)

关于c++ - 用于 C++ 2D GameEngine 的 Chipmunk Physics 或 Box2D?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2707106/

相关文章:

c++ - 我们可以在 C++14 中省略 std::array 的双括号吗?

c++ - 静态分配的内存在其范围结束后会发生什么?

iphone - 如何绘制相对于设备围绕中心坐标旋转的现实​​世界坐标?

iphone - 单击 DetailDisclosureButton 进行导航?

ios - 理解 SpriteKit 中的重力和向量

javascript - 通过距离和摩擦力计算速度

c++ - 为什么用于打印输入数字分隔符的简单程序停止工作?

c++ - 在共享库中使用重载的new/delete和STL

iphone - 更改后退按钮的标题

python - 用于伊辛模型的 python 中的嵌套循环