Første utgivelse av Ambient åpen flerspillerspillmotor

Etter et år med utvikling presenteres den første utgivelsen av den nye åpen kildekode-spillmotoren Ambient. Motoren gir en kjøretid for å bygge flerspillerspill og 3D-applikasjoner som kompileres til en WebAssembly-representasjon og bruker WebGPU API for gjengivelse. Koden er skrevet i Rust og distribuert under MIT-lisensen.

Et sentralt mål i utviklingen av Ambient er å tilby verktøy som forenkler utviklingen av flerspillerspill og gjør det ikke vanskeligere å lage dem enn enkeltspillerprosjekter. Motoren er i utgangspunktet rettet mot å lage en universell kjøretid som støtter utviklingen av spill og applikasjoner på alle programmeringsspråk der kompilering til WebAssembly mellomkode er mulig. Den første utgivelsen støtter imidlertid bare Rust-utvikling så langt.

Hovedfunksjoner til den nye motoren:

  • Transparent støtte for nettverk. Motoren kombinerer funksjonene til en klient og en server, gir alle nødvendige komponenter for å lage klient- og serverlogikk, og synkroniserer automatisk serverens tilstand på klienter. En vanlig datamodell brukes på klient- og serversiden, som gjør det enkelt å overføre kode mellom backend og frontend.
  • Kjør hver modul i sitt eget isolerte miljø for å begrense virkningen av uklarert kode. Å krasjer en modul fører ikke til at hele applikasjonen krasjer.
  • Dataorientert arkitektur. Å tilby en datamodell basert på et system av komponenter som hver WASM kan manipulere. Bruke ECS (Entity Component System) designmønster. Lagring av dataene til alle komponenter i en sentralisert database på serveren, hvis tilstand automatisk replikeres til klienten, som på sin side kan utvide dataene under hensyntagen til den lokale tilstanden.
  • Muligheten til å lage Ambient-moduler i et hvilket som helst programmeringsspråk som kompileres til WebAssembly (bare Rust støttes så langt).
  • Generering av utgående universelle kjørbare filer som kan kjøres på Windows, macOS og Linux, og fungere som både en klient og en server.
  • Evne til å definere egne komponenter og "konsepter" (komponentsamlinger). Prosjekter som bruker de samme komponentene og konseptene sikrer at data er portable og delte, selv om dataene ikke er spesifikt designet for bruk i spesifikke prosjekter.
  • Støtte for kompilering av ressurser i forskjellige formater, inkludert .glb og .fbx. Muligheten til å strømme ressurser over nettverket - klienten kan få alle nødvendige ressurser når den er koblet til serveren (du kan begynne å spille uten å vente på at alle ressursene skal lastes). FBX- og glTF-modellformater, ulike lyd- og bildeformater støttes.
  • Et avansert gjengivelsessystem som bruker GPU for å øke hastigheten på gjengivelsen, og støtter klipping på GPU-siden og LOD-er. Bruker fysisk basert gjengivelse (PBR) som standard, støtte for animasjon og overlappende skyggekart.
  • Støtte for simulering av fysiske prosesser basert på PhysX-motoren.
  • Reager-lignende brukergrensesnitt byggesystem.
  • Unified input system uavhengig av gjeldende plattform.
  • Romlig lydsystem med plug-in filtre.

Utviklingen er fortsatt på alfastadiet. Fra funksjonaliteten som ennå ikke er implementert, kan vi merke oss muligheten til å kjøre på nettet, klient-API, API for å administrere multithreading, biblioteket for å lage brukergrensesnittet, API for å bruke dine egne shaders, lydstøtte, lasting og lagring ECS (Entity Component System)-komponenter, omlasting av ressurser på farten, automatisk skalering av servere, en editor for å samskape spillkart og spillscener.



Kilde: opennet.ru

Legg til en kommentar