Яку бібліотеку JavaScript Box2D слід використовувати? [зачинено]


90

Існує кілька різних портів Box2D для JavaScript. Який з них найкращий?

  • Box2DJS - "автоматично перетворено з Box2DFlashAS3_1.4.3.1"

  • Box2Dflash 2.0 перенесено на JavaScript - "один великий неприємний хак, який просто працює"

  • box2dweb - "порт Box2DFlash 2.1a до JavaScript. Я розробив конвертер ActionScript 3-для-JavaScript для генерації коду"

  • HBehrens / box2d.js - "версія JavaScript Box2D 2.1a" (додано 21 листопада 2011 р.)

  • 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 ... не шкода, намагаючись тримати ТАК в курсі корисних вказівок для тих, хто приходить після вас :)
Томас

Відповіді:


86

До уваги читачів!

Спочатку це запитання було задано та отримано відповідь у 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 залежить від прототипу, але box2dweb не [5]
  • Сет Ладд просував box2dweb із прикладами у своєму блозі [6]
  • Здається, ніхто не використовує третю альтернативу.
  • Існують також фізичні симулятори, не засновані на Box2D. Перевірте Matter.js та p2.js

Також існує подібна дискусія на gamedev.stackexchange.com .

Я б сказав, що переможцем є kripken / box2d.js.


box2d не такий сучасний, як box2dweb. у зменшеному файлі відсутнє багато основних класів.
допатраман

1
Я особисто використовував box2dJS в одному проекті, що переносив мою існуючу гру box2D на iOS. Що я виявив з різницею у версії, це те, що деякий код з iOS працює не працює у версії JS, і розробник зупинився. Після цього я використав півтижня, щоб змінити весь код на box2dweb, і все працює нормально, як і моя гра в iOS box2d. Тож різниця версій має велике значення.
Макзан

порт emscripten досить прохолодний, але востаннє, коли я його використовував, виявив, що він глючить (включаючи випадкові заморозки) і дуже важкий для налагодження через природу emscripten.
bunnyhero

2
@aPaidNerd чи все ще це оновлено?
Ken

2
Нещодавно вийшов новий фізичний движок JS з портом Box2d під назвою planck, перевірте його: github.com/shakiba/planck.js
newguy

13

Це питання та його найкраща відповідь - з 2011 року. Одним із нещодавніх нових варіантів є box2.js , переклад Emscripten коду C ++ на Javascript. Станом на серпень 2013 року він є більш сучасним, ніж інші порти, які я знайшов, і демо-версії, здається, працюють.


Дякую @Nelson, я додав його до запитання
платний ботанік

Я не використовував жодної з цих бібліотек, але box2d.js та "розваги з VTables" не звучать круто.
cubuspl42

8

LiquidFun (з прив'язками JS)

LiquidFun - це момент, коли я публікую це, найновіший порт для JS. Він має всі особливості Box2D та особливості фізики рідини. Він перенесений за допомогою emscripten, тому продуктивність гідна.

google / liquidfun

google / liquidfun / дерево / master / liquidfun / Box2D / lfjs


Нещодавно я зіткнувся з цим, і це виглядає ідеально для імітації води, яка тече по трубах у резервуари та клапани тощо. Це було б гарним рішенням для проекту, який я розглядаю. Чи є якісь підручники, особливо як насправді перевести бібліотеку в мій javascript. Документація здається дефіцитною
Боб Хаслетт

6

Можливо, найкраще місце для оновлення портів JavaScript Box2D - це офіційний форум: http://box2d.org/forum/viewforum.php?f=22

JSBox2D виглядає як хороший старт.

Я б точно подивився Matter.js , який здається дуже добре побудованим і дуже швидким. Я йду цим шляхом. http://brm.io/matter-js


1
Як Matter.js працює для вас?
Девід Ю. Стефенсон,


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/ (мої 2 центи)
Vennsoh

Google випустив плагін LiquidFun (Go google) під час введення-виведення 2014 року. Для його використання вам знадобиться Box2D v2.3. Це досить приголомшливо.
Vennsoh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.