Die erste Veröffentlichung der offenen Mehrspieler-Spiel-Engine Ambient.

Nach einem Jahr Entwicklung wurde die erste Ausgabe der neuen offenen Spiele-Engine Ambient vorgestellt. Die Engine bietet zur Laufzeit die Möglichkeit, Mehrspieler-Spiele und 3D-Anwendungen zu erstellen, die in das WebAssembly-Format kompiliert werden und die WebGPU-API zum Rendering nutzen. Der Code ist in der Programmiersprache Rust geschrieben und steht unter der MIT-Lizenz.

Die Schlüsselaufgabe bei der Entwicklung von Ambient besteht darin, Werkzeuge bereitzustellen, die die Entwicklung von Mehrspieler-Spielen vereinfachen und deren Erstellung nicht schwieriger machen als bei Einzelspielerprojekten. Die Engine ist ursprünglich darauf ausgelegt, eine universelle Laufzeitumgebung zu schaffen, die die Entwicklung von Spielen und Anwendungen in beliebigen Programmiersprachen unterstützt, die in Zwischen-Bytecode für WebAssembly kompiliert werden können. Im ersten Release wird jedoch zunächst nur die Entwicklung in Rust unterstützt.

Die wichtigsten Funktionen der neuen Engine:

  • Transparente Unterstützung für Netzwerkinteraktionen. Die Engine vereint die Funktionen von Client und Server, stellt alle erforderlichen Komponenten für die Erstellung von Client- und Server-Logik bereit und synchronisiert automatisch den Zustand des Servers mit den Clients. Sowohl der Client als auch der Server verwenden ein gemeinsames Datenmodell, was den Code-Transfer zwischen Backend und Frontend erleichtert.
  • Der Start jedes Moduls in seiner isolierten Umgebung, die den Einfluss von nicht vertrauenswürdigem Code begrenzt. Ein plötzlicher Absturz eines Moduls führt nicht zum Absturz der gesamten Anwendung.
  • Eine datenzentrierte Architektur (Data-oriented). Bereitstellung eines Datenmodells auf Basis eines Komponentensystems, mit dem jeder WASM-Modul arbeiten kann. Verwendung des Entwurfsmusters ECS (Entity Component System). Speicherung der Daten aller Komponenten in einer zentralen Datenbank auf Server, deren Zustand automatisch an den Client repliziert wird, der auf seiner Seite die Daten unter Berücksichtigung des lokalen Zustands erweitern kann.
  • Die Möglichkeit, Ambient-Module in beliebigen Programmiersprachen zu erstellen, die in WebAssembly kompiliert werden (momentan wird nur Rust unterstützt).
  • Die Ausgabe allgemeiner ausführbarer Dateien, die unter Windows, macOS und Linux ausgeführt werden können und sowohl als Client als auch als Server fungieren.
  • Möglichkeit zur Definition eigener Komponenten und „Konzepte“ (Kollektionen von Komponenten). In Projekten, die die gleichen Komponenten und Konzepte nutzen, wird die Portabilität und gemeinsame Nutzung von Daten gewährleistet, selbst wenn diese Daten nicht speziell für die Verwendung in bestimmten Projekten ausgelegt sind.
  • Unterstützung der Kompilierung von Ressourcen in verschiedenen Formaten, einschließlich .glb und .fbx. Möglichkeit des Streamings von Ressourcen über das Netzwerk – der Client kann alle benötigten Ressourcen beim Verbinden mit dem Server abrufen (man kann spielen, bevor alle Ressourcen geladen sind). Es werden die Modelformate FBX und glTF sowie verschiedene Audio- und Bildformate unterstützt.
  • Fortschrittliches Rendering-System, das die GPU zur Beschleunigung der Ausgabe nutzt und die Sichtzonen-Zuschnitt und Level-of-Detail-Wechsel auf der GPU-Seite unterstützt. Standardmäßig wird physikalisch korrektes Rendering (PBR) genutzt, mit Unterstützung für Animationen und kaskadierte Schattenkarten.
  • Unterstützung der Simulation physikalischer Prozesse auf Basis der PhysX-Engine.
  • Benutzerschnittstellensystem ähnlich wie React.
  • Einheitliches Eingabesystem, unabhängig von der aktuellen Plattform.
  • System für räumlichen Klang mit anschlussfähigen Filtern.

Die Entwicklung befindet sich derzeit in der Alpha-Version. Von der noch nicht implementierten Funktionalität kann die Möglichkeit erwähnt werden, im Web zu starten, clientseitige API, API zur Verwaltung von Multithreading, Bibliothek zur Erstellung von Benutzerschnittstellen, API zur Verwendung eigener Shader, Unterstützung von Audio, Laden und Speichern von ECS-Komponenten (Entity Component System), dynamisches Nachladen von Ressourcen und automatisches Skalieren. Server, ein Editor zur gemeinsamen Erstellung von Spielkarten und Spielszenen.

Video abspielen


Quelle: opennet.ru
60GB SSD 8Gb DDR4