MML-это язык разметки для описания трехмерных многопользовательских интерактивных интерактивных объектов и опыта, основанных на HTML.
Посетите https://mml.io/, чтобы начать с MML.
Проверьте https://github.com/mml-io/mml-starter-project, чтобы начать запуск документа MML для себя.
Проверьте https://github.com/mml-io/mml-playground, чтобы найти пример трехмерного веб-опыта, который может включать документы MML.
«Стек MML» представляет собой комбинацию двух основных частей, обычно объединенных вместе:
MML (язык) - 3D HTML -элементы и атрибуты для описания трехмерных объектов и опыта
Networked Dom (Networking) - библиотечный и сетевой протокол для запуска документов MML/HTML на сервере, чтобы несколько пользователей могли взаимодействовать с ними в многопользовательском режиме.
Например
<m-cube id = "my-cube" color = "red"> </m-cube> <script> const cube = document.getElementbyId ('my-cube'); cube.addeventlistener ('click', () => {cube.setattribute ('color', 'blue'); }); </script>
HTML и JavaScript в форме DOM (объект документа) предоставляют существующую основу для описания и мутирования иерархии элементов. MML использует этот фундамент с новыми элементами и атрибутами, чтобы разрешить описание 3D -концепций.
В случае общего использования документ MML запускается на сервере и наблюдается и взаимодействует несколькими пользователями.
Эта возможность достигается путем запуска документа MML на сервере с использованием библиотеки (построенной прямо для MML) под названием «Networked Dom».
Серверные и сетевые компоненты, необходимые для поддержки этого многопользовательского режима, не зависят от добавок MML в HTML (и могут использоваться с обычным 2D HTML).
Сетевой сервер DOM и MML -клиент можно использовать, чтобы позволить нескольким пользователям взаимодействовать с одним и тем же экземпляром объекта одновременно, и внедрить эти объекты в игровые двигатели и опыт виртуального мира веб -виртуального мира.
Знакомство : MML основан на HTML, наиболее распространенном способе автора документов для Интернета. Это делает его доступным для широкого спектра создателей.
Экосистема : HTML -экосистема огромна, и поскольку MML основан на HTML, создатели могут воспользоваться этой существующей экосистемой библиотек, структур и учебных ресурсов.
Портативность : документы MML могут работать в любом современном веб -браузере, что облегчает их обмен и просмотр.
Композитивность : документы MML могут быть составлены из нескольких документов, работающих на разных серверах, что позволяет создавать сложные виртуальные мировые объекты без необходимости обеспечения всей вычислительной мощности и технических возможностей на одном сервере.
MML - это набор HTML -элементов и атрибутов, которые можно использовать для описания трехмерных объектов и опыта.
Эти элементы и атрибуты могут быть использованы без сетевого взаимодействия. Однако, когда HTML -документ, включающий теги MML, запускается на сервере и выявляется через WebSocket, несколько пользователей могут взаимодействовать с одним и тем же экземпляром документа одновременно.
./packages/mml-web - Web Thre.js Mml Library
./packages/mml-web-client-web three.js mml client
./packages/mml-web-runner-Web Runner (для запуска документов MML в веб-браузере, а не на сервере)
./packages/schema - схема MML на языке определения схемы XML (xsd)
./packages/schema-validator - пакет для проверки документа MML с использованием схемы MML
MML основан на наборе библиотек (построенных прямо для MML), называемого «сетевым DOM».
Серверные и сетевые компоненты, необходимые для поддержки многопользовательского режима, не зависят от добавок MML в HTML (и могут использоваться с обычным 2D HTML).
Сетевой Dom
./packages/networked-dom-web-Библиотека Dom Web Networked
./packages/networked-dom-web-client-web Networked Dom Client
./packages/networked-dom-web-runner-Web Networked Dom Runner (для запуска документов DOM в сети в веб-браузере, а не на сервере)
./packages/networked-dom-protocol-сетевой протокол Dom Websocket
./packages/observable-dom-common-наблюдаемый DOM Common
./packages/observable-dom - Внешняя библиотека Dom (JSDOM выполнение)
./packages/networked-dom-document-Библиотека документов с сетью
Этот репо содержит библиотеки и определения схемы для MML. Наиболее вероятным способом использования этого репо является клонирование его в качестве библиотек для других проектов.
Клонировать репо
npm install
npm run iterate
Builds и начинает постепенно строительство пакета артефактов из источников
Серверы должны начать для примеров:
http: // localhost: 7070 - сервер примеров MML
http: // localhost: 7071 - сетевой сервер примеров DOM
Чтобы использовать любую из библиотек в этом репо в другом проекте, вы можете использовать npm link
, чтобы сделать эти зависимости связать с вашим другим проектом NPM.
npm run link-all
Runs npm link
во всех потенциальных опубликованных пакетах, которые позволяют использовать в качестве локальных зависимостей для развития. Он также распечатает команды для связи зависимостей.
На приведенной ниже диаграмме показана архитектура высокого уровня системы MML при использовании в веб-браузере с сетевым сервером DOM, работающим в документе MML.
График тд
Subgraph Networked Dom Server
сетевая дома-сервер [сетевой Dom Server]
Networked-Dom-Document [Networked Dom Document]
JSDOM [JSDOM]
websocket [websocket andler]
сетевой дом-сервер-> сетевой-документ
Сеть-гомодокумент-> JSDOM
конец
MML-Source ["Source Code MML (HTML)"]
MML-Source-> Networked-Dom-Document
Подграф -веб -браузер
Web-Browser [веб-браузер]
Подграф "3D Web Experience"
Three-JS-сцен [сцена Three.js]
Подграф сетевой клиент DOM
сетевой дом-клиент [Networked Dom Client]
dom ["dom (html)"]
сетевой дом-клиент-> dom
конец
Клиентская библиотека подграфа MML
Web-Browser-MML-Client [MML-экземпляр remotendocument]]
MML-Three-JS [MML Ther.js]
MML-Three-JS-Events-> Web-Browser-Mml-Client
Web-Browser-Mml-Client-> MML-Three-JS
конец
dom-рендерирован-> mml-three-js
MML-Three-JS-составлен в-> три-JS-сцену
конец
конец
сетевой дом-клиент-> WS-Addr
WS-ADDR-> WebSocket
ws-addr ["ws: // ..."]
WebSocket-> Networked-Dom-Server
Web-Browser-> Web-Browser-Mml-Client
Web-Browser-Mml-Client-> Networked-Dom-Client
Загрузка