¿Qué biblioteca de JavaScript Box2D debo usar? [cerrado]

91

Hay algunos puertos diferentes de Box2D para JavaScript. ¿Cuál es el mejor?

  • Box2DJS - "convertido de Box2DFlashAS3_1.4.3.1 de manera automática"

  • Box2Dflash 2.0 portado a JavaScript - "un gran truco desagradable que simplemente funciona"

  • 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 JavaScript de Box2D 2.1a" (agregada el 21 de noviembre de 2011)

  • kripken / box2d.js - "un puerto directo del motor de física 2D Box2D a JavaScript, usando Emscripten" (agregado el 24 de septiembre de 2013)

¿Alguna idea de qué versión usa http://chrome.angrybirds.com/ , si corresponde?

un nerd pagado
fuente
Ni siquiera tiene que ser un puerto Box2D. Por ejemplo, Matter.js y p2.js parecen ser bastante sólidos.
Thomas
@Thomas estoy de acuerdo. Pero mire el momento en que se hizo la pregunta. En ese momento creo que Matter.js y p2.js aún no han salido.
newguy
Probablemente, pero creo que esta pregunta surgió en Google ... no hay problema en tratar de mantener TAN actualizado con consejos útiles para aquellos que vienen después de ti :)
Thomas

Respuestas:

87

¡Nota para los lectores!

Esta pregunta se hizo y respondió originalmente en 2011, ¡pero haré todo lo posible para mantenerla actualizada!

Esto es lo que encontré:

  • kripken / box2d.js es un puerto de Box2D que usa Emscripten y funciona bien y es rápido. He utilizado esto 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" [1]
  • Box2DJS "no está actualizado y tienes que importar una gran cantidad de archivos JavaScript en cada proyecto" [2]
  • box2dweb está contenido 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 presentar nuevos problemas [4] .
  • Box2DJS depende de Prototype pero box2dweb no [5]
  • Seth Ladd ha promocionado box2dweb con ejemplos en su blog [6]
  • Nadie parece estar usando la tercera alternativa.
  • También hay simuladores de física que no se basan en Box2D. Echa un vistazo a Matter.js y p2.js

También hay una discusión similar en gamedev.stackexchange.com .

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

un nerd pagado
fuente
box2d no está tan actualizado como box2dweb. faltan muchas clases principales en el archivo minificado.
dopatraman
1
Personalmente utilicé box2dJS en un proyecto para portar mi juego box2D de iOS existente. Lo que encontré con la diferencia de versión es que algunos códigos de iOS funcionan no funcionan en la versión JS y el desarrollo se detiene. Después de eso, usé media semana para cambiar todo el código a box2dweb y todo funciona bien como mi juego box2d de iOS. Entonces, la diferencia de versión importa mucho.
Makzan
el puerto de emscripten es bastante bueno, pero la última vez que lo usé encontré que tenía errores (incluidas las congelaciones aleatorias) y era muy difícil de depurar, debido a la naturaleza de emscripten.
bunnyhero
2
@aPaidNerd, ¿esto todavía está actualizado?
Ken
2
Recientemente se lanzó un nuevo motor de física JS portado por Box2d llamado planck, compruébelo: github.com/shakiba/planck.js
newguy
13

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

Nelson
fuente
Gracias @Nelson, lo agregué a la pregunta
un nerd pagado
No utilicé ninguna de estas bibliotecas, pero box2d.js y "fun with VTables" no suenan bien.
cubuspl42
8

LiquidFun (con enlaces JS)

LiquidFun es, en el momento en que publico esto, el puerto más reciente para JS. Tiene todas las características de Box2D y características de física líquida. Está portado usando emscripten, por lo que el rendimiento es decente.

google / liquidfun

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

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

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

JSBox2D parece un buen comienzo.

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

zoosrc
fuente
1
¿Cómo te ha funcionado Matter.js?
David Y. Stephenson
0

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

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

Box2DWeb se genera automáticamente a partir de Box2DFlash utilizando un compilador. Entonces la API es la misma.

Dudo que Box2DWeb reciba alguna actualización en el futuro ya que Box2DFlash ya no ha mostrado actividades. Puede ver la lógica del autor sobre por qué decidió no escribir un puerto Box2D -> Box2DWeb directo.

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

Vennsoh
fuente
El próximo contendiente para Box2D hasta ahora es PhysicsJS. wellcaffeinated.net/PhysicsJS/ (my 2cents)
Vennsoh
Google lanzó un complemento, LiquidFun (Go google) durante I / O 2014. Necesitará Box2D v2.3 para usarlo. Es bastante asombroso.
Vennsoh