Erin Catto, autorka projektu Box2D, oznámila vytvorenie nového fyzikálneho simulačného enginu Box3D, ktorý je forkom Box2D s identickou architektúrou, ale prepracovaným a rozšíreným pre použitie v 3D hrách. Kód projektu je napísaný v jazyku C a distribuovaný pod licenciou MIT. Kompilácia pre Linux, Windows и macOS.
Engine Box3D vznikol počas vývoja novej 3D strieľačky The Legend of California v štúdiách Kintsugiyama, kde Erin pracuje. Hra využíva Unreal Engine, ale vývojári neboli spokojní s jeho vstavaným fyzikálnym enginom Chaos. Problémy sa objavili s nedostatkom gyroskopického krútiaceho momentu (tenké objekty sa otáčali neprirodzene dlho), nepretržitou detekciou kolízií (nerealistické správanie padajúcich stromov) a slabým výkonom pri spracovaní státisícov objektov.
Spočiatku sa plánovalo, že problémy sa vyriešia vytvorením forku fyzikálneho enginu Jolt. Na základe rady tvorcu enginu Rubikon použitého v hre Half-Life však bola ako základ použitá zjednodušená verzia Rubikon-Lite, vyvinutá ako hobby. Bola prepracovaná pomocou kódu a optimalizácií z Box2D, aby sa skombinovali existujúce 3D možnosti s vývojom enginu Box2D. V dôsledku toho boli takmer všetky API, dátové štruktúry a algoritmy v Rubikon-Lite nahradené kódom z Box2D a z Rubikon-Lite zostali iba algoritmy na zostrojenie konvexného obalu a spracovanie 3D kolízií. So súhlasom autora Rubikon-Lite a Kintsugiyamu bolo rozhodnuté publikovať výsledný engine ako samostatný open-source projekt Box3D.
Prvá verzia Box3D 0.1 bola už publikovaná a považuje sa za alfa verziu. Základné funkcie boli implementované, ale stále je potrebná dokumentácia a testovanie. Okrem hry The Legend of California sa nový engine už používa v hernej platforme s&box, hernom engine s otvoreným zdrojovým kódom Esoterica a v multiplayerovej vesmírnej hre Space Game pre 1 000 hráčov.
Pre 3D hry nový engine pridáva funkcie, ako sú výpočty kolízií s polygonálnymi sieťami a výškovými mapami používanými pri generovaní terénu, čo umožňuje realistické efekty padajúcich stromov na voxelových povrchoch v hre The Legend of California. Bola pridaná podpora pre pečené kompozitné kolízie, zložené z niekoľkých jednoduchých tvarov, čo výrazne znižuje spotrebu zdrojov pri simulácii kolízií medzi veľkým počtom typických malých objektov.
Medzi funkcie, ktoré boli predtým dostupné v Box2D a ktoré boli prenesené do Box3D:
- Nepretržitá detekcia kolízií (spracovanie pohybu objektu ako spojitej trajektórie), filtrovanie kolízií a generovanie udalostí pri kontakte s objektom. Podpora guľových, kapsulových a škrupinových tvarov pre detekciu kolízií. Obsluha kolízií objektov optimalizovaná pre SIMD.
- Čiastkový riešiteľ na zlepšenie presnosti simulácie rozdelením krokov simulácie na niekoľko menších krokov.
- Použitie vyfarbovania grafov na spracovanie veľkých skupín súvisiacich objektov.
- Ovládač postavy zodpovedný za riadenie pohybu, kolízií a interakcií medzi postavou a okolitými objektmi.
- Podpora sledovania lúčov, sledovania tvarov a kontroly priesečníkov pri skenovaní okolitého priestoru. Senzorický systém na detekciu objektov v priestore.
- Mäkký krokový riešiteľ pre výpočet fyziky pevných látok so zložitými interakciami.
- Podpora pre zmrazenie stavu skupín neaktívnych alebo statických objektov s cieľom šetriť zdroje.
- Podpora rôznych typov spojení medzi objektmi vrátane pántov, pružín, motorov, zvarov a kolies s možnosťou flexibilnej konfigurácie každého spojenia. Výpočet tlakových a ťahových síl medzi objektmi.
- Možnosť generovania udalostí, keď sa objekt začne pohybovať, zastaví alebo stabilizuje.
- Hooky pre viacvláknové spracovanie s voliteľným interným plánovačom.
- Použitie súradníc dvojitého typu umožňuje vytváranie obrovských svetov.
- Multiplatformový determinizmus zabezpečuje rovnaké výsledky na rôznych hardvérových platformách.
- Podpora nahrávania a prehrávania simulácie.
- C API a kód C zodpovedajúci štandardu C17.
Budúce plány zahŕňajú rozšírenie možností pohybu postáv, vylepšenie mechanizmov prevencie kolízií s duchmi, implementáciu optimalizácií a vylepšenie spoločného riešiteľa. Repozitár má v úmysle umožniť členom komunity odosielať žiadosti o zmeny so zmenami po podpísaní dohody o vlastníctve kódu (CLA).


Zdroj: opennet.ru
