Az Ambient nyílt forráskódú többjátékos játékmotor első kiadása

Egy év fejlesztés után bemutatják az új, nyílt forráskódú Ambient játékmotor első kiadását. A motor futási időt biztosít többszereplős játékok és 3D alkalmazások létrehozásához, amelyek WebAssembly-reprezentációra fordítanak, és a WebGPU API-t használják a megjelenítéshez. A kód Rust nyelven íródott, és az MIT licence alatt kerül terjesztésre.

Az Ambient fejlesztésének kulcsfontosságú célja olyan eszközök biztosítása, amelyek leegyszerűsítik a többjátékos játékok fejlesztését, és nem teszik nehezebbé a létrehozásukat, mint az egyjátékos projektek. A motor eredetileg egy univerzális futtatókörnyezet létrehozására irányul, amely támogatja a játékok és alkalmazások fejlesztését minden olyan programozási nyelven, amelynél lehetséges a WebAssembly köztes kódba történő fordítása. Az első kiadás azonban egyelőre csak a Rust fejlesztést támogatja.

Az új motor főbb jellemzői:

  • Átlátszó hálózati támogatás. A motor egyesíti a kliens és a szerver funkciókat, biztosítja az összes szükséges összetevőt a kliens és szerver logika létrehozásához, és automatikusan szinkronizálja a kiszolgáló állapotát az ügyfelek között. A kliens és a szerver oldalon közös adatmodellt használnak, ami leegyszerűsíti a kódátvitelt a háttér és a frontend között.
  • Minden modul futtatása a saját elszigetelt környezetben, lehetővé téve a megbízhatatlan kódok befolyásának korlátozását. Egy modul összeomlásával nem az egész alkalmazás összeomlik.
  • Adatorientált architektúra. Az egyes WASM modulok által manipulálható komponensek rendszerén alapuló adatmodell biztosítása. Az ECS (Entity Component System) tervezési minta használata. Az összes komponens adatainak tárolása egy központi adatbázisban a szerveren, melynek állapota automatikusan replikálódik a kliens felé, amely a maga oldalán a helyi állapot figyelembevételével bővítheti az adatokat.
  • Lehetőség Ambient modulok létrehozására bármilyen programozási nyelven, amely WebAssembly-re fordítható (egyelőre csak a Rust támogatott).
  • Univerzális futtatható fájlok generálása kimenetként, amelyek Windows, macOS és Linux alatt futhatnak, és kliensként és szerverként is működhetnek.
  • Saját komponensek és „fogalmak” (összetevők gyűjteményei) meghatározásának képessége. Az azonos komponenseket és koncepciókat használó projektek lehetővé teszik az adatok hordozhatóságát és megosztását, még akkor is, ha az adatokat nem kifejezetten konkrét projektekben való használatra tervezték.
  • Különféle formátumú erőforrások összeállításának támogatása, beleértve a .glb és .fbx formátumokat. Lehetőség az erőforrások streaming letöltésére a hálózaton keresztül - a kliens megkaphatja az összes szükséges erőforrást, amikor csatlakozik a szerverhez (elkezdhet játszani anélkül, hogy megvárná az összes erőforrás betöltését). Támogatja az FBX és glTF modellformátumokat, különféle hang- és képformátumokat.
  • Fejlett renderelő rendszer, amely a GPU-t használja a renderelés felgyorsítására, és támogatja a GPU-oldali kivágást és a részletszint módosítását. Alapértelmezés szerint fizikai alapú renderelést (PBR) használ, támogatja az animációt és a lépcsőzetes árnyéktérképeket.
  • Fizikai folyamatok szimulációjának támogatása a PhysX motoron.
  • A Reacthoz hasonló felhasználói felületek felépítésére szolgáló rendszer.
  • Egységes beviteli rendszer, amely független az aktuális platformtól.
  • Térbeli hangrendszer dugaszolható szűrőkkel.

A fejlesztés még az alfa verzió stádiumában van. A még nem implementált funkciók közül kiemelhetjük a weben való futtathatóságot, a kliens API-t, a többszálú kezelés API-t, a felhasználói felület létrehozására szolgáló könyvtárat, az API-t a saját shaderek használatához, a hangtámogatást, a betöltést és mentést. ECS (Entity Component System) komponensek, erőforrások menet közbeni újratöltése, automatikus szerverméretezés, szerkesztő játéktérképek és játékjelenetek közös létrehozásához.



Forrás: opennet.ru

Hozzászólás