Prima lansare a motorului de joc multiplayer open source Ambient

După un an de dezvoltare, este prezentată prima lansare a noului motor de jocuri open source Ambient. Motorul oferă un timp de rulare pentru crearea de jocuri multiplayer și aplicații 3D care se compilează într-o reprezentare WebAssembly și utilizează API-ul WebGPU pentru randare. Codul este scris în Rust și este distribuit sub licența MIT.

Un obiectiv cheie în dezvoltarea Ambientului este de a oferi instrumente care simplifică dezvoltarea jocurilor multiplayer și fac crearea acestora mai dificilă decât proiectele cu un singur jucător. Motorul are ca scop inițial crearea unui timp de rulare universal care să susțină dezvoltarea de jocuri și aplicații în orice limbaj de programare pentru care este posibilă compilarea în codul intermediar WebAssembly. Cu toate acestea, prima versiune acceptă doar dezvoltarea Rust pentru moment.

Caracteristicile cheie ale noului motor:

  • Suport transparent pentru rețea. Motorul combină funcțiile client și server, oferă toate componentele necesare pentru crearea logicii client și server și sincronizează automat starea serverului între clienți. Un model comun de date este utilizat pe partea client și server, ceea ce simplifică transferul de cod între backend și frontend.
  • Rularea fiecărui modul în propriul mediu izolat, permițându-vă să limitați influența codului nedemn de încredere. Blocarea unui modul nu blochează întreaga aplicație.
  • Arhitectură orientată pe date. Furnizarea unui model de date bazat pe un sistem de componente care pot fi manipulate de fiecare modul WASM. Folosind modelul de proiectare ECS (Entity Component System). Stocarea datelor tuturor componentelor într-o bază de date centralizată pe server, a cărei stare este replicată automat către client, care, de partea sa, poate extinde datele ținând cont de starea locală.
  • Abilitatea de a crea module Ambient în orice limbaj de programare care se compilează în WebAssembly (deocamdată este acceptat doar Rust).
  • Generarea de fișiere executabile universale ca ieșire care poate rula pe Windows, macOS și Linux și poate funcționa atât ca client, cât și ca server.
  • Abilitatea de a-ți defini propriile componente și „concepte” (colecții de componente). Proiectele care folosesc aceleași componente și concepte permit portabilitatea și partajarea datelor, chiar dacă datele nu sunt concepute special pentru a fi utilizate în anumite proiecte.
  • Suport pentru compilarea resurselor în diferite formate, inclusiv .glb și .fbx. Posibilitatea de descărcare în flux a resurselor prin rețea - clientul poate primi toate resursele necesare la conectarea la server (puteți începe să jucați fără a aștepta încărcarea tuturor resurselor). Suportă formate de model FBX și glTF, diverse formate audio și imagine.
  • Un sistem avansat de randare care folosește GPU pentru a accelera randarea și acceptă tăierea pe partea GPU și modificările nivelului de detaliu. Utilizează în mod implicit randarea bazată pe fizic (PBR), acceptă animație și hărți umbre în cascadă.
  • Suport pentru simularea proceselor fizice bazate pe motorul PhysX.
  • Un sistem pentru construirea de interfețe cu utilizatorul similar cu React.
  • Un sistem de intrare unificat care este independent de platforma actuală.
  • Sistem de sunet spațial cu filtre plug-in.

Dezvoltarea este încă în stadiul de versiune alfa. Printre funcționalitățile încă neimplementate, putem remarca capacitatea de a rula pe Web, un API client, un API pentru gestionarea multithreading-ului, o bibliotecă pentru crearea unei interfețe cu utilizatorul, un API pentru utilizarea propriilor shadere, suport audio, încărcare și salvare Componente ECS (Entity Component System), resurse de reîncărcare din mers, scalare automată a serverului, editor pentru crearea în colaborare a hărților de joc și a scenelor de joc.



Sursa: opennet.ru

Adauga un comentariu