Na een jaar ontwikkeling is de eerste versie van de nieuwe open-source game-engine Ambient gepresenteerd. De engine biedt runtime voor het creƫren van multiplayergames en 3D-toepassingen, die zijn gecompileerd naar WebAssembly en gebruikmaken van de WebGPU API voor rendering. De code is geschreven in Rust en is beschikbaar onder de MIT-licentie.
Een van de belangrijkste taken bij de ontwikkeling van Ambient is het bieden van tools die het ontwikkelen van multiplayergames vereenvoudigen, zodat deze niet moeilijker zijn dan het maken van singleplayerprojecten. De engine is aanvankelijk gericht op het creƫren van een universele runtime die de ontwikkeling van games en toepassingen ondersteunt in alle programmeertalen die kunnen worden gecompileerd naar WebAssembly-intermediaire code. In de eerste versie is echter nog alleen ondersteuning voor ontwikkeling in Rust beschikbaar.
Belangrijkste kenmerken van de nieuwe engine:
- Transparante ondersteuning voor netwerkinteractie. De engine combineert de functies van client en server, biedt alle noodzakelijke componenten voor het creƫren van client- en serverlogica, en synchroniseert automatisch de staat van de server naar de clients. Zowel aan de client- als serverzijde wordt een gemeenschappelijk datamodel gebruikt, wat het overbrengen van code tussen de backend en frontend vereenvoudigt.
- De uitvoering van elke module in zijn eigen geĆÆsoleerde omgeving, waarmee de impact van niet-vertrouwde code kan worden beperkt. Het onverwacht sluiten van een module leidt niet tot het onverwacht sluiten van de gehele applicatie.
- Een op gegevens gerichte architectuur (Data-oriented). Biedt een datamodel gebaseerd op een componentensysteem, waarmee elke WASM-module kan werken. Gebruik van het ontwerppatroon ECS (Entity Component System). Gegevens van alle componenten worden opgeslagen in een gecentraliseerde database, de server, waarvan de staat automatisch wordt gerepliceerd naar de client, die aan zijn kant de gegevens kan uitbreiden rekening houdend met de lokale staat.
- De mogelijkheid om Ambient-modules te creƫren in alle programmeertalen die kunnen worden gecompileerd naar WebAssembly (momenteel wordt alleen Rust ondersteund).
- Het genereren van universele uitvoerbare bestanden die kunnen draaien op Windows, macOS en Linux, en functioneren zowel als client als server.
- Mogelijkheid om eigen componenten en āconceptenā (componentverzamelingen) te definiĆ«ren. In projecten die dezelfde componenten en concepten gebruiken, wordt draagbaarheid en gezamenlijke data-uitwisseling gegarandeerd, zelfs als deze data niet specifiek zijn ontworpen voor gebruik in specifieke projecten.
- Ondersteuning voor het compileren van middelen in verschillende formaten, waaronder .glb en .fbx. Mogelijkheid voor streaming van middelen via het netwerk ā de cliĆ«nt kan alle benodigde middelen ontvangen bij aansluiting op de server (je kunt beginnen met spelen zonder te wachten tot alle middelen zijn geladen). Ondersteunde modelformaten zijn FBX en glTF, evenals verschillende audio- en beeldformaten.
- Geavanceerd tekeningssysteem dat GPU gebruikt voor het versnellen van de uitvoer en ondersteuning biedt voor zichtbare gebiedsculling en detailniveau wisseling aan de GPU-kant. Standaard gebruik van fysiek correcte rendering (PBR), ondersteuning voor animatie en cascaderende schaduwkaarten.
- Ondersteuning voor fysieke procesimulatie op basis van de PhysX-engine.
- Systeem voor het bouwen van gebruikersinterfaces, vergelijkbaar met React.
- Gestandaardiseerd invoersysteem, onafhankelijk van het huidige platform.
- Systeem voor ruimtelijke audio met pluggable filters.
De ontwikkeling bevindt zich nog in de alfa-fase. Van de nog niet gerealiseerde functionaliteit kan de mogelijkheid om te starten in Web worden opgemerkt, client-API, API voor het beheren van multitasking, bibliotheek voor het creëren van gebruikersinterfaces, API voor het gebruik van eigen shaders, audio-ondersteuning, lade- en opslaan van ECS-componenten (Entity Component System), het opnieuw laden van middelen on the fly, automatische schaling. servers, een editor voor gezamenlijke creatie van spelkaarten en spelscènes.

Bron: opennet.ru
