Box2D

Box2D ir atvērtā koda C++ dzinējs, kas imitē cietos ķermeņus 2D. Box2D izstrādā Erin Catto[1], un tam ir zlib licence. To izmanto Crayon Physics Deluxe, Limbo, Rolando, Incredibots, Angry Birds, Tiny Wings, Shovel Knight, Transformice, Happy Wheels un daudzās tiešsaistes flash spēlēs, kā arī iPhone, iPad un Android spēlēm izmantojot Cocos2d vai Moscrif spēļu dzinēju un Corona sistēmu.

Zīmēšanu Box2D neveic. Dažās implementācijās tiek zīmētas pavisam vienkāršas figūras atkļūdošanai, bet vispār box2D tikai sniedz objektu pozīcijas un rotāciju, un zīmēšana jāveic pašiem.

Vēsture 
Box2D[2] pirmo reizi tika izlaists kā "Box2D Lite", demonstrācijas dzinējs, ko papildināja fizikas prezentācija, kuru sniedza Erin Catto GDC 2006. gada 11. septembrī. 2010.gada 17.janvārī Box 2D pārvietoja projektu uz Google kodu, lai to uzturētu. 2015. gada 12. jūlijā atkal tika pārcelts hostings, šoreiz uz GitHub.

2008. gada 6. martā tika uzsākta versija 2.0, kas ieviesa nepārtrauktu papildināšanu un API atjaunošanu.

Box2D galvenās sastāvdaļas 

 World: Veic simulāciju. Zin visu par koordinātu telpu un satur sarakstu ar visiem pasaules objektiem
 Body: Galvenā simulējamo ķermeņu klase. Body objektiem ir pozīcija, rotācija un ātrums.
 Shape: Satur ģeometrijas aprakstu ķermeņiem, kas tiek izmantota sadursmēm (collisions).
 Fixture: Piestiprina ķermenim ģeometriju (shape) un satur īpašības, kā blīvums, berze un elastība/atgrūšana.
 Joint: Savienojums starp diviem ķermeņiem vai ķermeni un pasauli, piemēram atspere vai eņģe.

Ķermeņu tipi 

Box2D veic ierobežotu stingru ķermeņa simulāciju. Tā var simulēt ķermeņus, kas sastāv no izliektiem poligoniem, apļiem un malu formām. Ķermenis ir savienots kopā ar locītavām un darbojas ar spēkiem. Dzinējs izmanto arī smagumu, berzi un restitūciju. Šos ķermeņus iedala 3 tipos:

 b2Body.b2_staticBody
 Nekustīgs objekts, kas ietekmē citus ķermeņus
 b2Body.b2_dynamicBody
 Jebkurš kustinām objekts, kas piedalās fizikas simulācijā
 b2Body.b2_kinematicBody:
 Objekti, kam var būt ātrums, bet kas nepiedalās fizikas simulācijā, piemēram, mākoņi fonā.

Objektu izveidošana 

Lai izveidotu objektu nepieciešams izpildīt 5 soļus:

 Izveidot bodyDef objektu
 Balstoties uz bodyDef izveidot b2Body objektu
 Izveidot b2Shape objektu: b2PolygonShape, b2CircleShape
 Izveidot b2FixtureDef objektu un uzstādīt tam īpašības un b2Shape
 Piesaistīt b2Body objektam b2FixtureDef objektu un līdz ar to shape

Pieejamība starp citām platformām 
Box2D ir rakstīts neatkarīgi no platformas C ++ (izmantojams jebkurā sistēmā ar C ++ kompilatoru). Dzinējs var tikt sastādīts fiksētā un peldošā komata režīmā, un to izmantoja Nintendo DS, Wii un vairākos mobilajos tālruņos (ieskaitot Android, BlackBerry 10 un iOS), kā arī lielākajā daļā galveno operētājsistēmu.

Dzinējs ir pārnests uz daudzām citām programmēšanas valodām un vidēm, ieskaitot Java, Adobe Flash (ActionScript un Haxe valodās), C #, Lua, JavaScript, un D. Saistības pastāv, lai izmantotu apkopoto bibliotēku no Python un DarkBASIC.

2009. gada 30. oktobrī tika paziņots, ka Box2D tika integrēts (tagad vecāks) 2D spēļu dzinējs.

Programmas, kas izmanto Box2D 
 Construct2
 Isogenic Engine
 LÖVE, izmanto fizikas motoru spēlēm.
 ENIGMA Development Environment
 GameMaker: Studio, izmanto motoru fizikas simulācijai.
 Unity
 LibGDX, izmanto fizikas motoru spēlēm un apgaismojumu.
 Clickteam Fusion
 Defold, palaida spēli King 2016 gadā
 Corona SDK
 BlitzBasic
 Stencyl, izmanto fizikas motoru spēlēm un ļauj eksportēt uz Flash un iOS.

Atsauces 

Programmatūra