Quelle bibliothèque JavaScript Box2D dois-je utiliser? [fermé]

89

Il existe différents ports de Box2D pour JavaScript. Lequel est le meilleur?

  • Box2DJS - "converti de Box2DFlashAS3_1.4.3.1 de manière automatique"

  • Box2Dflash 2.0 porté sur JavaScript - "un gros hack qui fonctionne tout simplement"

  • box2dweb - "un portage de Box2DFlash 2.1a vers JavaScript. J'ai développé un convertisseur ActionScript 3 vers JavaScript pour générer le code"

  • HBehrens / box2d.js - "une version JavaScript de Box2D 2.1a" (Ajouté le 21 novembre 2011)

  • kripken / box2d.js - "un port direct du moteur physique Box2D 2D vers JavaScript, en utilisant Emscripten" (Ajouté le 24 septembre 2013)

Des idées sur la version utilisée par http://chrome.angrybirds.com/ , le cas échéant?

un nerd payé
la source
Il n'est même pas nécessaire que ce soit un port Box2D. Par exemple, Matter.js et p2.js semblent tous deux assez solides.
Thomas le
@Thomas je suis d'accord. Mais regardez l'heure à laquelle la question a été posée. À ce moment-là, je crois que Matter.js et p2.js ne sont pas encore sortis.
newguy
Probablement, mais je pense que cette question a été soulevée dans Google ... pas de mal à essayer de tenir SO à jour avec des conseils utiles pour ceux qui viennent après vous :)
Thomas

Réponses:

85

Note aux lecteurs!

Cette question a été posée et répondue à l'origine en 2011, mais je ferai de mon mieux pour la tenir à jour!

Voici ce que j'ai trouvé:

  • kripken / box2d.js est un portage de Box2D utilisant Emscripten et fonctionne bien et est rapide. Je l'ai utilisé personnellement avec beaucoup de succès.
  • planck.js est le dernier port et est écrit à partir de zéro en JavaScript
  • Box2DJS est un portage de Box2DFlash 1.4.3.1. box2dweb est un portage de la version 2.1a.
  • Box2DJS fonctionne "comme un module CommonJS sans aucune modification du tout" [1]
  • Box2DJS "n'est pas à jour et vous devez importer une grande quantité de fichiers JavaScript dans chaque projet" [2]
  • box2dweb est contenu dans un seul fichier [2]
  • box2dweb est "un portage beaucoup plus récent et a beaucoup moins de problèmes" que Box2DJS [3] . Cependant, le changement peut introduire de nouveaux problèmes [4] .
  • Box2DJS dépend de Prototype mais pas box2dweb [5]
  • Seth Ladd a promu box2dweb avec des exemples sur son blog [6]
  • Personne ne semble utiliser la troisième alternative.
  • Il existe également des simulateurs physiques non basés sur Box2D. Découvrez Matter.js et p2.js

Il y a aussi une discussion similaire sur gamedev.stackexchange.com .

Je dirais que le gagnant est kripken / box2d.js.

un nerd payé
la source
box2d n'est pas aussi à jour que box2dweb. beaucoup de classes principales manquent dans le fichier minifié.
dopatraman
1
J'ai personnellement utilisé box2dJS dans un projet portant mon jeu box2D iOS existant. Ce que j'ai trouvé avec la différence de version, c'est que certains codes d'iOS ne fonctionnent pas dans la version JS et le développement s'arrête. Après cela, j'ai utilisé une demi-semaine pour changer tout le code en box2dweb et tout fonctionne bien comme mon jeu box2d iOS. Donc, la différence de version compte beaucoup.
Makzan
le port emscripten est plutôt sympa, mais la dernière fois que je l'ai utilisé, je l'ai trouvé bogué (y compris les gels aléatoires), et très difficile à déboguer, en raison de la nature de emscripten.
bunnyhero
2
@aPaidNerd est-ce toujours à jour?
Ken
2
Un nouveau moteur physique JS porté par Box2d appelé planck est sorti récemment, vérifiez-le: github.com/shakiba/planck.js
newguy
13

Cette question et sa meilleure réponse datent de 2011. Une nouvelle option récente est box2.js , une traduction Emscripten du code C ++ en Javascript. Depuis août 2013, il est plus à jour que les autres ports que j'ai trouvés, et les démos semblent fonctionner.

Nelson
la source
Merci @Nelson, je l'ai ajouté à la question
un nerd payé le
Je n'ai utilisé aucune de ces bibliothèques, mais box2d.js et "fun with VTables" ne sonne pas cool.
cubuspl42
8

LiquidFun (avec liaisons JS)

LiquidFun est, au moment où je publie ceci, le portage le plus récent vers JS. Il possède toutes les fonctionnalités de Box2D et des fonctionnalités de physique des liquides. Il est porté en utilisant emscripten, donc les performances sont correctes.

google / liquidfun

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

DylanVann
la source
Je suis récemment tombé sur cela et cela semble idéal pour simuler l'eau s'écoulant à travers les tuyaux dans les réservoirs et les vannes, etc. ce serait une bonne solution pour un projet que je regarde. Existe-t-il un tutoriel sur la façon d'obtenir la bibliothèque dans mon javascript. La documentation semble un peu rare
Bob Haslett
6

Le forum officiel est probablement le meilleur endroit pour se tenir au courant des ports JavaScript de Box2D: http://box2d.org/forum/viewforum.php?f=22

JSBox2D semble être un bon début.

Je voudrais certainement jeter un œil à Matter.js , qui semble très bien construit et très rapide. Je vais sur cette voie. http://brm.io/matter-js

zoosrc
la source
1
Comment Matter.js a-t-il fonctionné pour vous?
David Y. Stephenson
0

Box2DWeb prend en charge la plupart des API du C ++ Box2D d'origine, à l'exception des formes de chaîne. : /

C'est le Javascript Box2D le plus utilisé. Si vous avez besoin de la documentation de l'API pour Box2DWeb, consultez Box2DFlash. http://www.box2dflash.org/docs/2.1a/reference/

Box2DWeb est généré automatiquement à partir de Box2DFlash à l'aide d'un compilateur. Donc, l'API est la même.

Je doute que Box2DWeb obtienne plus de mise à jour à l'avenir car Box2DFlash n'a plus montré aucune activité. Vous pouvez voir le raisonnement de l'auteur sur la raison pour laquelle il a décidé de ne pas écrire un port direct Box2D -> Box2DWeb.

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

Vennsoh
la source
Le prochain concurrent pour Box2D jusqu'à présent est PhysicsJS. wellcaffeinated.net/PhysicsJS/ (mes 2cents)
Vennsoh
Google a publié un plugin, LiquidFun (Go google) pendant I / O 2014. Vous aurez besoin de Box2D v2.3 pour l'utiliser. C'est vraiment génial.
Vennsoh