Prima versione del motore di gioco multiplayer open source Ambient

Dopo un anno di sviluppo, viene presentata la prima versione del nuovo motore di gioco open source Ambient. Il motore fornisce un runtime per la creazione di giochi multiplayer e applicazioni 3D che vengono compilati in una rappresentazione WebAssembly e utilizzano l'API WebGPU per il rendering. Il codice è scritto in Rust ed è distribuito sotto licenza MIT.

Un obiettivo chiave nello sviluppo di Ambient è fornire strumenti che semplifichino lo sviluppo di giochi multiplayer e rendano la loro creazione non più difficile dei progetti per giocatore singolo. Il motore è inizialmente finalizzato alla creazione di un runtime universale che supporti lo sviluppo di giochi e applicazioni in qualsiasi linguaggio di programmazione per il quale sia possibile la compilazione nel codice intermedio WebAssembly. Tuttavia, per ora la prima versione supporta solo lo sviluppo di Rust.

Caratteristiche principali del nuovo motore:

  • Supporto di rete trasparente. Il motore combina le funzioni client e server, fornisce tutti i componenti necessari per creare la logica client e server e sincronizza automaticamente lo stato del server tra i client. Sul lato client e sul lato server viene utilizzato un modello di dati comune, che semplifica il trasferimento del codice tra il backend e il frontend.
  • L'esecuzione di ciascun modulo nel proprio ambiente isolato consente di limitare l'influenza di codice non affidabile. Il crash di un modulo non provoca il crash dell'intera applicazione.
  • Architettura orientata ai dati. Fornire un modello di dati basato su un sistema di componenti che possono essere manipolati da ciascun modulo WASM. Utilizzando il modello di progettazione ECS (Entity Component System). Memorizzazione dei dati di tutti i componenti in un database centralizzato sul server, il cui stato viene automaticamente replicato al client, che da parte sua può espandere i dati tenendo conto dello stato locale.
  • Possibilità di creare moduli Ambient in qualsiasi linguaggio di programmazione compilabile in WebAssembly (per ora è supportato solo Rust).
  • Generazione di file eseguibili universali come output che possono essere eseguiti su Windows, macOS e Linux e funzionare sia come client che come server.
  • Capacità di definire i propri componenti e “concetti” (raccolte di componenti). I progetti che utilizzano gli stessi componenti e concetti consentono la portabilità e la condivisione dei dati, anche se i dati non sono specificatamente progettati per l'uso in progetti specifici.
  • Supporto per la compilazione di risorse in vari formati, inclusi .glb e .fbx. Possibilità di scaricare in streaming le risorse sulla rete: il client può ricevere tutte le risorse necessarie quando si connette al server (puoi iniziare a giocare senza attendere il caricamento di tutte le risorse). Supporta i formati dei modelli FBX e glTF, vari formati audio e immagini.
  • Un sistema di rendering avanzato che utilizza la GPU per accelerare il rendering e supporta il ritaglio lato GPU e le modifiche al livello di dettaglio. Utilizza il rendering basato sulla fisica (PBR) per impostazione predefinita, supporta l'animazione e le mappe delle ombre a cascata.
  • Supporto per la simulazione di processi fisici basato sul motore PhysX.
  • Un sistema per creare interfacce utente simili a React.
  • Un sistema di input unificato e indipendente dalla piattaforma attuale.
  • Sistema audio spaziale con filtri plug-in.

Lo sviluppo è ancora allo stadio della versione alpha. Tra le funzionalità non ancora implementate possiamo notare la possibilità di eseguire sul Web, un'API client, un'API per la gestione del multithreading, una libreria per la creazione di un'interfaccia utente, un'API per l'utilizzo dei propri shader, supporto audio, caricamento e salvataggio Componenti ECS (Entity Component System), ricarica delle risorse al volo, ridimensionamento automatico del server, editor per la creazione collaborativa di mappe di gioco e scene di gioco.



Fonte: opennet.ru

Aggiungi un commento