Której biblioteki JavaScript Box2D mam użyć? [Zamknięte]

91

Istnieje kilka różnych portów Box2D dla JavaScript. Która jest najlepsza?

  • Box2DJS - „przekonwertowany z Box2DFlashAS3_1.4.3.1 w sposób automatyczny”

  • Box2Dflash 2.0 przeniesiony do JavaScript - „jeden wielki paskudny hack, który po prostu działa”

  • box2dweb - „port Box2DFlash 2.1a na JavaScript. Opracowałem konwerter ActionScript 3 -to-JavaScript do generowania kodu”

  • HBehrens / box2d.js - „wersja JavaScript Box2D 2.1a” (dodano 21 listopada 2011)

  • kripken / box2d.js - "bezpośrednie przeniesienie silnika fizyki Box2D 2D do JavaScript przy użyciu Emscripten" (dodano 24 września 2013)

Jakieś pomysły, z której wersji http://chrome.angrybirds.com/ korzysta, jeśli w ogóle?

płatny frajer
źródło
Nie musi to być nawet port Box2D. Na przykład Matter.js i p2.js wydają się być całkiem solidne.
Thomas,
@Thomas Zgadzam się. Ale spójrz na czas, w którym zadano pytanie. W tamtym czasie uważam, że Matter.js i p2.js jeszcze się nie ukazały.
newguy
Prawdopodobnie, ale myślę, że to pytanie pojawiło się w Google ... bez szkody, próbując być na bieżąco z przydatnymi wskazówkami dla tych, którzy przyjdą po tobie :)
Thomas

Odpowiedzi:

87

Uwaga dla czytelników!

To pytanie zostało pierwotnie zadane i udzielono na nie odpowiedzi w 2011 r., Ale postaram się, aby było ono aktualne!

Oto co znalazłem:

  • kripken / box2d.js jest portem Box2D używającym Emscripten i działa dobrze i jest szybki. Użyłem tego osobiście z wielkim sukcesem.
  • planck.js to najnowszy port, napisany od podstaw w JavaScript
  • Box2DJS jest portem Box2DFlash 1.4.3.1. box2dweb to port wersji 2.1a.
  • Box2DJS działa „jako moduł CommonJS bez żadnych modyfikacji” [1]
  • Box2DJS „nieaktualne i musisz importować dużą liczbę plików JavaScript w każdym projekcie” [2]
  • box2dweb jest zawarty w jednym pliku [2]
  • box2dweb jest "dużo nowszym portem i ma dużo mniej problemów" niż Box2DJS [3] . Jednak zmiana może spowodować nowe problemy [4] .
  • Box2DJS zależy od Prototype, ale box2dweb nie [5]
  • Seth Ladd promował box2dweb z przykładami na swoim blogu [6]
  • Wydaje się, że nikt nie korzysta z trzeciej możliwości.
  • Istnieją również symulatory fizyki nie oparte na Box2D. Sprawdź Matter.js i p2.js

Podobna dyskusja jest również prowadzona na gamedev.stackexchange.com .

Powiedziałbym, że zwycięzcą jest kripken / box2d.js.

płatny frajer
źródło
box2d nie jest tak aktualny jak box2dweb. w zminimalizowanym pliku brakuje wielu podstawowych klas.
dopatraman
1
Osobiście użyłem box2dJS w jednym projekcie, przenosząc moją istniejącą grę box2D na iOS. Z różnicą w wersji odkryłem, że część kodu z iOS działa nie działa w wersji JS i zatrzymaniu dewelopera. Potem przez pół tygodnia zmieniłem cały kod na box2dweb i wszystko działa tak samo jak moja gra box2d na iOS. Więc różnica wersji ma duże znaczenie.
Makzan
port emscripten jest całkiem fajny, ale ostatnim razem, gdy go użyłem, okazało się, że zawiera błędy (w tym losowe zawieszanie się) i jest bardzo trudny do debugowania ze względu na naturę emscripten.
bunnyhero
2
@aPaidNerd czy to jest nadal aktualne?
Ken
2
Niedawno pojawił się nowy silnik fizyki JS z portem Box2d o nazwie planck
newguy
13

To pytanie i jego najlepsza odpowiedź pochodzą z 2011 r. Niedawno nowa opcja to box2.js , tłumaczenie kodu C ++ na Javascript w języku Emscripten. Od sierpnia 2013 roku jest bardziej aktualny niż inne porty, które znalazłem, a wersje demonstracyjne wydają się działać.

Nelson
źródło
Dzięki @Nelson, dodałem to do pytania
płatny
Nie używałem żadnej z tych bibliotek, ale box2d.js i „fun with VTables” nie brzmią fajnie.
cubuspl42
8

LiquidFun (z wiązaniami JS)

LiquidFun jest w chwili, gdy to publikuję, najnowszym portem do JS. Posiada wszystkie cechy Box2D i fizyki cieczy. Jest przeportowany przy użyciu emscripten, więc wydajność jest przyzwoita.

google / liquidfun

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

DylanVann
źródło
Niedawno się z tym spotkałem i wygląda to idealnie do symulacji wody przepływającej przez rury do zbiorników, zaworów itp. Byłoby to dobre rozwiązanie dla projektu, który oglądam. Czy jest tam jakiś poradnik, szczególnie jak właściwie przenieść bibliotekę do mojego javascript. Dokumentacja wydaje się trochę uboga
Bob Haslett,
6

Prawdopodobnie najlepszym miejscem na bieżąco z portami JavaScript Box2D jest oficjalne forum: http://box2d.org/forum/viewforum.php?f=22

JSBox2D wygląda na dobry początek.

Zdecydowanie chciałbym rzucić okiem na Matter.js , który wydaje się bardzo dobrze zbudowany i bardzo szybki. Idę tą ścieżką. http://brm.io/matter-js

zoosrc
źródło
1
Jak działał dla Ciebie Matter.js?
David Y. Stephenson
0

Box2DWeb obsługuje większość API z oryginalnego C ++ Box2D z wyjątkiem kształtów łańcuchów. : /

Jest to najczęściej używany Javascript Box2D. Jeśli potrzebujesz dokumentacji API dla Box2DWeb, wypróbuj Box2DFlash. http://www.box2dflash.org/docs/2.1a/reference/

Box2DWeb jest generowany automatycznie z Box2DFlash przy użyciu kompilatora. Więc API jest takie samo.

Wątpię, że Box2DWeb otrzyma jakąkolwiek aktualizację w przyszłości, ponieważ Box2DFlash nie wykazał już żadnych działań. Możesz zobaczyć racjonalne uzasadnienie autora, dlaczego zdecydował się nie pisać bezpośredniego portu Box2D -> Box2DWeb.

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

Vennsoh
źródło
Jak dotąd kolejnym pretendentem do Box2D jest PhysicsJS. wellcaffeinated.net/PhysicsJS/ (moje 2 centy)
Vennsoh
Google wypuściło wtyczkę LiquidFun (Google) podczas I / O 2014. Będziesz potrzebować Box2D v2.3, aby z niego korzystać. To jest niesamowite.
Vennsoh