Erste Veröffentlichung der Open-Source-Multiplayer-Game-Engine Ambient

Nach einem Jahr Entwicklungszeit wird das erste Release der neuen Open-Source-Game-Engine Ambient vorgestellt. Die Engine bietet eine Laufzeit zum Erstellen von Multiplayer-Spielen und 3D-Anwendungen, die zu einer WebAssembly-Darstellung kompiliert werden und die WebGPU-API zum Rendern verwenden. Der Code ist in Rust geschrieben und wird unter der MIT-Lizenz vertrieben.

Ein Hauptziel bei der Entwicklung von Ambient ist die Bereitstellung von Tools, die die Entwicklung von Multiplayer-Spielen vereinfachen und deren Erstellung nicht schwieriger machen als Einzelspieler-Projekte. Ziel der Engine ist zunächst die Schaffung einer universellen Laufzeit, die die Entwicklung von Spielen und Anwendungen in allen Programmiersprachen unterstützt, für die eine Kompilierung in WebAssembly-Zwischencode möglich ist. Allerdings unterstützt die erste Version vorerst nur die Rust-Entwicklung.

Hauptmerkmale des neuen Motors:

  • Transparente Netzwerkunterstützung. Die Engine kombiniert Client- und Serverfunktionen, stellt alle notwendigen Komponenten zum Erstellen von Client- und Serverlogik bereit und synchronisiert den Serverstatus automatisch über alle Clients hinweg. Auf Client- und Serverseite wird ein gemeinsames Datenmodell verwendet, was die Übertragung von Code zwischen Backend und Frontend vereinfacht.
  • Führen Sie jedes Modul in einer eigenen isolierten Umgebung aus, sodass Sie den Einfluss nicht vertrauenswürdigen Codes begrenzen können. Der Absturz eines Moduls führt nicht zum Absturz der gesamten Anwendung.
  • Datenorientierte Architektur. Bereitstellung eines Datenmodells basierend auf einem Komponentensystem, das von jedem WASM-Modul manipuliert werden kann. Verwendung des ECS-Entwurfsmusters (Entity Component System). Speicherung der Daten aller Komponenten in einer zentralen Datenbank auf dem Server, deren Zustand automatisch an den Client repliziert wird, der seinerseits die Daten unter Berücksichtigung des lokalen Zustands erweitern kann.
  • Möglichkeit, Ambient-Module in jeder Programmiersprache zu erstellen, die zu WebAssembly kompiliert wird (derzeit wird nur Rust unterstützt).
  • Generieren universeller ausführbarer Dateien als Ausgabe, die unter Windows, macOS und Linux ausgeführt werden können und sowohl als Client als auch als Server fungieren.
  • Fähigkeit, eigene Komponenten und „Konzepte“ (Komponentensammlungen) zu definieren. Projekte, die dieselben Komponenten und Konzepte verwenden, ermöglichen die Portabilität und gemeinsame Nutzung von Daten, auch wenn die Daten nicht speziell für die Verwendung in bestimmten Projekten konzipiert sind.
  • Unterstützung für das Kompilieren von Ressourcen in verschiedenen Formaten, einschließlich .glb und .fbx. Möglichkeit des Streaming-Downloads von Ressourcen über das Netzwerk – der Client kann alle erforderlichen Ressourcen erhalten, wenn er sich mit dem Server verbindet (Sie können mit dem Spielen beginnen, ohne darauf warten zu müssen, dass alle Ressourcen geladen sind). Unterstützt die Modellformate FBX und glTF sowie verschiedene Audio- und Bildformate.
  • Ein fortschrittliches Rendering-System, das die GPU nutzt, um das Rendering zu beschleunigen und GPU-seitiges Clipping und Detailstufenänderungen unterstützt. Verwendet standardmäßig Physical Based Rendering (PBR) und unterstützt Animationen und kaskadierende Schattenkarten.
  • Unterstützung für die Simulation physikalischer Prozesse basierend auf der PhysX-Engine.
  • Ein System zum Erstellen von Benutzeroberflächen ähnlich wie React.
  • Ein einheitliches Eingabesystem, das unabhängig von der aktuellen Plattform ist.
  • Räumliches Soundsystem mit Steckfiltern.

Die Entwicklung befindet sich noch im Alpha-Versionsstadium. Zu den noch nicht implementierten Funktionen zählen die Möglichkeit zur Ausführung im Web, eine Client-API, eine API zur Verwaltung von Multithreading, eine Bibliothek zum Erstellen einer Benutzeroberfläche, eine API zur Verwendung eigener Shader, solide Unterstützung, Laden und Speichern ECS-Komponenten (Entity Component System), Nachladen von Ressourcen im laufenden Betrieb, automatische Serverskalierung, Editor zur kollaborativen Erstellung von Spielkarten und Spielszenen.



Source: opennet.ru

Kommentar hinzufügen