È stato presentato il nuovo motore di simulazione dei processi fisici Box3D

Erin Catto, autore del progetto Box2D, ha annunciato la creazione di un nuovo motore di simulazione fisica, Box3D, che è un fork di Box2D, con un'architettura identica ma riprogettato e ampliato per l'uso in giochi in 3D. Il codice del progetto è scritto in linguaggio C e rilasciato sotto licenza MIT. È disponibile una build per Linux, Windows e macOS.

Il motore Box3D è stato sviluppato dallo studio Kintsugiyama per il nuovo sparatutto in 3D, The Legend of California, a cui lavora Erin. Nel gioco viene utilizzato il motore Unreal Engine, ma i sviluppatori non erano soddisfatti del motore fisico Chaos predefinito. Sono emersi problemi legati alla mancanza di considerazione dei momenti torsionali giroscopici (oggetti sottili ruotavano innaturalmente a lungo), rilevamento delle collisioni continuo (comportamento irrealistico degli alberi in caduta) e scarsa prestazione nella gestione di centinaia di migliaia di oggetti.

Inizialmente, i problemi erano previsti per essere risolti creando un fork del motore fisico Jolt, ma poi, su consiglio del creatore del motore Rubikon, coinvolto nel gioco Half-Life, è stato adottato un'alternativa semplificata sviluppata come hobby, Rubikon-Lite, che è stata rielaborata utilizzando codice e ottimizzazioni da Box2D per combinare le capacità 3D esistenti con le caratteristiche del motore Box2D. Alla fine, quasi tutte le API, le strutture dati e gli algoritmi in Rubikon-Lite sono stati sostituiti con codice da Box2D, mantenendo solo gli algoritmi per la costruzione dell'inviluppo convesso e la gestione delle collisioni 3D. Il motore risultante è stato deciso di essere pubblicato come progetto open source separato Box3D, con il consenso dell'autore di Rubikon-Lite e dell'azienda Kintsugiyama.

Attualmente, è stata pubblicata la prima versione di Box3D 0.1, contrassegnata come di qualità alpha. La funzionalità principale pianificata è stata implementata, ma è necessario completare la documentazione e il testing. Oltre al gioco The Legend of California, il nuovo motore è già utilizzato nella piattaforma di gioco s&box, nel motore di gioco open source Esoterica e nel gioco spaziale multiplayer Space Game, progettato per 1000 giocatori.

Per i giochi 3D nel nuovo motore sono state aggiunte funzionalità come il calcolo delle collisioni con una mesh poligonale e le mappe di altezza utilizzate per la generazione dei paesaggi, che hanno permesso di realizzare effetti realistici di caduta degli alberi su superfici voxel nel gioco The Legend of California. È stato aggiunto il supporto per le collisioni composte pre-calcolate, assemblate da forme semplici, che hanno significativamente ridotto il consumo di risorse durante la simulazione delle collisioni di un numero enorme di piccoli oggetti tipici.

Tra le funzionalità trasferite in Box3D, precedentemente presenti in Box2D:

  • Determinazione continua delle collisioni (trattamento del movimento dell'oggetto come un percorso continuo), filtraggio delle collisioni e generazione di eventi al contatto tra oggetti. Supporto per forme sferiche, capsule e shell per la determinazione delle collisioni. Gestore delle collisioni ottimizzato grazie alle istruzioni SIMD.
  • Sub-stepping Solver per aumentare la precisione della simulazione dividendo le fasi di simulazione in passaggi più piccoli.
  • L'uso del metodo di colorazione dei grafi per elaborare grandi gruppi di oggetti correlati.
  • Un controller del personaggio incaricato di gestire il movimento, le collisioni e l'interazione del personaggio con gli oggetti circostanti.
  • Supporto per il ray tracing, tracciamento delle forme e verifica delle intersezioni durante la scansione dell'ambiente circostante. Un sistema di sensori per rilevare oggetti nello spazio.
  • Soft Step Solver per il calcolo della fisica dei corpi rigidi durante interazioni complesse.
  • Supporto per il congelamento dello stato di gruppi di oggetti inattivi o statici per risparmiare risorse.
  • Supporto per vari collegamenti e tipi di relazioni tra oggetti, inclusi giunti, molle, motori, saldature e ruote, con la possibilità di una personalizzazione flessibile di ciascun collegamento. Calcolo delle forze di compressione e allungamento con cui gli oggetti interagiscono tra loro.
  • Possibilità di generare eventi all'avvio del movimento, arresto o stabilizzazione di un oggetto.
  • Hook per l'elaborazione multi-thread con un pianificatore interno opzionale.
  • Utilizzo di coordinate di tipo double, che consente di creare mondi enormi.
  • Determinismo multipiattaforma che garantisce risultati identici su diverse piattaforme hardware.
  • Supporto per la registrazione e riproduzione della simulazione.
  • API C e codice C conforme allo standard C17.

Tra i piani futuri si menzionano l'espansione delle capacità relative ai movimenti dei personaggi, il miglioramento dei meccanismi di prevenzione delle 'collisioni fantasma' (ghost collision), l'implementazione di ottimizzazioni e il miglioramento della gestione delle connessioni (joint solver). Nel repository si prevede di fornire la possibilità di inviare pull request con modifiche da parte dei membri della comunità dopo la firma di un accordo di trasferimento dei diritti patrimoniali sul codice (CLA).

Riproduci video


Fonte: opennet.ru
Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster