Физика бурундука или Box2D для С++ 2D GameEngine?

Я разрабатываю то, что превращается в "кросс-платформенный" 2D-движок, моей начальной платформой является iPhone OS, но может перейти на Android или даже на какую-то консоль, такую ​​как PSP или Nintendo DS, я хочу сохраните мои параметры.

Мой движок разработан на С++ и много читал о Box2D и Chipmunk, но все же я не могу решить, какой из них использовать в качестве промежуточного ПО для физики.

Похоже, что бурундук был легко внедрен, и Box2D, как представляется, широко используется. Бурундук - C, а Box2D - С++, но я слышал, что API Box2D намного хуже, чем API-интерфейс бурундука.

В настоящее время я буду использовать функции создания формы двигателя и обнаружения конфликтов для нерегулярных многоугольников (не вогнутых).

I значение:

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

И, конечно, если вы заметите что-нибудь еще, я бы хотел это услышать.

Какой из них, по вашему мнению, лучше всего подходит моим потребностям?

EDIT. Я закончил писать статью о моем конкретном выборе, вы можете найти ее здесь

Ответ 1

Вы правы, бурундук был разработан, улучшив многие места, где падает Box2D.

Однако Box2D определенно является более известной платформой и из моего личного опыта при принятии решения о том, какой движок использовать, я обнаружил, что Box2D имеет гораздо более крупное сообщество, поэтому его легче было изучить на примере.

Ответ 2

Я использую и то, и другое, но когда я могу выбирать, я иду на бурундук, у него намного лучший API, и было намного легче узнать...

Но это было потому, что я узнал об этом без необходимости сообщества, руководство полностью прекрасное.

ОБНОВЛЕНИЕ: Моя текущая игра использует Box2D, и я бы хотел, чтобы я использовал Chipmunk с ней... В основном потому, что Box2D имеет две серьезные проблемы, которые усугубляются в моей игре: во-первых, у нее есть ДЕЙСТВИТЕЛЬНО старая ошибка, где объекты "На углах моя игра - прорывная игра, поэтому, когда мяч" катится "по стене, иногда она ломается и отбрасывается со стены, многие спрашивают, почему моя физика игр выглядит" случайной ".

Другие проблемы, которые имеет Box2D, - это то, как он хранит объекты, Chipmunk использует пространственный хеш, а Box2D использует двоичное дерево, в моей игре были MASSIVE замедление уровней с большим количеством объектов, я спросил Эрин (автор Box2D) причина, и он объяснил, что, поскольку Box2D использует двоичное дерево, если вы помещаете объекты в сетку (как я уже сказал, моя игра - клоун прорыва! все в сетке!) дерево становится неуравновешенным, а Box2D замедляется. Решение для моей игры сделало некоторые уровни в шаблоне "шахматной доски", чтобы избежать этой проблемы.

Итак, для всех игр на основе плит, я просто использую Chipmunk, Box2D REALLY не подходит для них (потому что "загвоздка" на ошибке угла плитки и ошибка замедления с сеткой плитки)

Ответ 3

Бурундук прямой C, а Box2D - С++. Существует также новый набор Objective-C привязок для Chipmunk, но они не могут использоваться коммерчески.

Как я понимаю, Chipmunk не поддерживает Continuous Collision Detection, но Box2D делает. Это важно для предотвращения "туннелирования" (объекты, проходящие немного через друг друга при движении на высоких скоростях)

В конце дня, из того, что я слышу, они оба великолепны. Если вы предпочитаете С++ с C или требуется непрерывное обнаружение столкновений, вам, вероятно, следует выбрать Box2D.

Если вы предпочитаете использовать чистую библиотеку C, переходите к Chipmunk.

Я лично использую Box2D, и мой опыт был фантастическим до сих пор.

Кроме того, я думаю, Box2D имеет другой (возможно, большой) набор совлокальных типов, так что это может быть что-то, что нужно рассмотреть...