2010-04-25 16 views
11

Sto sviluppando quello che sta trasformando in un motore di gioco 2D "multipiattaforma", il mio obiettivo iniziale della piattaforma è iPhone OS, ma potrei passare ad Android o anche ad alcune console come la PSP, o Nintendo DS, voglio mantenere le mie opzioni si apronoChipmunk Physics o Box2D per C++ 2D GameEngine?

Il mio motore è sviluppato in C++, e ho letto molto su Box2D e Chipmunk, ma ancora non riesco a decidere quale utilizzare come mio middleware fisico.

Sembra che il chipmunk sia stato creato per essere incorporato facilmente e Box2D sembra essere ampiamente utilizzato. Chipmunk è C, e Box2D è C++, ma ho sentito che le API di Box2D sono molto peggio delle API di chipmunk.

Per ora userò le funzioni di creazione della forma del motore e di rilevamento delle collisioni per poligoni irregolari (non concavi).

valore I:

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

E, naturalmente, se si nota qualsiasi altra cosa, mi piacerebbe sentire.

Quale pensi che si adatti meglio alle mie esigenze?

EDIT: ho finito per scrivere un articolo sul mio scelta particolare, lo si può trovare here

+0

sarebbe interessato a vedere il prodotto finale se mai ottenuto finito? – adam

+0

Voting per chiudere come troppo largo/strumento rec. –

risposta

4

Hai ragione, chipmunk è stato sviluppato migliorare un sacco di luoghi dove Box2D cade.

Tuttavia, Box2D è sicuramente la piattaforma più consolidata e dalla mia esperienza personale quando ho preso la decisione su quale motore utilizzare, ho scoperto che Box2D aveva una community molto più ampia in seguito, quindi era più facile imparare dall'esempio.

+0

Ho trovato per esperienza personale che il chipmunk tende ad essere un po '"eccentrico". Mi servivano un sacco di hack e ritocchi per sistemare le cose. Ovviamente lo stesso potrebbe accadere se dovessi andare a Box2D – eviljack

5

Io uso sia, ma quando posso scegliere, vado per chipmunk, ha molto meglio API, ed era molto più facile da imparare ...

ma che è stato perché ho imparato che, senza necessità di una comunità , il manuale è perfettamente a posto.

AGGIORNAMENTO: Il mio gioco corrente utilizza Box2D, e vorrei usare Chipmunk con esso ... Principalmente perché Box2D ha due problemi gravi, che sono esacerbati nel mio gioco: in primo luogo, ha un bug DAVVERO VECCHIO dove gli oggetti " "negli angoli, il mio gioco è un gioco di breakout, quindi quando la palla si sta" rotolando "lungo un muro, a volte si blocca e viene gettata via dal muro, molte persone chiedono perché la fisica del mio gioco sembra" casuale ".

Gli altri problemi che Box2D ha, è come immagazzina gli oggetti, Chipmunk usa un hash spaziale, e Box2D usa un albero binario, il mio gioco stava avendo MASSIVE rallentamenti nei livelli con molti oggetti, ho chiesto a Erin (autore di Box2D) la ragione, e ha spiegato che poiché Box2D usa l'albero binario, se metti gli oggetti in una griglia (come ho detto, il mio gioco è un clone di breakout! tutto è in una griglia!) l'albero si sbilancia e Box2D rallenta. La soluzione per il mio gioco era fare alcuni livelli in uno schema a scacchiera per evitare questo problema.

Quindi, per tutti i giochi tile-based, mi limito a usare Chipmunk, Box2D davvero non è adatto per coloro che (a causa della "intoppo" su angolo piastrelle bug, e il bug rallentamento con griglia mattonelle)

+0

In realtà penso che non sia necessaria una community è abbastanza bello, ho iniziato con Box2d oggi ... valuterò entrambi, e manterrò quello che trovo il migliore: -), grazie per il commento! – Goles

1

Chipmunk è dritto C, mentre Box2D è C++. C'è anche un nuovo set di Objective-C bindings per Chipmunk, ma non sono liberi di usare commercialmente.

Come ho capito, Chipmunk non supporta il rilevamento collisione continua, ma Box2D lo fa. Questo è importante per prevenire il "tunneling" (oggetti che passano leggermente attraverso l'altro quando si spostano ad alte velocità)

Alla fine della giornata, da quello che ho sentito, sono entrambi fantastici. Se preferisci C++ a C o hai bisogno di un rilevamento continuo delle collisioni, dovresti probabilmente scegliere Box2D.

Se preferisci usare una libreria C pura, vai con Chipmunk.

Personalmente uso Box2D e la mia esperienza è stata fantastica finora.

Inoltre, penso che Box2D ha una (possibilmente più grande) diverso insieme di tipi di giunti, in modo che potrebbe essere qualcosa da prendere in considerazione ...