Qual biblioteca JavaScript Box2D devo usar? [fechadas]

89

Existem algumas portas diferentes do Box2D para JavaScript. Qual é o melhor?

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

  • Box2Dflash 2.0 portado para JavaScript - "um grande hack desagradável que simplesmente funciona"

  • box2dweb - "uma porta de Box2DFlash 2.1a para JavaScript. Desenvolvi um conversor ActionScript 3 -to- JavaScript para gerar o código"

  • HBehrens / box2d.js - "uma versão JavaScript do Box2D 2.1a" (adicionado em 21 de novembro de 2011)

  • kripken / box2d.js - "uma porta direta do motor de física Box2D 2D para JavaScript, usando Emscripten" (adicionado em 24 de setembro de 2013)

Alguma ideia de qual versão http://chrome.angrybirds.com/ usa, se houver?

um nerd pago
fonte
Nem precisa ser uma porta Box2D. Por exemplo, Matter.js e p2.js parecem ser bastante sólidos.
Thomas,
@Thomas eu concordo. Mas olhe para a época em que a pergunta foi feita. Naquela época, acredito que Matter.js e p2.js ainda não tenham sido lançados.
newguy
Provavelmente, mas acho que essa pergunta surgiu no Google ... não custa nada tentar mantê-lo atualizado com dicas úteis para aqueles que vierem depois de você :)
Thomas

Respostas:

85

Nota aos leitores!

Esta pergunta foi feita e respondida originalmente em 2011, mas farei o possível para mantê-la atualizada!

Aqui está o que descobri:

  • kripken / box2d.js é uma porta do Box2D usando Emscripten e funciona bem e é rápido. Usei isso pessoalmente com grande sucesso.
  • planck.js é a porta mais recente e foi escrito desde o início em JavaScript
  • Box2DJS é uma porta do Box2DFlash 1.4.3.1. box2dweb é um porte da versão 2.1a.
  • Box2DJS funciona "como um módulo CommonJS sem nenhuma modificação" [1]
  • Box2DJS "não está atualizado e você tem que importar uma grande quantidade de arquivos JavaScript em cada projeto" [2]
  • box2dweb está contido em um único arquivo [2]
  • box2dweb é "uma porta muito mais recente e tem muito menos problemas" do que Box2DJS [3] . No entanto, a mudança pode introduzir novos problemas [4] .
  • Box2DJS depende do protótipo, mas box2dweb não [5]
  • Seth Ladd promoveu box2dweb com exemplos em seu blog [6]
  • Ninguém parece estar usando a terceira alternativa.
  • Existem também simuladores de física não baseados no Box2D. Confira Matter.js e p2.js

Há também uma discussão semelhante em gamedev.stackexchange.com .

Eu diria que o vencedor é kripken / box2d.js.

um nerd pago
fonte
box2d não está tão atualizado quanto box2dweb. muitas classes principais estão faltando no arquivo reduzido.
dopatraman
1
Eu pessoalmente usei box2dJS em um projeto de portar meu jogo box2D iOS existente. O que descobri com a diferença de versão é que algum código do iOS funciona não funciona na versão JS e no dev halt. Depois disso, usei meia semana para mudar todo o código para box2dweb e tudo funcionou bem como meu jogo box2d para iOS. Portanto, a diferença de versão é muito importante.
Makzan
a porta emscripten é muito legal, mas da última vez que a usei, achei que tinha bugs (incluindo congelamentos aleatórios) e muito difícil de depurar, devido à natureza do emscripten.
coelho herói
2
@aPaidNerd ainda está atualizado?
Ken,
2
Um novo mecanismo de física JS portado para Box2d chamado planck foi lançado recentemente, confira: github.com/shakiba/planck.js
newguy
13

Esta pergunta e sua melhor resposta são de 2011. Uma nova opção recente é box2.js , uma tradução Emscripten do código C ++ para Javascript. Em agosto de 2013, ele está mais atualizado do que as outras portas que encontrei e as demos parecem funcionar.

Nelson
fonte
Obrigado @Nelson, adicionei à pergunta
um nerd pago de
Eu não usei nenhuma dessas libs, mas box2d.js e "diversão com VTables" não parecem legais.
cubuspl42
8

LiquidFun (com ligações JS)

LiquidFun é, no momento em que estou postando isso, a versão mais recente para JS. Possui todos os recursos do Box2D e recursos de física de líquidos. Ele é portado usando emscripten, então o desempenho é decente.

google / liquidfun

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

DylanVann
fonte
Recentemente me deparei com isso e parece ideal para simular água fluindo através de canos para tanques e válvulas, etc., seria uma boa solução para um projeto que estou examinando. Existe algum tutorial lá fora, especialmente como colocar a biblioteca no meu javascript. A documentação parece um pouco escassa
Bob Haslett
6

Provavelmente, o melhor lugar para se manter atualizado com as portas JavaScript do Box2D é o fórum oficial: http://box2d.org/forum/viewforum.php?f=22

JSBox2D parece um bom começo.

Eu definitivamente daria uma olhada no Matter.js , que parece muito bem construído e muito rápido. Estou indo por esse caminho. http://brm.io/matter-js

zoosrc
fonte
1
Como o Matter.js funcionou para você?
David Y. Stephenson
0

Box2DWeb suporta a maior parte da API do C ++ Box2D original, exceto formas de cadeia. : /

É o Javascript Box2D mais utilizado. Se você precisar da documentação da API para Box2DWeb, verifique Box2DFlash. http://www.box2dflash.org/docs/2.1a/reference/

O Box2DWeb é gerado automaticamente a partir do Box2DFlash usando um compilador. Portanto, a API é a mesma.

Duvido que o Box2DWeb receba qualquer atualização no futuro, pois o Box2DFlash não mostrou mais atividades. Você pode ver a razão do autor sobre por que ele decidiu não escrever uma porta Box2D -> Box2DWeb direta.

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

Vennsoh
fonte
O próximo candidato ao Box2D até agora é PhysicsJS. wellcaffeinated.net/PhysicsJS/ (meus 2cents)
Vennsoh
O Google lançou um plugin, LiquidFun (Go google) durante o I / O 2014. Você precisará do Box2D v2.3 para usá-lo. É muito legal.
Vennsoh