Pāriet uz saturu

Box2D

Vikipēdijas lapa
Box2D
Izstrādātājs Rovio Entertainment
Sākotnējā versija 2007. gada 11. septembrī
Stabilā versija 2.3.1 / 2014. gada 5. aprīlī[1]
Progr. valoda C++
Operētājsistēma OS independent
Veids Middleware
Licence zlib[2]
Repozitorijs Labot šo Vikidatos
Tīmekļa vietne www.box2d.org

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.

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

[labot šo sadaļu | labot pirmkodu]
  • 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.

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

[labot šo sadaļu | labot pirmkodu]
Objektu veidošanas hierarhija

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

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

Pieejamība starp citām platformām

[labot šo sadaļu | labot pirmkodu]

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

[labot šo sadaļu | labot pirmkodu]
  • 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.
  1. Erin Catto. «Release v2.3.1: Version 2.3.1 · erincatto/Box2D». GitHub.
  2. «Box2D». Box2D.