【问题标题】:Chipmunk Physics or Box2D for C++ 2D GameEngine?C++ 2D 游戏引擎的 Chipmunk Physics 或 Box2D?
【发布时间】:2010-04-25 04:05:39
【问题描述】:

我正在开发将其转变为“跨平台”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.

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

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

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

【问题讨论】:

  • 如果你的最终产品完成了,你会感兴趣吗?
  • 投票结束,因为范围太广/工具推荐。
  • @Goles 我无法访问该站点。

标签: c++ iphone physics game-engine


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 其实我觉得不需要社区很好,我今天开始使用 Box2d...我会评估自己,并坚持我认为最好的 :-),谢谢你的评论!
【解决方案2】:

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

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

【讨论】:

  • 我从个人经验中发现,花栗鼠往往有点“古怪”。我需要进行大量的修改和调整才能把事情做好。当然如果我去 Box2D 也可能发生同样的情况
【解决方案3】:

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

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

在一天结束时,据我所知,他们都很棒。如果你更喜欢 C++ 而不是 C 或者需要连续的碰撞检测,你应该选择 Box2D。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    相关资源
    最近更新 更多