Box2D
Box2D | |
---|---|
![]() | |
Тип | Физический движок |
Разработчик | Эрин Катто (англ. Erin Catto) |
Поддерживаемая ОС | не зависит от ОС |
Написан на языке | c++ |
Лицензия | MIT[1] |
Последняя версия | 2.4.1[2] / 18 октября 2020 года |
box2d.org |
Box2D — компьютерная программа, свободный открытый физический движок. Box2D является физическим движком реального времени и предназначен для работы с двумерными физическими объектами. Движок разработан Эрином Катто (англ. Erin Catto), написан на языке программирования C++ и распространяется на условиях лицензии MIT.
Движок используется в двумерных компьютерных играх, среди которых Duet, Angry Birds, Limbo, Crayon Physics Deluxe, Rolando, Fantastic Contraption, Incredibots, Transformice, Happy Wheels, Color Infection, Shovel Knight, King of Thieves.
История[править | править код]
Первая версия 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 Flash (в ActionScript[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.
Примечания[править | править код]
- ↑ Erin Catto. Box2D Main Page (англ.) (недоступная ссылка). box2d.org (9 октября 2007 года). Дата обращения: 2 апреля 2010. Архивировано 24 октября 2007 года.
- ↑ Box2D 2.3.1 Released (недоступная ссылка). Дата обращения: 9 августа 2014. Архивировано 10 августа 2014 года.
- ↑ Erin Catto. Box2D 2.1.0 Released (англ.) (недоступная ссылка). Официальный сайт Box2D (3 апреля 2010). Дата обращения: 17 апреля 2010. Архивировано 23 апреля 2012 года.
- ↑ Box2D 2.1.0 (недоступная ссылка). UralDev.ru (5 апреля 2010). Дата обращения: 16 апреля 2010. Архивировано 23 апреля 2012 года.
- ↑ Erin Catto. JBox2D (англ.) (недоступная ссылка). JBox2D.org. Дата обращения: 2 апреля 2010. Архивировано 23 апреля 2012 года.
- ↑ Box2DFlashAS3 2.0.1 (англ.) (недоступная ссылка). SourceForge.net. Дата обращения: 2 апреля 2010. Архивировано 23 апреля 2012 года.
- ↑ haXe Physics Engine (англ.) (недоступная ссылка). code.google.com. Дата обращения: 2 апреля 2010. Архивировано 23 апреля 2012 года.
- ↑ Box2DX on Google Code (англ.) (недоступная ссылка). code.google.com. Дата обращения: 2 апреля 2010. Архивировано 23 апреля 2012 года.
- ↑ Box2D JS (англ.) (недоступная ссылка). SourceForge.net. Дата обращения: 2 апреля 2010. Архивировано 23 апреля 2012 года.
- ↑ Blaze on dsource (англ.) (недоступная ссылка). dsource.org. Дата обращения: 2 апреля 2010. Архивировано 23 апреля 2012 года.
- ↑ Box2D Delphi version (англ.) (недоступная ссылка). SourceForge.net. Дата обращения: 3 июня 2010. Архивировано 23 апреля 2012 года.
- ↑ Pybox2d on Google Code (англ.) (недоступная ссылка). Дата обращения: 2 апреля 2010. Архивировано 23 апреля 2012 года.
- ↑ Centaur Mich. Torque 2D Development Blog (англ.). Дата обращения: 2 апреля 2010.
- ↑ Erin Catto. Box2D Manual (англ.) (недоступная ссылка). box2d.org. Дата обращения: 2 апреля 2010. Архивировано 23 апреля 2012 года.
- ↑ Box2D Lite on Game Physics Weblog (недоступная ссылка). Дата обращения: 17 апреля 2010. Архивировано 30 марта 2014 года.
- ↑ Chipmunk on Google Code (англ.) (недоступная ссылка). code.google.com. Дата обращения: 2 апреля 2010. Архивировано 23 апреля 2012 года.
- ↑ Phys2D engine website (англ.) (недоступная ссылка). cokeandcode.com. Дата обращения: 2 апреля 2010. Архивировано 23 апреля 2012 года.