Какую библиотеку JavaScript Box2D мне следует использовать? [закрыто]

91

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

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

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

  • box2dweb - «перенос Box2DFlash 2.1a на JavaScript. Я разработал преобразователь ActionScript 3 в JavaScript для генерации кода»

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

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

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

оплачиваемый ботаник
источник
Это даже не обязательно должен быть порт Box2D. Например, Matter.js и p2.js кажутся довольно солидными.
Томас
@ Томас Я согласен. Но посмотрите, когда был задан вопрос. В то время я считаю, что Matter.js и p2.js еще не вышли.
newguy
Вероятно, но я думаю, что этот вопрос возник в Google ... не вредно пытаться поддерживать SO в актуальном состоянии с помощью полезных указателей для тех, кто придет после вас :)
Томас

Ответы:

87

На заметку читателям!

Первоначально этот вопрос был задан и дан ответ в 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. в минифицированном файле отсутствует множество основных классов.
dopatraman
1
Я лично использовал box2dJS в одном проекте, портируя мою существующую игру box2D для iOS. Что я обнаружил с разницей в версиях, так это то, что некоторый код из iOS не работает в версии JS и остановка разработки. После этого я потратил полнедели, чтобы изменить весь код на box2dweb, и все работало нормально, как и моя игра box2d для iOS. Так что разница версий имеет большое значение.
Makzan 02
Порт emscripten довольно крут, но в последний раз, когда я его использовал, я обнаружил, что он содержит ошибки (включая случайные зависания) и его очень трудно отлаживать из-за природы emscripten.
bunnyhero
2
@aPaidNerd, это все еще актуально?
Кен
2
Недавно был выпущен новый физический движок на основе 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 / tree / master / liquidfun / Box2D / lfjs

ДиланВанн
источник
Я недавно наткнулся на это, и он выглядит идеально для моделирования воды, протекающей по трубам в резервуары, клапаны и т. Д., Это было бы хорошим решением для проекта, который я рассматриваю. Есть ли какой-нибудь учебник, особенно, как на самом деле вставить библиотеку в мой javascript. Документация кажется немного скудной
Боб Хаслетт
6

Вероятно, лучшее место, где можно узнать о портах JavaScript для Box2D, - это официальный форум: http://box2d.org/forum/viewforum.php?f=22

JSBox2D выглядит как хорошее начало.

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

zoosrc
источник
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

Vennsoh
источник
Следующим претендентом на Box2D на данный момент является PhysicsJS. wellcaffeinated.net/PhysicsJS/ (my 2cents)
Vennsoh
Google выпустил плагин LiquidFun (Go google) во время I / O 2014. Для его использования вам понадобится Box2D v2.3. Это довольно круто.
Vennsoh