2010-04-25 5 views
11

Je développe ce qu'il est en train de devenir un moteur de jeu 2D «multiplateforme», ma cible initiale est iPhone OS, mais je pourrais passer à Android ou même à une console comme la PSP ou la Nintendo DS, je veux garder mes options s'ouvrent. Mon moteur est développé en C++ et a beaucoup lu sur Box2D et Chipmunk, mais je ne peux toujours pas décider lequel utiliser comme mon middleware de physique.Physique Chipmunk ou Box2D pour C++ 2D GameEngine?

Le tamia semble avoir été conçu pour être intégré facilement et Box2D semble être largement utilisé. Chipmunk est C, et Box2D est C++, mais j'ai entendu dire que les API de Box2D sont bien pires que celles de chipmunk. Pour l'instant, j'utiliserai les fonctions de création de forme de moteur et de détection de collision pour les polygones irréguliers (non concaves).

valeur I:

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

Et bien sûr, si vous remarquez quoi que ce soit d'autre, j'aimerais entendre.

Laquelle, selon vous, correspondrait le mieux à mes besoins?

EDIT: Je fini par écrire un article au sujet de mon choix particulier, vous pouvez le trouver here

+0

serait intéressé de voir votre produit final si jamais obtenu terminé? – adam

+0

Voter pour fermer trop large/outil rec. –

Répondre

4

Vous avez raison, tamia a été développé améliorer beaucoup des endroits où Box2D tombe vers le bas. Box2D est certainement la plate-forme la plus établie et, d'après mon expérience personnelle au moment de décider du moteur à utiliser, j'ai trouvé que Box2D avait une communauté beaucoup plus large, donc était plus facile à apprendre par l'exemple.

+0

J'ai trouvé par expérience personnelle que le tamia a tendance à être un peu "excentrique". Beaucoup de hacks et tweaks étaient nécessaires pour que je fasse les choses correctement. Bien sûr, la même chose peut arriver si je devais aller à Box2D – eviljack

5

J'utilise les deux, mais quand je peux choisir, je vais pour tamia, il a beaucoup mieux API, et il était beaucoup plus facile à apprendre ...

Mais c'était parce que je l'ai appris, sans besoin d'une communauté , le manuel est complètement bien.

MISE À JOUR: Mon jeu actuel utilise Box2D, et je voudrais utiliser Chipmunk avec lui ... Principalement parce que Box2D a deux problèmes sérieux, qui sont exacerbés sur mon jeu: D'abord, il a un bug VRAI OLD où les objets "dans les virages, mon jeu est un jeu d'évasion, donc quand la balle" roule "le long d'un mur, parfois elle s'accroche et s'éloigne du mur, beaucoup de gens me demandent pourquoi ma physique de jeu semble" aléatoire ". Les autres problèmes que Box2D a, c'est comment il stocke des objets, Chipmunk utilise un hachage spatial, et Box2D utilise un arbre binaire, mon jeu avait des ralentissements MASSIVE dans les niveaux avec beaucoup d'objets, j'ai demandé à Erin (auteur de Box2D La raison, et il a expliqué que parce que Box2D utilise l'arbre binaire, si vous placez des objets dans une grille (comme je l'ai dit, mon jeu est un clone breakout, tout est dans une grille!) l'arbre est déséquilibré et Box2D ralentit. La solution pour mon jeu était de rendre certains niveaux dans un modèle de "damier" pour éviter ce problème.

Ainsi, pour tous les jeux de tuiles, je vais juste utiliser Chipmunk, Box2D est vraiment impropre à ceux (parce que le « accroc » sur bug coin de tuiles, et le bug de ralentissement avec grille de tuiles)

+0

En fait, je ne pense pas avoir besoin d'une communauté est très agréable, j'ai commencé avec Box2d aujourd'hui ... Je vais évaluer moi-même, et coller avec celui que je trouve le meilleur: -), Merci pour le commentaire! – Goles

1

Chipmunk est C droit, tandis que Box2D est C++. Il existe également un nouvel ensemble de Objective-C bindings pour Chipmunk, mais ils ne sont pas libres d'utilisation commerciale.Si je comprends bien, Chipmunk ne prend pas en charge la détection de collisions continues, contrairement à Box2D. Ceci est important pour éviter le "tunneling" (les objets passent légèrement les uns dans les autres lors du déplacement à grande vitesse)

À la fin de la journée, d'après ce que j'entends, ils sont tous les deux géniaux. Si vous préférez C++ à C ou si vous avez besoin d'une détection de collision continue, vous devriez probablement choisir Box2D.

Si vous préférez utiliser une bibliothèque C pure, optez pour Chipmunk.

Personnellement, j'utilise Box2D et mon expérience a été fantastique jusqu'à présent.

En outre, je pense que Box2D a un autre (peut-être plus) ensemble de types communs, de sorte que pourrait être quelque chose à envisager ...