Första utgåvan av flerspelarmotorn Ambient med öppen källkod

Efter ett års utveckling presenteras den första versionen av den nya spelmotorn Ambient med öppen källkod. Motorn ger en körtid för att skapa spel för flera spelare och 3D-applikationer som kompileras till en WebAssembly-representation och använder WebGPU API för rendering. Koden är skriven i Rust och distribueras under MIT-licensen.

Ett centralt mål i utvecklingen av Ambient är att tillhandahålla verktyg som förenklar utvecklingen av spel för flera spelare och gör deras skapande inte svårare än enspelarprojekt. Motorn är initialt inriktad på att skapa en universell körtid som stöder utvecklingen av spel och applikationer i alla programmeringsspråk för vilka kompilering till WebAssembly-mellankod är möjlig. Den första utgåvan stöder dock bara Rust-utveckling för närvarande.

Nyckelfunktioner i den nya motorn:

  • Transparent nätverksstöd. Motorn kombinerar klient- och serverfunktioner, tillhandahåller alla nödvändiga komponenter för att skapa klient- och serverlogik och synkroniserar automatiskt servertillståndet mellan klienterna. En vanlig datamodell används på klient- och serversidan, vilket förenklar överföringen av kod mellan backend och frontend.
  • Att köra varje modul i sin egen isolerade miljö, så att du kan begränsa påverkan av opålitlig kod. Att krascha en modul kraschar inte hela programmet.
  • Dataorienterad arkitektur. Tillhandahålla en datamodell baserad på ett system av komponenter som kan manipuleras av varje WASM-modul. Använder ECS (Entity Component System) designmönster. Lagring av data för alla komponenter i en centraliserad databas på servern, vars tillstånd automatiskt replikeras till klienten, som på sin sida kan utöka data med hänsyn till det lokala tillståndet.
  • Möjlighet att skapa Ambient-moduler i valfritt programmeringsspråk som kompileras till WebAssembly (endast Rust stöds för närvarande).
  • Genererar universella körbara filer som utdata som kan köras på Windows, macOS och Linux och fungera som både en klient och en server.
  • Förmåga att definiera dina egna komponenter och "koncept" (komponentsamlingar). Projekt som använder samma komponenter och koncept möjliggör portabilitet och delning av data, även om data inte är specifikt designade för användning i specifika projekt.
  • Stöd för att kompilera resurser i olika format, inklusive .glb och .fbx. Möjlighet att streama nedladdning av resurser över nätverket - klienten kan ta emot alla nödvändiga resurser vid anslutning till servern (du kan börja spela utan att vänta på att alla resurser ska laddas). Stöder FBX- och glTF-modellformat, olika ljud- och bildformat.
  • Ett avancerat renderingssystem som använder GPU:n för att snabba upp renderingen och stöder GPU-sidans klippning och detaljnivåändringar. Använder fysiskt baserad rendering (PBR) som standard, stöder animering och överlappande skuggkartor.
  • Stöd för simulering av fysiska processer baserade på PhysX-motorn.
  • Ett system för att bygga användargränssnitt liknande React.
  • Ett enhetligt inmatningssystem som är oberoende av den aktuella plattformen.
  • Rumsligt ljudsystem med plug-in filter.

Utvecklingen är fortfarande på alfaversionsstadiet. Bland de ännu inte implementerade funktionerna kan vi notera möjligheten att köra på webben, ett klient-API, ett API för att hantera multithreading, ett bibliotek för att skapa ett användargränssnitt, ett API för att använda dina egna shaders, ljudstöd, ladda och spara ECS (Entity Component System)-komponenter, omladdning av resurser i farten, automatisk serverskalning, redigerare för samarbetsskapande av spelkartor och spelscener.



Källa: opennet.ru

Lägg en kommentar