Першы выпуск адкрытага шматкарыстальніцкага гульнявога рухавічка Ambient

Пасля года распрацоўкі прадстаўлены першы выпуск новага адчыненага гульнявога рухавічка Ambient. Рухавічок падае runtime для стварэння шматкарыстальніцкіх гульняў і 3D-прыкладанняў, кампіляваных ва ўяўленне WebAssembly і выкарыстоўвалых API WebGPU для адмалёўкі. Код напісаны на мове Rust і распаўсюджваецца пад ліцэнзіяй MIT.

Ключавой задачай пры распрацоўцы Ambient называецца прадастаўленне інструментаў, якія спрашчаюць распрацоўку шматкарыстальніцкіх гульняў і якія робяць іх стварэнне не складаней аднакарыстальніцкіх праектаў. Рухавічак першапачаткова накіраваны на стварэнне ўніверсальнага runtime, які падтрымлівае распрацоўку гульняў і прыкладанняў на любых мовах праграмавання, для якіх магчымая кампіляцыя ў прамежкавы код WebAssembly. Тым не менш, у першым выпуску пакуль рэалізавана толькі падтрымка распрацоўкі на мове Rust.

Ключавыя асаблівасці новага рухавічка:

  • Празрыстая падтрымка сеткавага ўзаемадзеяння. Рухавічок спалучае ў сабе функцыі кліента і сервера, дае ўсе неабходныя кампаненты для стварэння кліенцкай і сервернай логікі, а таксама аўтаматычна сінхранізуе стан сервера на кліентах. На баку кліента і сервера выкарыстоўваецца агульная мадэль дадзеных, што спрашчае перанос кода паміж бэкэндам і фронтэндам.
  • Запуск кожнага модуля ў сваім ізаляваным асяроддзі, які дазваляе абмежаваць уплыў кода, які не заслугоўвае даверу. Аварыйнае завяршэнне модуля не прыводзіць да аварыйнага завяршэння ўсяго прыкладання.
  • Архітэктура, арыентаваная на апрацоўку дадзеных (Data-oriented). Прадастаўленне мадэлі даных на аснове сістэмы кампанентаў, якімі можа маніпуляваць кожны модуль WASM. Выкарыстанне шаблону праектавання ECS (Entity Component System). Захоўванне дадзеных усіх кампанентаў у цэнтралізаванай БД на серверы, стан якой аўтаматычна рэплікуецца кліенту, які на сваім баку можа пашыраць дадзеныя з улікам лакальнага стану.
  • Магчымасць стварэння модуляў Ambient на любых мовах праграмавання, кампіляваных у WebAssembly (пакуль падтрымліваецца толькі Rust).
  • Фарміраванне на вынахадзе ўніверсальных выкананых файлаў, якія могуць запускацца ў Windows, macOS і Linux, і функцыянаваць як у ролі кліента, так і сервера.
  • Магчымасць вызначэння ўласных кампанентаў і "канцэпцый" (калекцый кампанентаў). У праектах, якія выкарыстоўваюць аднолькавыя кампаненты і канцэпцыі, забяспечваецца пераноснасць і сумеснае выкарыстанне даных, нават калі гэтыя дадзеныя спецыяльна не разлічаны на выкарыстанне ў канкрэтных праектах.
  • Падтрымка кампіляцыі рэсурсаў у розных фарматах, у тым ліку .glb і .fbx. Магчымасць струменевай загрузкі рэсурсаў па сетцы - кліент можа атрымаць усе неабходныя рэсурсы пры падключэнні да сервера (можна пачаць гуляць не чакаючы пакуль загрузяцца ўсе рэсурсы). Падтрымліваюцца фарматы мадэляў FBX і glTF, розныя фарматы гуку і выяваў.
  • Прасунутая сістэма адмалёўкі, якая выкарыстоўвае GPU для паскарэння высновы, і якая падтрымлівае выкананне адсячэння па зоне бачнасці і змену ўзроўняў дэталізацыі на боку GPU. Выкарыстанне па змаўчанні фізічна карэктнага рэндэрынгу (PBR), падтрымка анімацыі і каскадных ценявых карт.
  • Падтрымка сімуляцыі фізічных працэсаў на аснове рухавічка PhysX.
  • Сістэма пабудовы інтэрфейсаў карыстальніка, падобная да React.
  • Уніфікаваная сістэма ўводу, якая не залежыць ад бягучай платформы.
  • Сістэма прасторавага гуку з падключаюцца фільтрамі.

Распрацоўка пакуль знаходзіцца на стадыі альфа-версіі. З яшчэ не рэалізаванай функцыянальнасці можна адзначыць магчымасць запуску ў Web, кліенцкі API, API для кіравання шматструменнасцю, бібліятэка для стварэння інтэрфейсу карыстальніка, API для выкарыстання ўласных шэйдараў, падтрымка гуку, загрузка і захаванне кампанентаў ECS (Entity Component System), перазагрузка рэсурсаў на лета , аўтаматычнае маштабаванне сервераў, рэдактар ​​для сумеснага стварэння гульнявых карт і гульнявых сцэн.



Крыніца: opennet.ru

Дадаць каментар