ฉันควรใช้ไลบรารี Box2D JavaScript ใด [ปิด]


91

Box2Dสำหรับ JavaScript มีพอร์ตที่แตกต่างกันเล็กน้อย อันไหนดีที่สุด?

  • Box2DJS - "แปลงจาก Box2DFlashAS3_1.4.3.1 ในลักษณะอัตโนมัติ"

  • Box2Dflash 2.0 พอร์ตไปยัง JavaScript - "แฮ็คที่น่ารังเกียจขนาดใหญ่เพียงครั้งเดียวที่ใช้งานได้จริง"

  • box2dweb - "พอร์ตของ Box2DFlash 2.1a เป็น JavaScript ฉันพัฒนาตัวแปลง ActionScript 3 -to- JavaScript เพื่อสร้างโค้ด"

  • HBehrens / box2d.js - "a JavaScript Version of Box2D 2.1a" (เพิ่ม 21 พ.ย. 2554)

  • kripken / box2d.js - "พอร์ตโดยตรงของเอ็นจิ้นฟิสิกส์ Box2D 2D ไปยัง JavaScript โดยใช้ Emscripten" (เพิ่มเมื่อ 24 ก.ย. 2013)

ความคิดใด ๆ ที่http://chrome.angrybirds.com/เวอร์ชันใดใช้ถ้ามี


ไม่จำเป็นต้องเป็นพอร์ต Box2D ด้วยซ้ำ ตัวอย่างเช่นMatter.jsและp2.jsทั้งสองดูเหมือนจะค่อนข้างมั่นคง
Thomas

@ โทมัสฉันเห็นด้วย แต่ดูเวลาที่คำถามถูกถาม ตอนนั้นฉันเชื่อว่า Matter.js และ p2.js ยังไม่ออกมา
newguy

อาจเป็นไปได้ แต่ฉันคิดว่าคำถามนี้เกิดขึ้นใน Google ... ไม่มีอันตรายใด ๆ ที่พยายามอัปเดต SO ให้ทันสมัยอยู่เสมอด้วยคำแนะนำที่เป็นประโยชน์สำหรับผู้ที่มาตามคุณ :)
โทมัส

คำตอบ:


88

หมายเหตุถึงผู้อ่าน!

คำถามนี้เดิมถูกถามและตอบในปี 2011 แต่ฉันจะพยายามอย่างเต็มที่เพื่อให้เป็นปัจจุบัน!

นี่คือสิ่งที่ฉันพบ:

  • kripken / box2d.jsเป็นพอร์ตของ Box2D โดยใช้ Emscripten และทำงานได้ดีและรวดเร็ว ฉันได้ใช้สิ่งนี้เป็นการส่วนตัวและประสบความสำเร็จอย่างมาก
  • planck.jsเป็นพอร์ตใหม่ล่าสุดและเขียนขึ้นจากจุดเริ่มต้นใน JavaScript
  • Box2DJS เป็นพอร์ตของ Box2DFlash 1.4.3.1 box2dweb เป็นพอร์ตของเวอร์ชัน 2.1a
  • Box2DJS ทำงาน "เป็นโมดูล CommonJS โดยไม่มีการแก้ไขใด ๆ เลย" [1]
  • Box2DJS "ไม่ทันสมัยและคุณต้องนำเข้าไฟล์ JavaScript จำนวนมากในทุกโปรเจ็กต์" [2]
  • box2dweb อยู่ในไฟล์เดียว[2]
  • box2dweb คือ "พอร์ตใหม่กว่ามากและมีปัญหามากน้อย" กว่า Box2DJS [3] อย่างไรก็ตามการเปลี่ยนอาจแนะนำปัญหาใหม่[4]
  • Box2DJS ขึ้นอยู่กับ Prototype แต่ box2dweb ไม่ได้[5]
  • Seth Ladd ได้โปรโมต box2dweb พร้อมตัวอย่างในบล็อกของเขา[6]
  • ดูเหมือนจะไม่มีใครใช้ทางเลือกที่สาม
  • นอกจากนี้ยังมีเครื่องจำลองฟิสิกส์ที่ไม่ได้ใช้ Box2D ตรวจสอบMatter.jsและp2.js

นอกจากนี้ยังมีการอภิปรายที่คล้ายกันใน gamedev.stackexchange.com

ฉันจะบอกว่าผู้ชนะคือ kripken / box2d.js


box2d ไม่ทันสมัยเท่ากับ box2dweb ไม่มีคลาสหลักจำนวนมากจากไฟล์ที่ย่อขนาด
dopatraman

1
ฉันใช้ box2dJS เป็นการส่วนตัวในโปรเจ็กต์หนึ่งที่พอร์ตเกม iOS box2D ที่มีอยู่ของฉัน สิ่งที่ฉันพบในความแตกต่างของเวอร์ชันคือโค้ดบางอย่างจาก iOS ใช้งานไม่ได้ในเวอร์ชัน JS และการหยุดการพัฒนา หลังจากนั้นฉันใช้เวลาครึ่งสัปดาห์ในการเปลี่ยนรหัสทั้งหมดเป็น box2dweb และทุกอย่างทำงานได้ดีเหมือนกับเกม box2d บน iOS ของฉัน ดังนั้นความแตกต่างของเวอร์ชันจึงมีความสำคัญมาก
Makzan

พอร์ต emscripten ค่อนข้างเท่ห์ แต่ครั้งล่าสุดที่ฉันใช้ฉันพบว่ามันเป็นบั๊กกี้ (รวมถึงการค้างแบบสุ่ม) และยากที่จะดีบักเนื่องจากลักษณะของ emscripten
bunnyhero

2
@aPaidNerd เป็นยังงัยคะ?
Ken

2
เอ็นจิ้นฟิสิกส์ JS แบบ Box2d ใหม่ที่เรียกว่า planck เพิ่งเปิดตัวเมื่อเร็ว ๆ นี้ลองดู: github.com/shakiba/planck.js
newguy

13

คำถามนี้และคำตอบที่ดีที่สุดมาจากปี 2011 ตัวเลือกใหม่ล่าสุดตัวหนึ่งคือbox2.jsซึ่งเป็นการแปล Emscripten ของโค้ด C ++ เป็น Javascript ณ เดือนสิงหาคม 2556 เป็นปัจจุบันมากกว่าพอร์ตอื่น ๆ ที่ฉันพบและการสาธิตดูเหมือนจะใช้งานได้


ขอบคุณ @ เนลสันฉันเพิ่มคำถามนี้
คนโง่จ่าย

ฉันไม่ได้ใช้ libs เหล่านี้ แต่ box2d.js และ "fun with VTables" ฟังดูไม่น่าสนใจ
cubuspl42

8

LiquidFun (ด้วยการผูก JS)

LiquidFun คือตอนที่ฉันโพสต์สิ่งนี้ซึ่งเป็นพอร์ตล่าสุดของ JS มีคุณสมบัติทั้งหมดของ Box2D และคุณสมบัติทางฟิสิกส์ของของเหลว ถูกย้ายโดยใช้ emscripten ดังนั้นประสิทธิภาพจึงดี

google / liquidfun

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


ฉันเพิ่งเจอสิ่งนี้และมันดูเหมาะอย่างยิ่งสำหรับการจำลองน้ำที่ไหลผ่านท่อเข้าสู่ถังและวาล์วเป็นต้นซึ่งจะเป็นทางออกที่ดีสำหรับโครงการที่ฉันกำลังดูอยู่ มีบทช่วยสอนใด ๆ บ้างโดยเฉพาะอย่างยิ่งวิธีนำไลบรารีไปไว้ในจาวาสคริปต์ของฉัน เอกสารดูเหมือนจะหายากเล็กน้อย
Bob Haslett

6

อาจเป็นสถานที่ที่ดีที่สุดในการติดตามพอร์ต Box2D JavaScript เป็นฟอรัมอย่างเป็นทางการ: http://box2d.org/forum/viewforum.php?f=22

JSBox2Dดูเหมือนจะเป็นการเริ่มต้นที่ดี

แน่นอนฉันจะได้ดูMatter.jsซึ่งดูเหมือนว่าสร้างมาได้ดีและรวดเร็วมาก ฉันจะไปตามเส้นทางนี้ http://brm.io/matter-js


1
Matter.js ทำงานให้คุณอย่างไร
David Y. Stephenson


0

Box2DWeb รองรับ API ส่วนใหญ่จาก C ++ Box2D ดั้งเดิมยกเว้นรูปร่างโซ่ : /

เป็น Javascript Box2D ที่ใช้กันอย่างแพร่หลายมากที่สุด หากคุณต้องการเอกสาร API สำหรับ Box2DWeb โปรดดู Box2DFlash http://www.box2dflash.org/docs/2.1a/reference/

Box2DWeb สร้างขึ้นโดยอัตโนมัติจาก Box2DFlash โดยใช้คอมไพเลอร์ ดังนั้น API ก็เหมือนกัน

ฉันสงสัยว่า Box2DWeb จะได้รับการอัปเดตในอนาคตอีกต่อไปเนื่องจาก Box2DFlash ไม่แสดงกิจกรรมอีกต่อไป คุณสามารถดูเหตุผลของผู้เขียนว่าทำไมเขาถึงตัดสินใจไม่เขียนพอร์ต Box2D โดยตรง -> Box2DWeb

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


คู่แข่งคนต่อไปของ Box2D จนถึงตอนนี้คือ PhysicsJS wellcaffeinated.net/PhysicsJS/ (2cents ของฉัน)
Vennsoh

Google ได้เปิดตัวปลั๊กอิน LiquidFun (Go google) ในช่วง I / O 2014 คุณจะต้องใช้ Box2D v2.3 เพื่อใช้งาน มันน่ากลัวมาก
Vennsoh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.