Box2D

Поделись знанием:
Перейти к: навигация, поиск
Box2D
Физический движок
Разработчик Эрин Катто (англ. Erin Catto)
Поддерживаемая ОС не зависит от ОС
Написан на языке C++
Лицензия лицензии zlib[1]
Последняя версия 2.3.1[2] / 5 апреля 2014 года
www.box2d.org/

Box2D — компьютерная программа, свободный открытый физический движок. Box2D является физическим движком реального времени и предназначен для работы с двумерными физическими объектами. Движок разработан Эрином Катто (англ. Erin Catto), написан на языке программирования C++ и распространяется на условиях лицензии zlib.

Движок используется в двумерных компьютерных играх, среди которых Angry Birds, Limbo, Crayon Physics Deluxe, Rolando, Fantastic Contraption, Incredibots, Transformice, Happy Wheels, Color Infection, Shovel Knight.





История

Первая версия Box2D была выпущена под названием «Box2D Lite» в качестве движка, для физической презентации, которую показал Эрин Катто на выставке Game Developers Conference 2006. 11 сентября 2007 года движок стал доступным для скачивания на сайте SourceForge.net.

6 марта 2008 года была выпущена версия движка 2.0, в которой была представлена технология Continuous collision detection (обнаружение продолжающихся (непрерывных) столкновений) и был переработан API.

3 апреля 2010 года была выпущена версия Box2D 2.1.0. В новой версии были добавлены рейкастинг, динамические ААВВ деревья, новые типы джойнтов (связок), был полностью переписан блок обнаружений непрерывных столкновений и т. д.[3][4]

Кроссплатформенность

Движок Box2D является кроссплатформенным ПО, он написан на платформо-независимом языке программирования C++, поэтому может работать (выполняться) на любой платформе, на которой присутствует компилятор C++. Движок может быть скомпилирован в режимах с фиксированной запятой и с плавающей запятой.

Box2D используется на Nintendo DS, Wii и нескольких мобильных телефонах (включая iPhone), а также на большинстве основных операционных систем для ПК.

Движок был портирован на многие языки программирования и программные среды, включая Java[5], Adobe FlashActionScript[6] и языках haXe[7]), C#[8], JavaScript[9], D[10] и Delphi[11]. Присутствует связывание (англ. bindings) для использования откомпилированной библиотеки движка на Python[12] и DarkBasic.

Box2D встроен в такие open source конструкторы игр, как кроссплатформенный Novashell и Scirra Construct для Windows, а также в движок Love 2D.

30 октября 2009 года было объявлено о том, что Box2D будет интегрирован в игровой движок Torque 2D.[13]

В версии 2.1 Stencyl Works так же используется Box2D (прим.)

Технические характеристики

Box2D предназначен для симуляции механики твёрдых тел с учётом ограничений. Движок может симулировать физические тела, составленные из выпуклых многоугольников, окружностей и линий. Тела могут быть связаны ограничителями в кинематические пары и подвергаться действию разных физических сил, таких как гравитация, трение и удар. Тела также могут подвергаться действию внутренних сил, таких как упругость.

Системы обнаружения столкновений и обработки ограничений состоят из трёх частей: возрастающей широкой фазы Sweep and prune, блока непрерывных (продолжающихся) обнаружений столкновений, и стабильного линейного во времени блока решения столкновений. Эти алгоритмы предоставляют эффективную симуляцию быстро движущихся тел и больших массивов объектов без упускания пересечений и появления нестабильностей.[14]

Связанные физические движки

Ранняя версия движка Box2D называлась Box2D Lite и использовалась в презентациях Эрина Катто, которые он показывал на выставке Game Developers Conference. Box2D Lite использует те же алгоритмы, что и у Box2D, но имеет меньший набор функций.[15]

Физические движки Chipmunk (англ.)[16] (написан на C) и Phys2D[17] (написан на Java) частично основаны на Box2D Lite.

Напишите отзыв о статье "Box2D"

Примечания

  1. Erin Catto. [www.box2d.org/index.html Box2D Main Page] (англ.)(недоступная ссылка — история). box2d.org (9 октября 2007 года). Проверено 2 апреля 2010. [web.archive.org/20071024004445/www.box2d.org/index.html Архивировано из первоисточника 24 октября 2007].
  2. [box2d.org/2014/04/box2d-v2-3-1-released/ Box2D 2.3.1 Released]
  3. Erin Catto. [www.box2d.org/forum/viewtopic.php?f=2&t=4739 Box2D 2.1.0 Released] (англ.). Официальный сайт Box2D (3 апреля 2010 года). Проверено 17 апреля 2010. [www.webcitation.org/678Ml0oJ8 Архивировано из первоисточника 23 апреля 2012].
  4. [www.uraldev.ru/news/id/1863 Box2D 2.1.0]. UralDev.ru (5 апреля 2010 года). Проверено 17 апреля 2010. [www.webcitation.org/678MlY40k Архивировано из первоисточника 23 апреля 2012].
  5. Erin Catto. [www.jbox2d.org/ JBox2D] (англ.). JBox2D.org. Проверено 2 апреля 2010. [www.webcitation.org/678Mmi2Bf Архивировано из первоисточника 23 апреля 2012].
  6. [box2dflash.sourceforge.net/ Box2DFlashAS3 2.0.1] (англ.). SourceForge.net. Проверено 2 апреля 2010. [www.webcitation.org/678MnAbU0 Архивировано из первоисточника 23 апреля 2012].
  7. [code.google.com/p/physaxe/ haXe Physics Engine] (англ.). code.google.com. Проверено 2 апреля 2010. [www.webcitation.org/678Mnd0tx Архивировано из первоисточника 23 апреля 2012].
  8. [code.google.com/p/box2dx/ Box2DX on Google Code] (англ.). code.google.com. Проверено 2 апреля 2010. [www.webcitation.org/678Mo2XyB Архивировано из первоисточника 23 апреля 2012].
  9. [box2d-js.sourceforge.net/ Box2D JS] (англ.). SourceForge.net. Проверено 2 апреля 2010. [www.webcitation.org/678MoRg4s Архивировано из первоисточника 23 апреля 2012].
  10. [www.dsource.org/projects/blaze Blaze on dsource] (англ.). dsource.org. Проверено 2 апреля 2010. [www.webcitation.org/678MouHSJ Архивировано из первоисточника 23 апреля 2012].
  11. [sourceforge.net/projects/box2d-delphi Box2D Delphi version] (англ.). SourceForge.net. Проверено 3 июня 2010. [www.webcitation.org/678MpSe40 Архивировано из первоисточника 23 апреля 2012].
  12. [code.google.com/p/pybox2d/ Pybox2d on Google Code] (англ.). Проверено 2 апреля 2010. [www.webcitation.org/678Mq73pF Архивировано из первоисточника 23 апреля 2012].
  13. Centaur Mich. [www.torquepowered.com/community/blogs/view/18641 Torque 2D Development Blog] (англ.). Проверено 2 апреля 2010.
  14. Erin Catto. [www.box2d.org/manual.html Box2D Manual] (англ.). box2d.org. Проверено 2 апреля 2010. [www.webcitation.org/678Mqx6Gq Архивировано из первоисточника 23 апреля 2012].
  15. [www.box2d.org/downloads Box2D Lite on Game Physics Weblog]
  16. [code.google.com/p/chipmunk-physics/ Chipmunk on Google Code] (англ.). code.google.com. Проверено 2 апреля 2010. [www.webcitation.org/678MrgEmT Архивировано из первоисточника 23 апреля 2012].
  17. [www.cokeandcode.com/phys2d/ Phys2D engine website] (англ.). cokeandcode.com. Проверено 2 апреля 2010. [www.webcitation.org/678Ms9VEt Архивировано из первоисточника 23 апреля 2012].

Ссылки

  • [www.box2d.org/ Официальный сайт Box2D]
  • [www.box2d.org/manual.html Box2D User Manual] ([www.gamedev.ru/files/?id=85998 Box2D v2.0.2 Руководство])
  • [docforge.com/wiki/Box2D Box2D Community Wiki]
  • [www.youtube.com/watch?v=-eJXg2tGcyM Видеоурок Box2D]

Отрывок, характеризующий Box2D

Ростов с Денисовым повезли раненого Долохова.
Долохов, молча, с закрытыми глазами, лежал в санях и ни слова не отвечал на вопросы, которые ему делали; но, въехав в Москву, он вдруг очнулся и, с трудом приподняв голову, взял за руку сидевшего подле себя Ростова. Ростова поразило совершенно изменившееся и неожиданно восторженно нежное выражение лица Долохова.
– Ну, что? как ты чувствуешь себя? – спросил Ростов.
– Скверно! но не в том дело. Друг мой, – сказал Долохов прерывающимся голосом, – где мы? Мы в Москве, я знаю. Я ничего, но я убил ее, убил… Она не перенесет этого. Она не перенесет…
– Кто? – спросил Ростов.
– Мать моя. Моя мать, мой ангел, мой обожаемый ангел, мать, – и Долохов заплакал, сжимая руку Ростова. Когда он несколько успокоился, он объяснил Ростову, что живет с матерью, что ежели мать увидит его умирающим, она не перенесет этого. Он умолял Ростова ехать к ней и приготовить ее.
Ростов поехал вперед исполнять поручение, и к великому удивлению своему узнал, что Долохов, этот буян, бретёр Долохов жил в Москве с старушкой матерью и горбатой сестрой, и был самый нежный сын и брат.


Пьер в последнее время редко виделся с женою с глазу на глаз. И в Петербурге, и в Москве дом их постоянно бывал полон гостями. В следующую ночь после дуэли, он, как и часто делал, не пошел в спальню, а остался в своем огромном, отцовском кабинете, в том самом, в котором умер граф Безухий.
Он прилег на диван и хотел заснуть, для того чтобы забыть всё, что было с ним, но он не мог этого сделать. Такая буря чувств, мыслей, воспоминаний вдруг поднялась в его душе, что он не только не мог спать, но не мог сидеть на месте и должен был вскочить с дивана и быстрыми шагами ходить по комнате. То ему представлялась она в первое время после женитьбы, с открытыми плечами и усталым, страстным взглядом, и тотчас же рядом с нею представлялось красивое, наглое и твердо насмешливое лицо Долохова, каким оно было на обеде, и то же лицо Долохова, бледное, дрожащее и страдающее, каким оно было, когда он повернулся и упал на снег.
«Что ж было? – спрашивал он сам себя. – Я убил любовника , да, убил любовника своей жены. Да, это было. Отчего? Как я дошел до этого? – Оттого, что ты женился на ней, – отвечал внутренний голос.
«Но в чем же я виноват? – спрашивал он. – В том, что ты женился не любя ее, в том, что ты обманул и себя и ее, – и ему живо представилась та минута после ужина у князя Василья, когда он сказал эти невыходившие из него слова: „Je vous aime“. [Я вас люблю.] Всё от этого! Я и тогда чувствовал, думал он, я чувствовал тогда, что это было не то, что я не имел на это права. Так и вышло». Он вспомнил медовый месяц, и покраснел при этом воспоминании. Особенно живо, оскорбительно и постыдно было для него воспоминание о том, как однажды, вскоре после своей женитьбы, он в 12 м часу дня, в шелковом халате пришел из спальни в кабинет, и в кабинете застал главного управляющего, который почтительно поклонился, поглядел на лицо Пьера, на его халат и слегка улыбнулся, как бы выражая этой улыбкой почтительное сочувствие счастию своего принципала.
«А сколько раз я гордился ею, гордился ее величавой красотой, ее светским тактом, думал он; гордился тем своим домом, в котором она принимала весь Петербург, гордился ее неприступностью и красотой. Так вот чем я гордился?! Я тогда думал, что не понимаю ее. Как часто, вдумываясь в ее характер, я говорил себе, что я виноват, что не понимаю ее, не понимаю этого всегдашнего спокойствия, удовлетворенности и отсутствия всяких пристрастий и желаний, а вся разгадка была в том страшном слове, что она развратная женщина: сказал себе это страшное слово, и всё стало ясно!
«Анатоль ездил к ней занимать у нее денег и целовал ее в голые плечи. Она не давала ему денег, но позволяла целовать себя. Отец, шутя, возбуждал ее ревность; она с спокойной улыбкой говорила, что она не так глупа, чтобы быть ревнивой: пусть делает, что хочет, говорила она про меня. Я спросил у нее однажды, не чувствует ли она признаков беременности. Она засмеялась презрительно и сказала, что она не дура, чтобы желать иметь детей, и что от меня детей у нее не будет».
Потом он вспомнил грубость, ясность ее мыслей и вульгарность выражений, свойственных ей, несмотря на ее воспитание в высшем аристократическом кругу. «Я не какая нибудь дура… поди сам попробуй… allez vous promener», [убирайся,] говорила она. Часто, глядя на ее успех в глазах старых и молодых мужчин и женщин, Пьер не мог понять, отчего он не любил ее. Да я никогда не любил ее, говорил себе Пьер; я знал, что она развратная женщина, повторял он сам себе, но не смел признаться в этом.
И теперь Долохов, вот он сидит на снегу и насильно улыбается, и умирает, может быть, притворным каким то молодечеством отвечая на мое раскаянье!»
Пьер был один из тех людей, которые, несмотря на свою внешнюю, так называемую слабость характера, не ищут поверенного для своего горя. Он переработывал один в себе свое горе.
«Она во всем, во всем она одна виновата, – говорил он сам себе; – но что ж из этого? Зачем я себя связал с нею, зачем я ей сказал этот: „Je vous aime“, [Я вас люблю?] который был ложь и еще хуже чем ложь, говорил он сам себе. Я виноват и должен нести… Что? Позор имени, несчастие жизни? Э, всё вздор, – подумал он, – и позор имени, и честь, всё условно, всё независимо от меня.
«Людовика XVI казнили за то, что они говорили, что он был бесчестен и преступник (пришло Пьеру в голову), и они были правы с своей точки зрения, так же как правы и те, которые за него умирали мученической смертью и причисляли его к лику святых. Потом Робеспьера казнили за то, что он был деспот. Кто прав, кто виноват? Никто. А жив и живи: завтра умрешь, как мог я умереть час тому назад. И стоит ли того мучиться, когда жить остается одну секунду в сравнении с вечностью? – Но в ту минуту, как он считал себя успокоенным такого рода рассуждениями, ему вдруг представлялась она и в те минуты, когда он сильнее всего выказывал ей свою неискреннюю любовь, и он чувствовал прилив крови к сердцу, и должен был опять вставать, двигаться, и ломать, и рвать попадающиеся ему под руки вещи. «Зачем я сказал ей: „Je vous aime?“ все повторял он сам себе. И повторив 10 й раз этот вопрос, ему пришло в голову Мольерово: mais que diable allait il faire dans cette galere? [но за каким чортом понесло его на эту галеру?] и он засмеялся сам над собою.
Ночью он позвал камердинера и велел укладываться, чтоб ехать в Петербург. Он не мог оставаться с ней под одной кровлей. Он не мог представить себе, как бы он стал теперь говорить с ней. Он решил, что завтра он уедет и оставит ей письмо, в котором объявит ей свое намерение навсегда разлучиться с нею.