Ein neuer Physiksimulationsmotor namens Box3D wurde vorgestellt

Erin Catto, der Schöpfer des Box2D-Projekts, hat die Entwicklung einer neuen Physiksimulations-Engine, Box3D, angekündigt. Diese ist ein Fork von Box2D und verfügt über eine identische Architektur, wurde jedoch für den Einsatz in 3D-Spielen überarbeitet und erweitert. Der Code des Projekts ist in C geschrieben und wird unter der MIT-Lizenz veröffentlicht. Es gibt Unterstützung für Builds unter Linux, Windows und macOS.

Die Box3D-Engine wurde während der Entwicklung des neuen 3D-Shooters The Legend of California durch das Studio Kintsugiyama geschaffen, an dem auch Erin beteiligt ist. Im Spiel kommt die Unreal Engine zum Einsatz, jedoch waren die Entwickler mit der standardmäßigen Physik-Engine Chaos unzufrieden. Schwierigkeiten traten aufgrund von der fehlenden Berücksichtigung gyroskopischer Drehmomente auf (dünne Objekte drehten sich unnatural lange), der kontinuierlichen Kollisionserkennung (unrealistisches Verhalten fallender Bäume) und der niedrigen Leistung beim Verarbeiten von Hunderttausenden von Objekten.

Ursprünglich plante man, die Probleme durch einen Fork der physischen Engine Jolt zu lösen. Auf Empfehlung des Schöpfers der Engine Rubikon, der an dem Spiel Half-Life beteiligt war, wurde jedoch die vereinfachte Version Rubikon-Lite, die als Hobby entwickelt wurde, als Grundlage genommen. Diese wurde überarbeitet und nutzte Code und Optimierungen aus Box2D, um die vorhandenen 3D-Funktionen mit den Komponenten der Box2D-Engine zu kombinieren. Letztendlich wurden fast alle APIs, Datenstrukturen und Algorithmen in Rubikon-Lite durch Code aus Box2D ersetzt, während von Rubikon-Lite nur die Algorithmen zur Erstellung konvexer Hüllen und zur Verarbeitung von 3D-Kollisionen übrig blieben. Der resultierende Engine sollte mit dem Wissen des Autors von Rubikon-Lite und der Firma Kintsugiyama als separates Open-Source-Projekt Box3D veröffentlicht werden.

Derzeit wurde die erste Version von Box3D 0.1 veröffentlicht, die als Alpha-Qualität eingestuft ist. Die grundlegende geplante Funktionalität ist umgesetzt, doch die Dokumentation und Tests müssen noch überarbeitet werden. Neben dem Spiel The Legend of California wird die neue Engine bereits in der Spieleplattform s&box, der offenen Spielengine Esoterica und dem Mehrspieler-Raumspiel Space Game mit Platz für 1000 Spieler eingesetzt.

Für 3D-Spiele in der neuen Engine wurden Funktionen wie die Berechnung von Kollisionen mit polygonalen Netzen (Mesh) und Höhenkarten, die bei der Landschaftsgenerierung verwendet werden, hinzugefügt. Dadurch konnten in dem Spiel The Legend of California realistische Effekte wie das Fallen von Bäumen auf voxelbasierte Oberflächen realisiert werden. Es wurde Unterstützung für vorab berechnete (baked) zusammengesetzte Kollisionen integriert, die aus mehreren einfachen Formen bestehen und den Ressourcenverbrauch bei der Simulation von einer großen Anzahl typischer kleiner Objekte deutlich gesenkt haben.

Zu den in Box3D übertragenen Funktionen, die zuvor in Box2D vorhanden waren, gehören:

  • Kontinuierliche Kollisionsbestimmung (Behandlung der Bewegungen von Objekten als kontinuierliche Trajektorie), Kollisionsfilterung und Ereignisgenerierung bei Objektberührungen. Unterstützung für sphärische, kapselartige und schalenförmige Formen zur Kollisionsbestimmung. Ein für SIMD-Instruktionen optimierter Kollisionserkennungs-Handler.
  • Sub-Stepping Solver zur Verbesserung der Simulationsgenauigkeit durch Aufteilung der Simulationsphasen in mehrere kleinere Schritte.
  • Einsatz der Graphfärbemethode zur Verarbeitung großer Gruppen verbundener Objekte.
  • Charaktercontroller, der für die Verarbeitung von Bewegungen, Kollisionen und die Interaktion des Charakters mit seiner Umgebung verantwortlich ist.
  • Unterstützung von Raytracing, Formenverfolgung und Schnittprüfungen beim Scannen der Umgebung. Sensorsystem zur Objekterkennung im Raum.
  • Soft Step Solver zur Berechnung der Physik fester Körper bei komplexen Interaktionen.
  • Unterstützung der Festschreibung von Zuständen in Gruppen inaktiver oder statischer Objekte zur Ressourcenschonung.
  • Unterstützung verschiedener Verbindungen und Beziehungstypen zwischen Objekten, einschließlich Gelenken, Federn, Motoren, Schweißen und Rädern, mit flexibler Anpassungsmöglichkeit jeder Verbindung. Berechnung von Zug- und Druckkräften, die Objekte gegenseitig beeinflussen.
  • Möglichkeit zur Generierung von Ereignissen beim Starten, Stoppen oder Stabilisieren eines Objekts.
  • Hooks für die mehrthreadige Verarbeitung mit optionalem internem Scheduler.
  • Verwendung von Coordinaten des Typs double, die die Erstellung riesiger Welten ermöglichen.
  • Plattformübergreifender Determinismus, der identische Ergebnisse auf verschiedenen Hardwareplattformen gewährleistet.
  • Unterstützung für das Aufzeichnen und Abspielen von Simulationen.
  • C-API und C-Code, die dem C17-Standard entsprechen.

Zukünftige Pläne beinhalten die Erweiterung der Möglichkeiten im Zusammenhang mit den Bewegungen der Charaktere, die Verbesserung der Mechanismen zur Verhinderung von 'Geister' Kollisionen (ghost collision), die Durchführung von Optimierungen und die Verbesserung der Verarbeitung von Verbindungen (joint solver). Im Repository wird beabsichtigt, die Möglichkeit zur Einreichung von Pull-Requests mit Änderungen durch Mitglieder der Community nach Unterzeichnung eines Vereinbarung über die Übertragung von Eigentumsrechten am Code (CLA) bereitzustellen.

Video abspielen


Quelle: opennet.ru
Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster