繁体   English   中英

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

[英]Chipmunk Physics or Box2D for C++ 2D GameEngine?

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

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

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

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

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

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

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

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

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

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

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

Chipmunk是直的C,而Box2D是C ++。 Chipmunk还有一套新的Objective-C绑定 ,但它们不能免费使用。

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM