PÀrast aasta arendust on esitlemiseks valmis saanud uus avatud mÀngumootor Ambient. Mootor pakub runtime'i mitmikmÀngu mÀngude ja 3D-rakenduste loomiseks, mis kompileeritakse WebAssembly esitamiseks ja kasutavad WebGPU API-d renderdamiseks. Kood on kirjutatud keeles Rust ja jagatakse MIT litsentsi alusel.
Ambient'i arendamise peamine ĂŒlesanne on pakkuda tööriistu, mis lihtsustavad mitmikmĂ€ngu mĂ€ngude loomist ja teevad selle sama lihtsaks kui ĂŒhes mĂ€ngus projektide tegemine. Mootor keskendub esialgu universaalse runtime'i loomisele, mis toetab mĂ€ngude ja rakenduste arendamist kĂ”ikides programmeerimiskeeltes, mille puhul on vĂ”imalik kompileerida vahepealseks koodiks WebAssembly. Siiski, esimeses versioonis on praegu teostatud toetust vaid arendamiseks keeles Rust.
Uue mootori peamised omadused:
- Avaheeritav vĂ”rgu tugi. Mootor ĂŒhendab kliendi ja serveri funktsioone, pakkudes kĂ”iki vajalikke komponente kliendi ja serveri loogika loomiseks ning automaatselt sĂŒnkroniseerib serveri oleku klientidega. Kliendi ja serveri poolel kasutatakse ĂŒhist andmemudelit, mis lihtsustab koodi ĂŒlekandmist tagasiside ja esiosade vahel.
- Iga mooduli kÀivitamine oma isoleeritud keskkonnas, mis vÔimaldab piirata usaldusvÀÀrset koodi. Mooduli ootamatu lÔpetamine ei pÔhjusta kogu rakenduse ootamatut lÔpetamist.
- Andmetele orienteeritud arhitektuur. Andmemudeli pakkumine komponentide sĂŒsteemil, mida saab hallata iga WASM mooduli poolt. Kasutatakse ECS (Entity Component System) kujundusmustrit. KĂ”ikide komponentide andmete sĂ€ilitamine tsentraliseeritud andmebaasis, serveril, mille olek replitseeritakse automaatselt kliendile, kes vĂ”ib oma poolel andmeid laiendada, arvesse vĂ”ttes kohalikku olekut.
- Ambienti moodulite loomise vÔimalus igasugustes programmeerimiskeeltes, mis kompileeritakse WebAssembly's (praegu on toetatud ainult Rust).
- Universaalsete vÀljaantavate failide genereerimine, mis vÔivad töötada Windows, macOS ja Linuxis ning tegutseda nii kliendi kui ka serverina.
- Oma komponentide ja 'kontseptsioonide' (komponentide kogumite) mÀÀramise vĂ”imalus. Projektides, kus kasutatakse samu komponente ja kontseptsioone, tagatakse ĂŒhilduvus ja andmete jagamine, isegi kui need andmed ei ole otseselt kohandatud konkreetsetele projektidele.
- Toetatakse ressursside kompileerimist erinevates formaatides, sealhulgas .glb ja .fbx. VĂ”ime ressursse voogedastada ĂŒle vĂ”rgu - klient saab kĂ”ik vajalikud ressursid serveriga ĂŒhendamisel (saab mĂ€ngima hakata, oodates, et kĂ”ik ressursid laaditakse). Toetatakse FBX ja glTF mudelite formaate, samuti erinevaid helide ja piltide formaate.
- TĂ€pne renderdus sĂŒsteem, mis kasutab GPU-d vĂ€ljundi kiirendamiseks ning toetab nĂ€htavuse alusel lĂ”ikamist ja tasemete vahetamist GPU kĂŒljelt. Vaikimisi fĂŒĂŒsiliselt korrektne renderdamine (PBR), animatsioonide toetus ja kaskaadsed varjukaardid.
- FĂŒĂŒsikaliste protsesside simuleerimise tugi PhysX mootori baasil.
- Kasutajaliideste loomise sĂŒsteem, mis sarnaneb React'iga.
- Ăhtne sisestussĂŒsteem, mis ei sĂ”ltu praegusest platvormist.
- Ruumi heli sĂŒsteem, millel on ĂŒhendatavad filtrid.
Arendus on hetkel alpha-etapis. Veel teostamata funktsioonidest vÔib mainida veebiversiooni kÀivitamise vÔimalust, kliendi API-d, mitme lÔime haldamise API-d, kasutajaliidese loomise raamatukogu, oma shader'ite kasutamise API-d, heli toetust, ECS (Entity Component System) komponente laadimise ja salvestamise, ressursside kuumalt uuendamise ja automaatse skaleerimise. serverite, redigeerija mÀngukaartide ja stseenide koostamiseks.

Allikas: opennet.ru
