Какую библиотеку JavaScript Box2D я должен использовать?

Для JavaScript существует несколько разных портов Box2D. Какой из них лучше?

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

  • Box2Dflash 2.0 портирован на JavaScript - "один большой неприятный хак, который просто срабатывает"

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

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

  • kripken/box2d.js - "прямой порт фреймворка Box2D 2D для JavaScript, используя Emscripten" (Добавлено 24 сентября 2013 г.)

Любые идеи, которые версия http://chrome.angrybirds.com/ использует, если таковые имеются?

Ответ 1

Примечание для читателей!

Этот вопрос изначально был задан и ответил в 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.

Ответ 2

Этот вопрос и его лучший ответ - с 2011 года. Недавно появившийся новый вариант - box2.js, перевод кода С++ Emscripten на Javascript, По состоянию на август 2013 года он стал более современным, чем другие порты, которые я нашел, и демонстрации, похоже, работают.

Ответ 3

LiquidFun (с привязкой JS)

LiquidFun в то время, когда я отправляю это, самый последний порт для JS. Он обладает всеми функциями Box2D и функциями жидкостной физики. Он портирован с использованием emscripten, поэтому производительность достойная.

google/liquidfun

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

Ответ 4

Наверное, лучшим местом для обновления с портами Box2D JavaScript является официальный форум: http://box2d.org/forum/viewforum.php?f=22

JSBox2D выглядит неплохо.

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

Ответ 6

Box2DWeb поддерживает большую часть API из исходного С++ 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