Pustaka JavaScript Box2D mana yang harus saya gunakan? [Tutup]

91

Ada beberapa port berbeda dari Box2D untuk JavaScript. Yang mana yang terbaik?

  • Box2DJS - "dikonversi dari Box2DFlashAS3_1.4.3.1 secara otomatis"

  • Box2Dflash 2.0 di-porting ke JavaScript - "satu peretasan besar yang kebetulan berhasil"

  • box2dweb - "port dari Box2DFlash 2.1a ke JavaScript. Saya mengembangkan konverter ActionScript 3-ke- JavaScript untuk menghasilkan kode"

  • HBehrens / box2d.js - "a JavaScript Version of Box2D 2.1a" (Ditambahkan 21 Nov 2011)

  • kripken / box2d.js - "port langsung dari mesin fisika Box2D 2D ke JavaScript, menggunakan Emscripten" (Ditambahkan 24 Sep 2013)

Ada ide versi mana yang digunakan http://chrome.angrybirds.com/ , jika ada?

seorang kutu buku yang dibayar
sumber
Itu bahkan tidak harus berupa port Box2D. Misalnya, Matter.js dan p2.js keduanya tampaknya cukup solid.
Thomas
@ Thomas Saya setuju. Tapi lihat saat pertanyaan itu diajukan. Saat itu saya yakin Matter.js dan p2.js belum keluar.
newguy
Mungkin, tapi saya pikir pertanyaan ini muncul di Google ... tidak ada salahnya mencoba untuk menjaga SO tetap up to date dengan petunjuk berguna bagi mereka yang datang setelah Anda :)
Thomas

Jawaban:

87

Catatan untuk pembaca!

Pertanyaan ini awalnya ditanyakan dan dijawab pada tahun 2011, tetapi saya akan berusaha semaksimal mungkin untuk selalu memperbaruinya!

Inilah yang saya temukan:

  • kripken / box2d.js adalah port dari Box2D menggunakan Emscripten dan bekerja dengan baik dan cepat. Saya telah menggunakan ini secara pribadi dengan sukses besar.
  • planck.js adalah port terbaru dan ditulis dari awal dalam JavaScript
  • Box2DJS adalah port dari Box2DFlash 1.4.3.1. box2dweb adalah port versi 2.1a.
  • Box2DJS bekerja "sebagai modul CommonJS tanpa modifikasi sama sekali" [1]
  • Box2DJS "tidak mutakhir dan Anda harus mengimpor sejumlah besar file JavaScript di setiap proyek" [2]
  • box2dweb terkandung dalam satu file [2]
  • box2dweb adalah "port yang jauh lebih baru dan memiliki lebih sedikit masalah" daripada Box2DJS [3] . Namun, peralihan mungkin menimbulkan masalah baru [4] .
  • Box2DJS bergantung pada Prototipe tetapi box2dweb tidak [5]
  • Seth Ladd telah mempromosikan box2dweb dengan contoh-contoh di blognya [6]
  • Sepertinya tidak ada yang menggunakan alternatif ketiga.
  • Ada juga simulator fisika yang tidak didasarkan pada Box2D. Lihat Matter.js dan p2.js

Ada juga diskusi serupa di gamedev.stackexchange.com .

Saya akan mengatakan bahwa pemenangnya adalah kripken / box2d.js.

seorang kutu buku yang dibayar
sumber
box2d tidak semutakhir box2dweb. banyak kelas inti yang hilang dari file yang diperkecil.
dopatraman
1
Saya pribadi menggunakan box2dJS dalam satu proyek porting game box2D iOS saya yang sudah ada. Apa yang saya temukan dengan perbedaan versi adalah bahwa beberapa kode dari iOS tidak berfungsi di versi JS dan dev berhenti. Setelah itu, saya menggunakan setengah minggu untuk mengubah semua kode menjadi box2dweb dan semuanya berfungsi dengan baik sama seperti game box2d iOS saya. Jadi perbedaan versi sangat penting.
Makzan
port emscripten cukup keren, tetapi terakhir kali saya menggunakannya saya menemukan itu menjadi buggy (termasuk freeze acak), dan sangat sulit untuk di-debug, karena sifat emscripten.
bunnyhero
2
@aPaidNerd apakah ini masih up to date?
Ken
2
Sebuah box2D-porting mesin fisika JS baru yang disebut Planck keluar baru-baru ini, check it out: github.com/shakiba/planck.js
newguy
13

Pertanyaan ini dan jawaban terbaiknya berasal dari tahun 2011. Satu opsi baru terbaru adalah box2.js , terjemahan Emscripten dari kode C ++ ke Javascript. Mulai Agustus 2013, port ini lebih mutakhir daripada port lain yang saya temukan, dan demo tampaknya berfungsi.

Nelson
sumber
Terima kasih @Nelson, saya menambahkannya ke pertanyaan
seorang kutu buku berbayar
Saya tidak menggunakan libs ini, tetapi box2d.js dan "fun with VTables" tidak terdengar keren.
cubuspl42
8

LiquidFun (Dengan JS Bindings)

LiquidFun, pada saat saya memposting ini, port terbaru ke JS. Ia memiliki semua fitur Box2D dan fitur fisika cair. Ini porting menggunakan emscripten, jadi kinerjanya lumayan.

google / liquidfun

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

DylanVann
sumber
Saya baru-baru ini menemukan ini dan terlihat ideal untuk mensimulasikan air yang mengalir melalui pipa ke tangki dan katup dll. Ini akan menjadi solusi yang baik untuk proyek yang saya lihat. Apakah ada tutorial di luar sana terutama bagaimana cara memasukkan perpustakaan ke dalam javascript saya. Dokumentasi tampaknya agak langka
Bob Haslett
6

Mungkin tempat terbaik untuk tetap up-to-date dengan port JavaScript Box2D adalah forum resmi: http://box2d.org/forum/viewforum.php?f=22

JSBox2D sepertinya awal yang baik.

Saya pasti akan melihat Matter.js , yang tampaknya dibuat dengan sangat baik dan sangat cepat. Saya akan melalui jalan ini. http://brm.io/matter-js

zoosrc
sumber
1
Bagaimana Matter.js bekerja untuk Anda?
David Y. Stephenson
0

Box2DWeb mendukung sebagian besar API dari C ++ Box2D asli kecuali bentuk rantai. : /

Ini adalah Javascript Box2D yang paling banyak digunakan. Jika Anda memerlukan dokumentasi API untuk Box2DWeb, lihat Box2DFlash. http://www.box2dflash.org/docs/2.1a/reference/

Box2DWeb dihasilkan secara otomatis dari Box2DFlash menggunakan kompiler. Jadi API-nya sama.

Saya ragu Box2DWeb akan mendapatkan pembaruan apa pun di masa mendatang karena Box2DFlash telah menunjukkan tidak ada aktivitas lagi. Anda dapat melihat alasan penulis mengapa dia memutuskan untuk tidak menulis port Box2D -> Box2DWeb langsung.

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

Vennsoh
sumber
Pesaing berikutnya untuk Box2D sejauh ini adalah PhysicsJS. wellcaffeinated.net/PhysicsJS/ (2cents saya)
Vennsoh
Google telah merilis sebuah plugin, LiquidFun (Go google) selama I / O 2014. Anda memerlukan Box2D v2.3 untuk menggunakannya. Ini sangat mengagumkan.
Vennsoh