Erin Catto, a szerzője a Box2D projektnek, bejelentette a Box3D új fizikális szimulációs motor létrehozását, amely a Box2D forkja, hasonló architektúrával, de átdolgozva és kibővítve a háromdimenziós játékokhoz való használatra. A projekt kódja C nyelven íródott, és MIT licenc alatt kerül forgalomba. Támogatott a Linux, Windows és macOS verziók.
A Box3D motort a Kintsugiyama stúdió fejlesztette ki az új 3D-s lövöldözős játék, a The Legend of California keretein belül, amelyben Erin is részt vesz. A játék fejlesztéséhez az Unreal Engine játékmotort használják, de a fejlesztőket nem elégítette ki a Chaos nevű beépített fizikai motor. Problémák merültek fel a giroszkópos forgatónyomatékok figyelembevételének hiánya miatt (a vékony tárgyak természetellenesen hosszú időn keresztül forogtak), a folyamatos ütközésészlelés miatt (a zuhanó fák nem reálisan viselkedtek), valamint az alacsony teljesítmény a számos objektum feldolgozása során.
Eleinte a Jolt fizikai motor forkának létrehozásával terveztek megoldani a problémákat, de később, a Half-Life játékban részt vevő Rubikon motor alkotójának tanácsára, a Rubikon-Lite néven ismert egyszerűsített változat fejlesztése került előtérbe, amelyet hobbi célokra dolgoztak ki, és átdolgozták a Box2D kód és optimalizálások felhasználásával, hogy a már meglévő 3D-s lehetőségeket össze lehessen hangolni a Box2D motor megoldásaival. Ennek eredményeként a Rubikon-Lite szinte minden API, adatstruktúra és algoritmus a Box2D kódjára cserélődött, míg a Rubikon-Lite-ból csupán a konvex burkolat és a 3D ütközések feldolgozására vonatkozó algoritmusok maradtak meg. A kapott motort, a Rubikon-Lite szerzőjének és a Kintsugiyama cégnek a tudtával, külön nyílt projektként, Box3D néven döntöttek a publikálás mellett.
Jelenleg megjelent a Box3D 0.1 első kiadása, amelyet alfa verziónak minősítettek. A főbb tervezett funkciók megvalósultak, de a dokumentációt és tesztelést még fejleszteni kell. A The Legend of California játék mellett az új motor már bejárta a s&box játékplatformot, az Esoterica nyílt játékmotorját, és egy többjátékos űrhajós játékot, a Space Game-t, amely 1000 játékos számára készült.
Az új motorban a 3D játékokhoz olyan funkciók kerültek bevezetésre, mint a poligonhálós (mesh) ütközések és a magassági térképek számítása, amelyek a táj generálásakor használatosak. Ez lehetővé tette, hogy a The Legend of California játékban valósághű fák leesési effektusait valósítsák meg a voxeles felületeken. Hozzáadódott a már előre számított (baked) összetett ütközések támogatása is, amely több egyszerű forma összevonásával érhető el, jelentősen csökkentve az erőforrás-igényt a számos típusú kis objektum ütközéseinek szimulációjánál.
A Box2D-ből átvitt Box3D funkciók közül:
- Folyamatos ütközésmeghatározás (az objektum mozgásának kezelése folyamatos pályaként), ütközések szűrése és események generálása az objektumok érintkezésekor. Gömbölyű, kapszula- és héjszerű formák támogatása az ütközések meghatározásához. Az objektumok érintkezésének feldolgozója optimalizálva lett SIMD utasításokkal.
- Sub-stepping Solver a szimulációs pontosság növelésére, amely a szimulációs lépéseket több kisebb lépcsőre osztja.
- Grafikus színezési módszer alkalmazása a kapcsolódó objektumok nagy csoportjainak feldolgozásához.
- Karakter vezérlő, amely a mozgás, ütközés és a karakter interakciójának kezeléséért felelős a környező objektumokkal.
- Sugártracing támogatás, formák követése és metszéspontok ellenőrzése a környező térszkennelés során. Szenzorrendszer az objektumok térbeli észlelésére.
- Soft Step Solver a kemény testek fizikájának számításához bonyolult interakciók során.
- Az inaktív vagy statikus objektumcsoportok állapotának fagyasztásának támogatása az erőforrások megtakarítása érdekében.
- Különféle kapcsolatok és kötések támogatása az objektumok között, beleértve a csuklókat, rugókat, motorokat, forrasztást és kerekeket, lehetővé téve minden egyes kapcsolat rugalmas beállítását. Az objektumok egymásra gyakorolt erőinek számítása, beleértve a nyomást és a feszítést.
- Események generálásának lehetősége, amikor egy objektum elkezd mozogni, megáll, vagy stabilizálódik.
- Hooks a többszálú feldolgozáshoz opcionális belső ütemezővel.
- Double típusú koordináták használata, amelyek lehetővé teszik hatalmas világok létrehozását.
- Keresztplatformos determinizmus, amely biztosítja az azonos eredményt különböző hardverplatformokon.
- A szimuláció rögzítésének és lejátszásának támogatása.
- C API és a C17 szabványnak megfelelő C kód.
A jövőbeli tervekből említést nyer a karaktermozgásokkal kapcsolatos lehetőségek bővítése, a 'szellemkollisionok' (ghost collision) megelőzésének mechanizmusának tökéletesítése, optimalizálások végrehajtása és a csatlakozási folyamat (joint solver) javítása. A repozitóriumban lehetőséget kívánnak biztosítani pull-kérelmek benyújtására a közösség képviselői által, miután aláírták a jogok átruházásáról szóló megállapodást (CLA).


Forrás: opennet.ru
