2010-04-25 15 views
11

Estoy desarrollando lo que se está convirtiendo en un motor de juego 2D "multiplataforma", mi objetivo inicial de la plataforma es iPhone OS, pero podría pasar a Android o incluso una consola como la PSP o Nintendo DS, quiero mantener mis opciones se abrenChipmunk Physics o Box2D para C++ 2D Game Engine?

Mi motor está desarrollado en C++, y he estado leyendo mucho sobre Box2D y Chipmunk pero todavía no puedo decidir cuál usar como mi Physics Middleware.

Chipmunk parece haber sido hecho para ser incrustado fácilmente, y Box2D parece ser ampliamente utilizado. Chipmunk es C, y Box2D es C++, pero he escuchado que las API de Box2D son mucho peores que las API de chipmunk.

Por ahora utilizaré la creación de formas del motor y las características de detección de colisiones para polígonos irregulares (no cóncavos).

valor I:

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

Y, por supuesto, si se observa cualquier otra cosa, me gustaría escucharlo.

¿Cuál crees que se ajuste mejor a mis necesidades?

EDITAR: Terminé de escribir un artículo acerca de mi elección particular, se puede encontrar here

+0

habría interesado en ver su producto final si alguna vez se terminó? – adam

+0

Votación para cerrar como demasiado amplia/herramienta rec. –

Respuesta

4

Tiene usted razón, ardilla se ha desarrollado la mejora de muchos de los lugares donde Box2D cae. No obstante, Box2D es definitivamente la plataforma más establecida y, desde mi experiencia personal al tomar la decisión de qué motor usar, descubrí que Box2D tenía un seguimiento de la comunidad mucho mayor, por lo que era más fácil aprender con el ejemplo.

+0

He descubierto por experiencia personal que la ardilla tiende a ser un poco "peculiar". Se necesitaban muchos ajustes y ajustes para que pudiera hacer las cosas bien. Por supuesto, puede pasar lo mismo si tuviera que ir a Box2D – eviljack

5

utilizo tanto, pero cuando puedo elegir, voy por ardilla, tiene mucho mejor API, y era mucho más fácil de aprender ...

Pero eso era porque lo aprendí y sin necesidad de una comunidad , el manual está completamente bien.

ACTUALIZACIÓN: Mi juego actual es usar Box2D, y me gustaría usar Chipmunk con él ... Sobre todo porque Box2D tiene dos problemas graves, que se agravan en mi juego: Primero, tiene un error REALMENTE VIEJO donde los objetos " engancharse en las esquinas, mi juego es un juego rompedor, así que cuando la bola "rueda" a lo largo de una pared, a veces se engancha y se lanza lejos de la pared, mucha gente me preguntó por qué la física de mi juego se ve "aleatoria".

Los otros problemas que tiene Box2D, es cómo almacenar objetos, Chipmunk utiliza un hash espacial, y Box2D usa un árbol binario, mi juego estaba teniendo desaceleraciones MASIVAS en niveles con muchos objetos, le pregunté a Erin (autor de Box2D) la razón, y explicó que debido a que Box2D usa un árbol binario, si colocas objetos en una grilla (como dije, mi juego es un clon de ruptura, ¡todo está en una grilla!) el árbol se desequilibra y Box2D se ralentiza. La solución para mi juego fue convertir algunos niveles en un patrón de "tablero de ajedrez" para evitar este problema.

Por lo tanto, para todos los juegos basados ​​en baldosas, voy a utilizar Chipmunk, Box2D realmente no es adecuado para aquellos que (debido a que el "gancho" en bug esquina azulejo, y el error de desaceleración con rejilla de baldosa)

+0

. De hecho, creo que no necesito una comunidad, pero comencé con Box2d hoy ... Me evaluaré a mí mismo y me quedaré con la que encuentro mejor: -), ¡gracias por el comentario! – Goles

1

Chipmunk es recta C, mientras que Box2D es C++. También hay un nuevo conjunto de Objective-C bindings para Chipmunk, pero no son de uso comercial.

Según tengo entendido, Chipmunk no admite la Detección de colisión continua, pero Box2D sí. Esto es importante para evitar el "efecto túnel" (objetos que pasan ligeramente entre ellos cuando se mueven a altas velocidades)

Al final del día, por lo que he oído, ambos son geniales. Si prefiere C++ a C o necesita detección de colisión continua, probablemente debería elegir Box2D.

Si prefiere usar una biblioteca C pura, vaya con Chipmunk.

Yo personalmente uso Box2D y mi experiencia ha sido fantástica hasta ahora.

Además, creo que Box2D tiene un conjunto diferente (posiblemente más grande) de tipos de conjuntos, por lo que podría ser algo a considerar ...