Po roku vývoja bol predstavený prvý vydanie nového otvoreného herného enginu Ambient. Engine poskytuje runtime na vytváranie multiplayerových hier a 3D aplikácií, ktoré sú kompilované do formátu WebAssembly a používajú API WebGPU na vykresľovanie. Kód je napísaný v jazyku Rust a šíri sa pod licenciou MIT.
Kľúčovou úlohou pri vývoji Ambient je poskytnúť nástroje, ktoré zjednodušujú vývoj multiplayerových hier a robia ich vytváranie rovnako jednoduché ako pre jednopoužívateľské projekty. Engine je pôvodne zameraný na vytváranie univerzálneho runtime, ktorý podporuje vývoj hier a aplikácií v akýchkoľvek programovacích jazykoch, ktoré je možné kompilovať do medziformátu WebAssembly. Napriek tomu v prvom vydaní zatiaľ existuje iba podpora pre vývoj v jazyku Rust.
Kľúčové vlastnosti nového enginu:
- Priehľadná podpora sieťovej interakcie. Engine kombinuje funkcie klienta a servera, poskytuje všetky potrebné komponenty na vytváranie klientskej a serverovej logiky, a tiež automaticky synchronizuje stav servera na klientoch. Na strane klienta a servera sa používa spoločný model údajov, čo uľahčuje prenos kódu medzi backendom a frontendom.
- Spustenie každého modulu vo vlastnom izolovanom prostredí, ktoré umožňuje obmedziť vplyv nedôveryhodného kódu. Havária modulu nespôsobuje haváriu celej aplikácie.
- Architektúra zameraná na spracovanie údajov. Poskytovanie modelu údajov na báze systému komponentov, ktorými môže manipulovať každý modul WASM. Použitie návrhového vzoru ECS (Entity Component System). Uloženie údajov všetkých komponentov v centralizovanej databáze na serveri, ktorej stav sa automaticky replikácie klientovi, ktorý môže na svojej strane rozširovať údaje s ohľadom na lokálny stav.
- Možnosť vytvárania modulov Ambient v akýchkoľvek programovacích jazykoch kompilovaných do WebAssembly (v súčasnosti je podporovaný iba Rust).
- Tvorba univerzálnych spustiteľných súborov, ktoré môžu bežať na Windows, macOS a Linux a fungovať ako klient aj server.
- Možnosť definovania vlastných komponentov a „konceptov“ (kolekcií komponentov). V projektoch, ktoré používajú rovnaké komponenty a koncepty, sa zabezpečuje prenosnosť a zdieľanie dát, aj keď tieto dáta nie sú špeciálne navrhnuté na použitie v konkrétnych projektoch.
- Podpora kompilácie zdrojov v rôznych formátoch, vrátane .glb a .fbx. Možnosť streamovacího načítania zdrojov cez sieť — klient môže získať všetky potrebné zdroje pri pripojení k serveru (môžete začať hrať, aj keď sa ešte všetky zdroje nenačítali). Podporujú sa formáty modelov FBX a glTF, rôzne formáty zvuku a obrázkov.
- Pokročilý systém vykresľovania, ktorý využíva GPU na urýchlenie výstupu a podporuje vykonávanie orezania podľa oblasti viditeľnosti a zmenu úrovní detailov na strane GPU. Používanie fyzikálneho správneho renderovania (PBR) je predvolené, podpora animácie a kaskádových tieňových máp.
- Podpora simulácie fyzikálnych procesov na báze enginu PhysX.
- Systém na budovanie používateľských rozhraní, ktorý je podobný Reactu.
- Zjednotený systém vstupu, ktorý nie je závislý od aktuálnej platformy.
- Systém priestorového zvuku s pripojiteľnými filtrami.
Vývoj je zatiaľ v alpha verzii. Z ešte neimplementovanej funkcionality možno spomenúť možnosť spustenia v Webe, klientské API, API na správu viacerých vlákien, knižnicu na vytváranie používateľského rozhrania, API na používanie vlastných shaderov, podpora zvuku, načítanie a uloženie komponentov ECS (Entity Component System), živé prekladanie zdrojov, automatické škálovanie. serverov, editor na spoločné vytváranie herných máp a herných scén.

Zdroj: opennet.ru
