Prvo izdanje open source motora za više igrača Ambient

Nakon godinu dana razvoja, predstavljeno je prvo izdanje novog pokretača igara otvorenog koda Ambient. Motor pruža vrijeme izvođenja za stvaranje igara za više igrača i 3D aplikacija koje se kompiliraju u WebAssembly reprezentaciju i koriste WebGPU API za renderiranje. Kod je napisan u Rustu i distribuira se pod licencom MIT-a.

Ključni cilj u razvoju Ambienta je osigurati alate koji pojednostavljuju razvoj igara za više igrača i čine njihovu izradu ništa težim od projekata za jednog igrača. Motor je u početku usmjeren na stvaranje univerzalnog runtimea koji podržava razvoj igara i aplikacija u svim programskim jezicima za koje je moguća kompilacija u međukod WebAssembly. Međutim, prvo izdanje za sada podržava samo Rust razvoj.

Ključne značajke novog motora:

  • Transparentna mrežna podrška. Motor kombinira funkcije klijenta i poslužitelja, pruža sve potrebne komponente za kreiranje logike klijenta i poslužitelja i automatski sinkronizira stanje poslužitelja među klijentima. Zajednički podatkovni model koristi se na strani klijenta i poslužitelja, što pojednostavljuje prijenos koda između pozadine i sučelja.
  • Pokretanje svakog modula u vlastitom izoliranom okruženju, što vam omogućuje da ograničite utjecaj nepouzdanog koda. Rušenjem modula ne ruši se cijela aplikacija.
  • Podatkovno orijentirana arhitektura. Pružanje modela podataka koji se temelji na sustavu komponenti kojima se može manipulirati pomoću svakog WASM modula. Korištenje uzorka dizajna ECS (Entity Component System). Pohranjivanje podataka svih komponenti u centraliziranu bazu podataka na poslužitelju, čije se stanje automatski replicira na klijenta, koji sa svoje strane može proširiti podatke uzimajući u obzir lokalno stanje.
  • Mogućnost stvaranja ambijentalnih modula u bilo kojem programskom jeziku koji se kompajlira u WebAssembly (trenutačno je podržan samo Rust).
  • Generiranje univerzalnih izvršnih datoteka kao izlaza koje se mogu izvoditi na Windowsima, macOS-u i Linuxu te funkcionirati i kao klijent i kao poslužitelj.
  • Sposobnost definiranja vlastitih komponenti i “koncepata” (zbirki komponenti). Projekti koji koriste iste komponente i koncepte omogućuju prenosivost i dijeljenje podataka, čak i ako podaci nisu posebno dizajnirani za korištenje u određenim projektima.
  • Podrška za sastavljanje izvora u različitim formatima, uključujući .glb i .fbx. Mogućnost streaminga preuzimanja resursa preko mreže - klijent može dobiti sve potrebne resurse kada se spoji na poslužitelj (možete početi igrati bez čekanja da se svi resursi učitaju). Podržava FBX i glTF formate modela, razne audio i slikovne formate.
  • Napredni sustav renderiranja koji koristi GPU za ubrzavanje renderiranja i podržava izrezivanje na strani GPU-a i promjene razine detalja. Prema zadanim postavkama koristi fizički temeljeno renderiranje (PBR), podržava animaciju i kaskadne karte sjena.
  • Podrška za simulaciju fizičkih procesa na temelju PhysX motora.
  • Sustav za izgradnju korisničkih sučelja sličan Reactu.
  • Jedinstveni sustav unosa koji je neovisan o trenutnoj platformi.
  • Prostorni zvučni sustav s plug-in filterima.

Razvoj je još uvijek u fazi alfa verzije. Među još neimplementiranim funkcijama možemo primijetiti mogućnost pokretanja na webu, klijentski API, API za upravljanje višenitnosti, knjižnicu za stvaranje korisničkog sučelja, API za korištenje vlastitih shadera, zvučnu podršku, učitavanje i spremanje ECS ​​(Entity Component System) komponente, ponovno učitavanje resursa u hodu, automatsko skaliranje poslužitelja, uređivač za zajedničko stvaranje mapa igre i scena igre.



Izvor: opennet.ru

Dodajte komentar