Première version du moteur de jeu multijoueur open source Ambient

Après un an de développement, la première version du nouveau moteur de jeu open source Ambient est présentée. Le moteur fournit un environnement d'exécution pour créer des jeux multijoueurs et des applications 3D qui se compilent en une représentation WebAssembly et utilisent l'API WebGPU pour le rendu. Le code est écrit en Rust et est distribué sous licence MIT.

L'un des objectifs clés du développement d'Ambient est de fournir des outils qui simplifient le développement de jeux multijoueurs et rendent leur création pas plus difficile que les projets solo. Le moteur vise initialement à créer un runtime universel prenant en charge le développement de jeux et d'applications dans tous les langages de programmation pour lesquels la compilation dans le code intermédiaire WebAssembly est possible. Cependant, la première version ne prend en charge pour l’instant que le développement de Rust.

Principales caractéristiques du nouveau moteur :

  • Prise en charge de réseau transparent. Le moteur combine les fonctions client et serveur, fournit tous les composants nécessaires à la création d'une logique client et serveur et synchronise automatiquement l'état du serveur entre les clients. Un modèle de données commun est utilisé côté client et côté serveur, ce qui simplifie le transfert de code entre le backend et le frontend.
  • Exécuter chaque module dans son propre environnement isolé, vous permettant de limiter l'influence d'un code non fiable. Le crash d'un module ne plante pas l'ensemble de l'application.
  • Architecture orientée données. Fournir un modèle de données basé sur un système de composants pouvant être manipulés par chaque module WASM. Utilisation du modèle de conception ECS (Entity Component System). Stockage des données de tous les composants dans une base de données centralisée sur le serveur, dont l'état est automatiquement répliqué vers le client, qui de son côté peut étendre les données en tenant compte de l'état local.
  • Possibilité de créer des modules Ambient dans n'importe quel langage de programmation compilé en WebAssembly (seul Rust est pris en charge pour l'instant).
  • Génération de fichiers exécutables universels en sortie pouvant s'exécuter sous Windows, macOS et Linux, et fonctionner à la fois en tant que client et serveur.
  • Capacité à définir vos propres composants et « concepts » (collections de composants). Les projets qui utilisent les mêmes composants et concepts permettent la portabilité et le partage des données, même si les données ne sont pas spécifiquement conçues pour être utilisées dans des projets spécifiques.
  • Prise en charge de la compilation de ressources dans divers formats, notamment .glb et .fbx. Possibilité de téléchargement en streaming de ressources sur le réseau - le client peut recevoir toutes les ressources nécessaires lors de la connexion au serveur (vous pouvez commencer à jouer sans attendre que toutes les ressources se chargent). Prend en charge les formats de modèles FBX et glTF, divers formats audio et image.
  • Un système de rendu avancé qui utilise le GPU pour accélérer le rendu et prend en charge le découpage côté GPU et les changements de niveau de détail. Utilise le rendu basé sur la physique (PBR) par défaut, prend en charge l'animation et les cartes d'ombres en cascade.
  • Prise en charge de la simulation de processus physiques basée sur le moteur PhysX.
  • Un système pour créer des interfaces utilisateur similaires à React.
  • Un système de saisie unifié et indépendant de la plateforme actuelle.
  • Système de sonorisation spatiale avec filtres enfichables.

Le développement est encore au stade de la version alpha. Parmi les fonctionnalités non encore implémentées, on peut noter la possibilité d'exécuter sur le Web, une API client, une API de gestion du multithreading, une bibliothèque de création d'interface utilisateur, une API d'utilisation de ses propres shaders, le support du son, le chargement et la sauvegarde. Composants ECS (Entity Component System), rechargement des ressources à la volée, mise à l'échelle automatique du serveur, éditeur de création collaborative de cartes de jeu et de scènes de jeu.



Source: opennet.ru

Ajouter un commentaire