Welche Box2D-JavaScript-Bibliothek soll ich verwenden? [geschlossen]

89

Es gibt einige verschiedene Ports von Box2D für JavaScript. Welches ist das beste?

  • Box2DJS - "automatisch von Box2DFlashAS3_1.4.3.1 konvertiert"

  • Box2Dflash 2.0 auf JavaScript portiert - "ein großer böser Hack, der zufällig funktioniert"

  • box2dweb - "eine Portierung von Box2DFlash 2.1a auf JavaScript. Ich habe einen ActionScript 3-zu-JavaScript-Konverter entwickelt, um den Code zu generieren"

  • HBehrens / box2d.js - "eine JavaScript-Version von Box2D 2.1a" (hinzugefügt am 21. November 2011)

  • kripken / box2d.js - "Ein direkter Port der Box2D 2D-Physik-Engine zu JavaScript unter Verwendung von Emscripten" (Hinzugefügt am 24. September 2013)

Irgendwelche Ideen, welche Version http://chrome.angrybirds.com/ verwendet, wenn überhaupt?

ein bezahlter Nerd
quelle
Es muss nicht einmal ein Box2D-Port sein. Zum Beispiel scheinen Matter.js und p2.js beide ziemlich solide zu sein.
Thomas
@ Thomas Ich stimme zu. Aber schauen Sie sich die Zeit an, zu der die Frage gestellt wurde. Zu dieser Zeit glaube ich, dass Matter.js und p2.js noch nicht herausgekommen sind.
Newguy
Wahrscheinlich, aber ich denke, diese Frage ist in Google aufgetaucht ... kein Schaden, wenn man versucht, SO mit nützlichen Hinweisen für diejenigen auf dem Laufenden zu halten, die nach dir kommen :)
Thomas

Antworten:

85

Hinweis für die Leser!

Diese Frage wurde ursprünglich im Jahr 2011 gestellt und beantwortet, aber ich werde mein Bestes tun, um sie auf dem neuesten Stand zu halten!

Folgendes habe ich gefunden:

  • kripken / box2d.js ist ein Port von Box2D mit Emscripten und funktioniert gut und ist schnell. Ich habe dies persönlich mit großem Erfolg genutzt.
  • planck.js ist der neueste Port und wurde von Grund auf in JavaScript geschrieben
  • Box2DJS ist ein Port von Box2DFlash 1.4.3.1. box2dweb ist ein Port der Version 2.1a.
  • Box2DJS funktioniert "als CommonJS-Modul ohne jegliche Änderungen" [1]
  • Box2DJS "nicht aktuell und Sie müssen in jedem Projekt eine große Menge von JavaScript-Dateien importieren" [2]
  • box2dweb ist in einer einzigen Datei enthalten [2]
  • box2dweb ist "ein viel neuerer Port und hat viel weniger Probleme" als Box2DJS [3] . Ein Wechsel kann jedoch zu neuen Problemen führen [4] .
  • Box2DJS hängt vom Prototyp ab, box2dweb jedoch nicht [5]
  • Seth Ladd hat box2dweb mit Beispielen in seinem Blog beworben [6]
  • Niemand scheint die dritte Alternative zu nutzen.
  • Es gibt auch Physiksimulatoren, die nicht auf Box2D basieren. Schauen Sie sich Matter.js und p2.js an

Es gibt auch eine ähnliche Diskussion auf gamedev.stackexchange.com .

Ich würde sagen, dass der Gewinner kripken / box2d.js ist.

ein bezahlter Nerd
quelle
box2d ist nicht so aktuell wie box2dweb. In der minimierten Datei fehlen viele Kernklassen.
Dopatraman
1
Ich persönlich habe box2dJS in einem Projekt verwendet, das mein vorhandenes iOS box2D-Spiel portiert. Was ich mit dem Versionsunterschied festgestellt habe, ist, dass ein Teil des Codes von iOS in der JS-Version nicht funktioniert und der Entwickler anhält. Danach habe ich eine halbe Woche gebraucht, um den gesamten Code in box2dweb zu ändern, und alles funktioniert genauso wie mein iOS-Box2d-Spiel. Der Versionsunterschied ist also sehr wichtig.
Makzan
Der emscripten-Port ist ziemlich cool, aber als ich ihn das letzte Mal benutzte, fand ich ihn fehlerhaft (einschließlich zufälliger Einfrierungen) und aufgrund der Art von emscripten sehr schwer zu debuggen.
Bunnyhero
2
@aPaidNerd ist das noch aktuell?
Ken
2
Eine neue JS-Physik-Engine mit Box2d-Port namens Planck wurde kürzlich veröffentlicht.
Schauen
13

Diese Frage und ihre beste Antwort stammen aus dem Jahr 2011. Eine neue Option ist box2.js , eine Emscripten-Übersetzung des C ++ - Codes in Javascript. Ab August 2013 ist es aktueller als die anderen Ports, die ich gefunden habe, und die Demos scheinen zu funktionieren.

Nelson
quelle
Danke @ Nelson, ich habe es der Frage hinzugefügt
ein bezahlter Nerd
Ich habe keine dieser Bibliotheken verwendet, aber box2d.js und "Spaß mit VTables" klingen nicht cool.
cubuspl42
8

LiquidFun (mit JS-Bindungen)

LiquidFun ist zum Zeitpunkt der Veröffentlichung der neueste Port für JS. Es verfügt über alle Funktionen von Box2D und Flüssigphysik. Es wird mit emscripten portiert, daher ist die Leistung anständig.

google / liquidfun

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

DylanVann
quelle
Ich bin kürzlich darauf gestoßen und es sieht ideal aus, um Wasser zu simulieren, das durch Rohre in Tanks und Ventile usw. fließt. Es wäre eine gute Lösung für ein Projekt, das ich mir anschaue. Gibt es da draußen ein Tutorial, insbesondere, wie man die Bibliothek tatsächlich in mein Javascript bringt? Die Dokumentation scheint etwas knapp
Bob Haslett
6

Der wahrscheinlich beste Ort, um über Box2D-JavaScript-Ports auf dem Laufenden zu bleiben, ist das offizielle Forum: http://box2d.org/forum/viewforum.php?f=22

JSBox2D scheint ein guter Anfang zu sein.

Ich würde auf jeden Fall einen Blick in Matter.js werfen , das sehr gut gebaut und sehr schnell zu sein scheint. Ich gehe diesen Weg. http://brm.io/matter-js

zoosrc
quelle
1
Wie hat Matter.js für Sie gearbeitet?
David Y. Stephenson
0

Box2DWeb unterstützt den größten Teil der API aus der ursprünglichen C ++ Box2D mit Ausnahme von Kettenformen. : /

Es ist die am weitesten verbreitete Javascript Box2D. Wenn Sie die API-Dokumentation für Box2DWeb benötigen, lesen Sie Box2DFlash. http://www.box2dflash.org/docs/2.1a/reference/

Box2DWeb wird mithilfe eines Compilers automatisch aus Box2DFlash generiert. Die API ist also dieselbe.

Ich bezweifle, dass Box2DWeb in Zukunft kein Update mehr erhalten wird, da Box2DFlash keine Aktivitäten mehr gezeigt hat. Sie können sehen, warum der Autor entschieden hat, keinen direkten Box2D -> Box2DWeb-Port zu schreiben.

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

Vennsoh
quelle
Der nächste Anwärter auf Box2D ist bisher PhysicsJS. wellcaffeinated.net/PhysicsJS/ (meine 2 Cent)
Vennsoh
Google hat während der E / A 2014 das Plugin LiquidFun (Go google) veröffentlicht. Sie benötigen Box2D v2.3, um es zu verwenden. Es ist ziemlich großartig.
Vennsoh