Unang release ng Ambient open multiplayer game engine

Pagkatapos ng isang taon ng pag-unlad, ipinakita ang unang paglabas ng bagong open source game engine na Ambient. Nagbibigay ang engine ng runtime para sa pagbuo ng mga multiplayer na laro at 3D na application na nag-compile sa isang representasyon ng WebAssembly at ginagamit ang WebGPU API para sa pag-render. Ang code ay nakasulat sa Rust at ipinamahagi sa ilalim ng lisensya ng MIT.

Ang isang pangunahing layunin sa pagbuo ng Ambient ay ang magbigay ng mga tool na nagpapasimple sa pagbuo ng mga multiplayer na laro at gawing hindi mas mahirap ang paggawa ng mga ito kaysa sa mga proyekto ng single-player. Ang engine ay unang naglalayong lumikha ng isang unibersal na runtime na sumusuporta sa pagbuo ng mga laro at application sa anumang mga programming language kung saan ang pagsasama-sama sa WebAssembly intermediate code ay posible. Gayunpaman, ang unang release ay sumusuporta lamang sa pagbuo ng Rust sa ngayon.

Mga pangunahing tampok ng bagong makina:

  • Transparent na suporta para sa networking. Pinagsasama ng engine ang mga pag-andar ng isang kliyente at isang server, nagbibigay ng lahat ng kinakailangang sangkap upang lumikha ng lohika ng kliyente at server, at awtomatikong nagsi-synchronize ng estado ng server sa mga kliyente. Ang isang karaniwang modelo ng data ay ginagamit sa panig ng kliyente at server, na nagpapadali sa paglipat ng code sa pagitan ng backend at frontend.
  • Patakbuhin ang bawat module sa sarili nitong nakahiwalay na kapaligiran upang limitahan ang epekto ng hindi pinagkakatiwalaang code. Ang pag-crash ng isang module ay hindi nagiging sanhi ng pag-crash ng buong application.
  • Arkitekturang nakatuon sa data. Pagbibigay ng modelo ng data batay sa isang sistema ng mga bahagi na maaaring manipulahin ng bawat WASM. Gamit ang pattern ng disenyo ng ECS ​​(Entity Component System). Ang pag-iimbak ng data ng lahat ng mga sangkap sa isang sentralisadong database sa server, ang estado kung saan ay awtomatikong ginagaya sa kliyente, na sa panig nito ay maaaring mapalawak ang data na isinasaalang-alang ang lokal na estado.
  • Ang kakayahang lumikha ng mga module ng Ambient sa anumang programming language na nag-compile sa WebAssembly (tanging Rust lang ang sinusuportahan sa ngayon).
  • Pagbuo ng mga output universal executable file na maaaring tumakbo sa Windows, macOS at Linux, at gumana bilang parehong client at server.
  • Kakayahang tukuyin ang iyong sariling mga bahagi at "mga konsepto" (mga koleksyon ng mga bahagi). Tinitiyak ng mga proyekto na gumagamit ng parehong mga bahagi at konsepto na ang data ay portable at ibinabahagi, kahit na ang data ay hindi partikular na idinisenyo para gamitin sa mga partikular na proyekto.
  • Suporta para sa pag-compile ng mga mapagkukunan sa iba't ibang format, kabilang ang .glb at .fbx. Ang kakayahang mag-stream ng mga mapagkukunan sa network - makukuha ng kliyente ang lahat ng kinakailangang mapagkukunan kapag nakakonekta sa server (maaari kang magsimulang maglaro nang hindi naghihintay na mag-load ang lahat ng mga mapagkukunan). Ang mga format ng modelong FBX at glTF, iba't ibang mga format ng tunog at imahe ay sinusuportahan.
  • Isang advanced na sistema ng pag-render na gumagamit ng GPU upang pabilisin ang pag-render, at sumusuporta sa GPU-side clipping at mga LOD. Paggamit ng physically based rendering (PBR) bilang default, suporta para sa animation at cascading shadow map.
  • Suporta para sa simulation ng mga pisikal na proseso batay sa PhysX engine.
  • React-like user interface building system.
  • Pinag-isang input system na independiyente sa kasalukuyang platform.
  • Spatial sound system na may mga plug-in na filter.

Nasa alpha stage pa rin ang development. Mula sa functionality na hindi pa ipinapatupad, mapapansin natin ang kakayahang tumakbo sa Web, ang client API, ang API para sa pamamahala ng multithreading, ang library para sa paglikha ng user interface, ang API para sa paggamit ng sarili mong mga shader, sound support, pag-load at pag-save. Mga bahagi ng ECS ​​​​(Entity Component System), mabilisang pag-reload ng mga mapagkukunan , awtomatikong pag-scale ng mga server, isang editor para sa paggawa ng mga mapa ng laro at mga eksena ng laro.



Pinagmulan: opennet.ru

Magdagdag ng komento