Efter ett Ärs utveckling har den första versionen av den nya öppna spelmotorn Ambient presenterats. Motorn erbjuder runtime för att skapa flerspelarspel och 3D-applikationer, som kompileras till WebAssembly och anvÀnder API:er frÄn WebGPU för rendering. Koden Àr skriven i Rust och distribueras under MIT-licensen.
Den viktigaste uppgiften vid utvecklingen av Ambient Ă€r att tillhandahĂ„lla verktyg som förenklar utvecklingen av flerspelarspel och gör det lika enkelt som att skapa projekt för en spelare. Motorn Ă€r ursprungligen inriktad pĂ„ att skapa en universell runtime som stöder utveckling av spel och applikationer pĂ„ valfritt programmeringssprĂ„k som kan kompileras till WebAssembly. ĂndĂ„ Ă€r stöd för utveckling pĂ„ sprĂ„k som Rust för nĂ€rvarande den enda funktionen i den första versionen.
Nyckelfunktioner i den nya motorn:
- Transparent stöd för nÀtverksinteraktion. Motorn kombinerar klient- och serverfunktioner, tillhandahÄller alla nödvÀndiga komponenter för att skapa klient- och serverlogik, och synkroniserar automatiskt serverns status pÄ klienterna. En gemensam datamodell anvÀnds bÄde pÄ klient- och serversidan, vilket förenklar överföringen av kod mellan backend och frontend.
- Körning av varje modul i sin egen isolerade miljö, vilket begrÀnsar pÄverkan av osÀker kod. Ett fel i en modul medför inte att hela applikationen kraschar.
- Dataorienterad arkitektur. TillhandahÄllande av en datamodell baserad pÄ komponentersystemet, som varje WASM-modul kan manipulera. AnvÀndning av designmönster som ECS (Entity Component System). Alla komponenters data lagras i en central databas vars servernstatus automatiskt replikeras till klienten, som pÄ sin sida kan utöka data med hÀnsyn till det lokala tillstÄndet.
- Möjligheten att skapa Ambient-moduler pÄ valfritt programmeringssprÄk som kan kompileras till WebAssembly (just nu stöds endast Rust).
- Generering av universella körbara filer som kan köras pÄ Windows, macOS och Linux, och fungera bÄde som klient och server.
- Möjlighet att definiera egna komponenter och "koncept" (samlingar av komponenter). I projekt som anvÀnder samma komponenter och koncept sÀkerstÀlls portabilitet och datadelning, Àven om dessa data inte Àr specifikt designade för anvÀndning i specifika projekt.
- Stöd för kompilering av resurser i olika format, inklusive .glb och .fbx. Möjlighet till strömning av resurser över nĂ€tverket â klienten kan fĂ„ alla nödvĂ€ndiga resurser vid anslutning till servern (det gĂ„r att börja spela utan att vĂ€nta pĂ„ att alla resurser ska laddas). Stöds av bĂ„de FBX- och glTF-modellformat, samt olika ljud- och bildformat.
- Avancerat rendering system som anvÀnder GPU för att öka utsignalen och stöder utförande av synlighetsavskÀrning och Àndring av detaljeringsnivÄer pÄ GPU-sidan. AnvÀnder som standard fysiskt korrekt rendering (PBR), stöd för animation och kaskadarkskuggning.
- Stöd för simulering av fysiska processer baserat pÄ PhysX-motorn.
- Ett anvÀndargrÀnssnittssystem som liknar React.
- En enhetlig inmatningssystem som inte Àr beroende av den aktuella plattformen.
- Ett rumsligt ljudsystem med pluggbara filter.
Utvecklingen Àr fortfarande i alfa-version. Bland de Ànnu icke implementerade funktionerna kan nÀmnas möjligheten att köra i Web, klient-API, API för hantering av flervalskörning, bibliotek för skapande av anvÀndargrÀnssnitt, API för anvÀndning av egna shaders, ljudstöd, laddning och sparande av ECS-komponenter (Entity Component System), omstart av resurser i realtid, automatisk skalning. servrar, en editor för samarbetsutveckling av spelkartor och spelscenarier.

KĂ€lla: opennet.ru
