2011-10-02 10 views
78

Hay algunos puertos diferentes de Box2D para JavaScript. ¿Cuál es el mejor?¿Qué biblioteca de JavaScript de Box2D debería usar?

  • Box2DJS - "convertidos a partir Box2DFlashAS3_1.4.3.1 de una manera automática"

  • Box2Dflash 2.0 ported to JavaScript - "un gran truco desagradable que sólo pasa a trabajar"

  • box2dweb - "un puerto de Box2DFlash 2.1a a JavaScript. Desarrollé un convertidor de ActionScript 3-a-JavaScript para generar el código "

  • HBehrens/box2d.js - "una versión de JavaScript Box2D 2.1a"(añadido Nov 21 de, 2011)

  • kripken/box2d.js -" un puerto directo del motor de física Box2D 2D a JavaScript, utilizando emscripten "(Agregado 24 Sep, 2013)

¿alguna idea de qué versión http://chrome.angrybirds.com/ usos, si las hay?

+0

ni siquiera tiene por qué ser un puerto Box2D. Por ejemplo, [Matter.js] (http://brm.io/matter-js/) y [p2.js] (https://github.com/schteppe/p2.js) ambos parecen ser bastante sólidos. – Thomas

+0

@Thomas Estoy de acuerdo. Pero mira la hora en que se hizo la pregunta. En ese momento creo que Matter.js y p2.js aún no han salido. – newguy

+0

Probablemente, pero creo que esta pregunta surgió en Google ...no hay problema tratando de mantener SO actualizado con indicadores útiles para aquellos que vienen después de ti :) – Thomas

Respuesta

71

¡Tenga en cuenta a los lectores!

Esta pregunta fue formulada y respondida originalmente en 2011, pero haré todo lo posible para mantenerla actualizada.

Esto es lo que he encontrado:

  • kripken/box2d.js es un puerto de Box2D usando emscripten y funciona bien y es rápido. Lo he usado personalmente con gran éxito.
  • planck.js es el puerto más nuevo y está escrito desde cero en JavaScript
  • Box2DJS es un puerto de Box2DFlash 1.4.3.1. box2dweb es un puerto de la versión 2.1a.
  • Box2DJS funciona "como un módulo CommonJS sin ninguna modificación en absoluto" [1]
  • Box2DJS "no está actualizada, y que tiene que importar una gran cantidad de archivos JavaScript en cada proyecto" está contenida [2]
  • box2dweb en un solo archivo [2]
  • box2dweb es "un puerto mucho más nuevo y tiene muchos menos problemas" que Box2DJS [3]. Sin embargo, el cambio podría introducir nuevos problemas [4].
  • Box2DJS depende de prototipo, pero no box2dweb [5]
  • Seth Ladd ha promovido box2dweb con ejemplos en su blog [6]
  • Nadie parece estar usando la tercera alternativa.
  • También hay simuladores de física no basados ​​en Box2D. Salida Matter.js y p2.js

También hay a similar discussion on gamedev.stackexchange.com.

Yo diría que el ganador es kripken/box2d.js.

+0

box2d no está tan actualizado como box2dweb. muchas clases principales faltan en el archivo minificado. – dopatraman

+1

Personalmente utilicé box2dJS en un proyecto portando mi juego iOS box2D existente. Lo que encontré con la diferencia de versión es que algún código de iOS funciona no funciona en la versión JS y el revelador se detiene. Después de eso, utilicé media semana para cambiar todo el código a box2dweb y todo funciona bien igual que mi juego iOS box2d. Entonces, la diferencia de versión importa mucho. – Makzan

+0

el puerto emscripten es bastante bueno, pero la última vez que lo usé lo encontré con errores (incluyendo congelaciones aleatorias), y muy difícil de depurar, debido a la naturaleza de emscripten. – bunnyhero

12

Esta pregunta y su mejor respuesta son de 2011. Una nueva opción es box2.js, una traducción Emscripten del código C++ a Javascript. A partir de agosto de 2013 está más actualizado que los otros puertos que he encontrado, y las demostraciones parecen funcionar.

+0

Gracias @Nelson, lo agregué a la pregunta –

+0

No utilicé ningún de estas librerías, pero box2d.js y "fun with VTables" no suenan bien. – cubuspl42

6

Probablemente el mejor lugar para mantenerse al día con los puertos Box2D JavaScript es el foro oficial: http://box2d.org/forum/viewforum.php?f=22

JSBox2D parece un buen comienzo.

Definitivamente echaré un vistazo a Matter.js, que parece muy bien construido y muy rápido. Voy por este camino. http://brm.io/matter-js

+1

¿Cómo ha funcionado Matter.js para usted? –

0

Box2DWeb es compatible con la mayor parte de la API del C++ Box2D original, excepto las formas de cadena. :/

Es el Javascript más utilizado Box2D. Si necesita la documentación de API para Box2DWeb, consulte Box2DFlash. http://www.box2dflash.org/docs/2.1a/reference/

Box2DWeb se genera automáticamente desde Box2DFlash usando un compilador. Entonces la API es la misma.

Dudo que Box2DWeb reciba más actualizaciones en el futuro ya que Box2DFlash ya no muestra ninguna actividad. Puede ver la racionalidad del autor sobre por qué decidió no escribir un puerto directo Box2D -> Box2DWeb.

https://code.google.com/p/box2dweb/wiki/Roadmap

+0

El siguiente contendiente para Box2D hasta el momento es PhysicsJS. wellcaffeinated.net/PhysicsJS/ (my 2cents) – Vennsoh

+0

Google lanzó un complemento, LiquidFun (Go Google) durante I/O 2014. Necesitará Box2D v2.3 para usarlo. Es bastante impresionante. – Vennsoh

7

LiquidFun (Con JS Vinculaciones)

LiquidFun está, en el momento que lo pongo esto, el más reciente puerto de JS. Tiene todas las características de Box2D y características físicas líquidas. Se transporta utilizando emscripten, por lo que el rendimiento es decente.

google/liquidfun

google/liquidfun/tree/master/liquidfun/Box2D/lfjs

+0

Hace poco me encontré con esto y parece ideal para simular el agua que fluye a través de tuberías en tanques y válvulas, etc. sería una buena solución para un proyecto que estoy viendo. ¿Hay algún tutorial, especialmente cómo obtener realmente la biblioteca en mi javascript? La documentación parece un poco escasa –

Cuestiones relacionadas