È stato presentato un 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 rappresenta un fork di Box2D, con la stessa architettura ma rivisitato e ampliato per l'uso in giochi tridimensionali. Il codice del progetto è scritto in linguaggio C e distribuito con licenza MIT. È disponibile una versione per Linux, Windows e macOS.

Il motore Box3D è stato creato durante lo sviluppo da parte dello studio Kintsugiyama del nuovo sparatutto 3D The Legend of California, a cui partecipa Erin. Nel gioco viene utilizzato il motore Unreal Engine, ma i programmatori non erano soddisfatti del motore fisico Chaos. Sono emersi problemi legati alla mancata considerazione dei momenti torcenti giroscopici (oggetti sottili ruotavano in modo innaturale), al rilevamento delle collisioni continuo (comportamento irrealistico degli alberi che cadono) e alle basse prestazioni nel processamento di centinaia di migliaia di oggetti.

Inizialmente si pensava di risolvere i problemi creando un fork del motore fisico Jolt, ma poi, seguendo il consiglio del creatore del motore Rubikon, coinvolto nel gioco Half-Life, si è deciso di basarsi su una versione semplificata di Rubikon-Lite, sviluppata come hobby, che è stata rivisitata utilizzando il codice e le ottimizzazioni di Box2D per combinare le funzionalità 3D con i progressi del motore Box2D. Alla fine, quasi tutte le API, le strutture dati e gli algoritmi in Rubikon-Lite sono stati sostituiti con codice di Box2D, rimanendo solo gli algoritmi per la costruzione dell'involucro convesso e la gestione delle collisioni 3D. Si è deciso di pubblicare il motore risultante come un progetto aperto separato, Box3D, con il consenso dell'autore di Rubikon-Lite e della società Kintsugiyama.

Attualmente è stata pubblicata la prima versione di Box3D 0.1, segnata come avente la qualità di una versione alfa. La funzionalità principale prevista è stata implementata, ma è necessario un ulteriore lavoro sulla documentazione e i test. Oltre al gioco The Legend of California, il nuovo motore è già utilizzato nella piattaforma di gioco s&box, nel motore di gioco aperto 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 la mesh poligonale e le mappe di altezza utilizzate nella generazione del paesaggio, che hanno permesso di realizzare nel gioco The Legend of California effetti realistici di caduta degli alberi su superfici voxel. È stata aggiunta la supporto per collisioni composite (baked) calcolate in precedenza, composte da più forme semplici, riducendo notevolmente il consumo di risorse nella simulazione delle collisioni di un numero enorme di oggetti di piccole dimensioni.

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

  • Determinazione continua delle collisioni (elaborazione del movimento dell'oggetto come una traiettoria continua), filtraggio delle collisioni e generazione di eventi al contatto tra oggetti. Supporto per forme sferiche, capsule e shell per la determinazione delle collisioni. Gestore di contatto degli oggetti ottimizzato tramite istruzioni SIMD.
  • Sub-stepping Solver per aumentare la precisione della simulazione suddividendo le fasi di simulazione in più passi più piccoli.
  • Utilizzo del metodo di colorazione dei grafi per elaborare grandi gruppi di oggetti correlati.
  • Controller del personaggio responsabile della gestione del movimento, delle collisioni e dell'interazione del personaggio con gli oggetti circostanti.
  • Supporto per il tracciamento dei raggi, il tracciamento delle forme e il controllo delle intersezioni durante la scansione dello spazio circostante. Sistema di sensori per la rilevazione degli 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 vincoli tra oggetti, inclusi giunti, molle, motori, saldature e ruote, con la possibilità di una configurazione flessibile di ogni collegamento. Calcolo delle forze di compressione e trazione con cui gli oggetti interagiscono tra loro.
  • Possibilità di generare eventi all'inizio del movimento, all'arresto o alla stabilizzazione dell'oggetto.
  • Hook per l'elaborazione multi-thread con un scheduler interno opzionale.
  • Utilizzo per coordinate di tipo double, consentendo di creare mondi enormi.
  • Determinismo multipiattaforma che garantisce risultati identici su diverse piattaforme hardware.
  • Supporto per la registrazione e la riproduzione delle simulazioni.
  • C API e codice C conforme agli standard C17.

Nei piani futuri è previsto l'ampliamento delle capacità legate ai movimenti dei personaggi, il miglioramento dei meccanismi per prevenire collisioni 'fantasma' e ottimizzazioni e miglioramenti nel trattamento delle giunture. Nel repository si intende fornire la possibilità di inviare pull request con modifiche da parte dei rappresentanti della comunità dopo la firma di un accordo di trasferimento dei diritti di proprietà sul codice (CLA).

Guarda il 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