Første udgivelse af open source multiplayer-spilmotoren Ambient

Efter et års udvikling præsenteres den første udgivelse af den nye open source-spilmotor Ambient. Motoren giver en runtime til at skabe multiplayer-spil og 3D-applikationer, der kompilerer til en WebAssembly-repræsentation og bruger WebGPU API til gengivelse. Koden er skrevet i Rust og distribueres under MIT-licensen.

Et centralt mål i udviklingen af ​​Ambient er at levere værktøjer, der forenkler udviklingen af ​​multiplayer-spil og gør deres skabelse ikke sværere end singleplayer-projekter. Motoren er oprindeligt rettet mod at skabe en universel runtime, der understøtter udviklingen af ​​spil og applikationer i alle programmeringssprog, for hvilke kompilering til WebAssembly mellemkode er mulig. Den første udgivelse understøtter dog kun Rust-udvikling indtil videre.

Nøglefunktioner ved den nye motor:

  • Gennemsigtig netværksstøtte. Motoren kombinerer klient- og serverfunktioner, leverer alle de nødvendige komponenter til at skabe klient- og serverlogik og synkroniserer automatisk servertilstanden på tværs af klienter. Der anvendes en fælles datamodel på klient- og serversiden, hvilket forenkler overførslen af ​​kode mellem backend og frontend.
  • Kørsel af hvert modul i sit eget isolerede miljø, så du kan begrænse indflydelsen af ​​upålidelig kode. Nedbrud af et modul nedbryder ikke hele applikationen.
  • Dataorienteret arkitektur. Tilvejebringelse af en datamodel baseret på et system af komponenter, der kan manipuleres af hvert WASM-modul. Brug af ECS (Entity Component System) designmønster. Lagring af data for alle komponenter i en centraliseret database på serveren, hvis tilstand automatisk replikeres til klienten, som på sin side kan udvide dataene under hensyntagen til den lokale tilstand.
  • Mulighed for at oprette Ambient-moduler i et hvilket som helst programmeringssprog, der kompileres til WebAssembly (kun Rust er understøttet i øjeblikket).
  • Generering af universelle eksekverbare filer som output, der kan køre på Windows, macOS og Linux og fungere som både en klient og en server.
  • Evne til at definere dine egne komponenter og "koncepter" (samlinger af komponenter). Projekter, der bruger de samme komponenter og koncepter, muliggør portabilitet og deling af data, selvom dataene ikke er specifikt designet til brug i specifikke projekter.
  • Understøttelse af kompilering af ressourcer i forskellige formater, herunder .glb og .fbx. Mulighed for streaming af download af ressourcer over netværket - klienten kan modtage alle de nødvendige ressourcer ved tilslutning til serveren (du kan begynde at spille uden at vente på, at alle ressourcerne indlæses). Understøtter FBX- og glTF-modelformater, forskellige lyd- og billedformater.
  • Et avanceret gengivelsessystem, der bruger GPU'en til at fremskynde gengivelsen og understøtter klipning på GPU-siden og detaljeniveauændringer. Bruger fysisk baseret gengivelse (PBR) som standard, understøtter animation og overlappende skyggekort.
  • Support til simulering af fysiske processer baseret på PhysX-motoren.
  • Et system til opbygning af brugergrænseflader svarende til React.
  • Et samlet inputsystem, der er uafhængigt af den aktuelle platform.
  • Rumligt lydsystem med plug-in filtre.

Udviklingen er stadig på alfaversionsstadiet. Blandt den endnu ikke implementerede funktionalitet kan vi bemærke muligheden for at køre på nettet, en klient API, en API til styring af multithreading, et bibliotek til at skabe en brugergrænseflade, en API til at bruge dine egne shaders, lydunderstøttelse, indlæsning og lagring ECS (Entity Component System) komponenter, genindlæsning af ressourcer i farten, automatisk serverskalering, editor til fælles oprettelse af spilkort og spilscener.



Kilde: opennet.ru

Tilføj en kommentar