Tôi nên sử dụng thư viện JavaScript Box2D nào? [đóng cửa]


89

Có một vài cổng khác nhau của Box2D dành cho JavaScript. Cái nào là tốt nhất?

  • Box2DJS - "được chuyển đổi từ Box2DFlashAS3_1.4.3.1 theo cách tự động"

  • Box2Dflash 2.0 đã được chuyển sang JavaScript - "một vụ hack lớn khó chịu chỉ xảy ra hoạt động"

  • box2dweb - "một cổng Box2DFlash 2.1a sang JavaScript. Tôi đã phát triển trình chuyển đổi ActionScript 3 -to- JavaScript để tạo mã"

  • HBehrens / box2d.js - "Phiên bản JavaScript của Box2D 2.1a" (Thêm vào ngày 21 tháng 11 năm 2011)

  • kripken / box2d.js - "một cổng trực tiếp của công cụ vật lý Box2D 2D sang JavaScript, sử dụng Emscripten" (Đã thêm vào ngày 24 tháng 9 năm 2013)

Bất kỳ ý tưởng nào về phiên bản http://chrome.angrybirds.com/ sử dụng, nếu có?


Nó thậm chí không cần phải là một cổng Box2D. Ví dụ: Matter.jsp2.js đều có vẻ khá vững chắc.
Thomas

@Thomas Tôi đồng ý. Nhưng hãy nhìn vào thời điểm câu hỏi được đặt ra. Vào thời điểm đó, tôi tin rằng Matter.js và p2.js vẫn chưa ra mắt.
newguy

Có lẽ, nhưng tôi nghĩ rằng câu hỏi này đã đưa ra trong Google ... không có hại cố gắng giữ SO cập nhật với con trỏ hữu ích cho những người đến sau khi bạn :)
Thomas

Câu trả lời:


85

Lưu ý với bạn đọc!

Câu hỏi này ban đầu được hỏi và trả lời vào năm 2011, nhưng tôi sẽ cố gắng hết sức để cập nhật nó!

Đây là những gì tôi đã tìm thấy:

  • kripken / box2d.js là một cổng của Box2D sử dụng Emscripten, hoạt động tốt và nhanh chóng. Tôi đã sử dụng điều này cá nhân với thành công lớn.
  • planck.js là cổng mới nhất và được viết từ nền tảng bằng JavaScript
  • Box2DJS là một cổng của Box2DFlash 1.4.3.1. box2dweb là một cổng của phiên bản 2.1a.
  • Box2DJS hoạt động "như một mô-đun CommonJS mà không có bất kỳ sửa đổi nào" [1]
  • Box2DJS "không cập nhật và bạn phải nhập một lượng lớn tệp JavaScript trong mọi dự án" [2]
  • box2dweb được chứa trong một tệp duy nhất [2]
  • box2dweb là "một cổng mới hơn nhiều và có ít vấn đề hơn" so với Box2DJS [3] . Tuy nhiên, việc chuyển đổi có thể gây ra các vấn đề mới [4] .
  • Box2DJS phụ thuộc vào Nguyên mẫu nhưng box2dweb thì không [5]
  • Seth Ladd đã quảng cáo box2dweb với các ví dụ trên blog của mình [6]
  • Dường như không ai đang sử dụng giải pháp thay thế thứ ba.
  • Ngoài ra còn có các trình mô phỏng vật lý không dựa trên Box2D. Kiểm tra Matter.jsp2.js

Cũng có một cuộc thảo luận tương tự trên gamedev.stackexchange.com .

Tôi muốn nói rằng người chiến thắng là kripken / box2d.js.


box2d không được cập nhật như box2dweb. rất nhiều lớp lõi bị thiếu trong tệp được rút gọn.
dopatraman

1
Cá nhân tôi đã sử dụng box2dJS trong một dự án chuyển trò chơi box2D iOS hiện có của tôi. Điều tôi nhận thấy với sự khác biệt về phiên bản là một số mã từ iOS hoạt động không hoạt động trong phiên bản JS và nhà phát triển tạm dừng. Sau đó, tôi đã sử dụng nửa tuần để thay đổi tất cả mã thành box2dweb và mọi thứ hoạt động tốt giống như trò chơi box2d trên iOS của tôi. Vì vậy, sự khác biệt về phiên bản quan trọng rất nhiều.
Makzan

cổng emscripten khá tuyệt, nhưng lần cuối tôi sử dụng nó, tôi thấy nó bị lỗi (bao gồm cả việc đóng băng ngẫu nhiên) và rất khó gỡ lỗi, do bản chất của emscripten.
bunnyhero

2
@aPaidNerd cái này vẫn được cập nhật chứ?
Ken

2
Một Box2D-chuyển động cơ vật lý JS gọi Planck mới đã được ra khỏi thời gian gần đây, check it out: github.com/shakiba/planck.js
newguy

13

Câu hỏi này và câu trả lời hay nhất của nó là từ năm 2011. Một tùy chọn mới gần đây là box2.js , một bản dịch Emscripten của mã C ++ sang Javascript. Kể từ tháng 8 năm 2013, nó được cập nhật nhiều hơn các cổng khác mà tôi đã tìm thấy và các bản demo dường như hoạt động.


Cảm ơn @Nelson, tôi đã thêm nó vào câu hỏi
một nerd trả

Tôi đã không sử dụng bất kỳ lib nào trong số này, nhưng box2d.js và "vui vẻ với VTables" nghe có vẻ không thú vị.
cubuspl42

8

LiquidFun (Với JS Bindings)

LiquidFun, tại thời điểm tôi đăng bài này, là cổng mới nhất cho JS. Nó có tất cả các tính năng của Box2D và các tính năng vật lý chất lỏng. Nó được chuyển bằng cách sử dụng emscripten, vì vậy hiệu suất là tốt.

google / liquidfun

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


Gần đây tôi đã xem qua điều này và nó có vẻ lý tưởng để mô phỏng nước chảy qua các đường ống vào bồn chứa và van, v.v. nó sẽ là một giải pháp tốt cho một dự án mà tôi đang xem xét. Có bất kỳ hướng dẫn nào trên mạng đặc biệt là cách thực sự đưa thư viện vào javascript của tôi không. Tài liệu có vẻ hơi khan hiếm
Bob Haslett



0

Box2DWeb hỗ trợ hầu hết các API từ Box2D C ++ gốc ngoại trừ các hình dạng chuỗi. : /

Nó là Javascript Box2D được sử dụng rộng rãi nhất. Nếu bạn cần tài liệu API cho Box2DWeb, hãy xem Box2DFlash. http://www.box2dflash.org/docs/2.1a/reference/

Box2DWeb được tạo tự động từ Box2DFlash bằng trình biên dịch. Vì vậy, API cũng vậy.

Tôi nghi ngờ Box2DWeb sẽ nhận được bất kỳ bản cập nhật nào trong tương lai nữa vì Box2DFlash đã không còn hoạt động nào nữa. Bạn có thể thấy lý do của tác giả về lý do tại sao ông quyết định không viết một cổng Box2D -> Box2DWeb trực tiếp.

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


Ứng cử viên tiếp theo cho Box2D cho đến nay là PhysicsJS. wellcaffeinated.net/PhysicsJS/ (2cents của tôi)
Vennsoh

Google đã phát hành một plugin, LiquidFun (Go google) trong I / O 2014. Bạn sẽ cần Box2D v2.3 để sử dụng nó. Nó là khá tuyệt vời.
Vennsoh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.