O MML é um idioma de marcação para descrever objetos e experiências de metaversal interativo de vários usuários 3D com base no HTML.
Visite https://mml.io/ para começar com o MML.
Confira https://github.com/mml-io/mml-starter-project para começar a executar um documento MML por si mesmo.
Confira https://github.com/mml-io/mml-playground para encontrar um exemplo de uma experiência na web 3D que possa incluir documentos MML.
A "pilha MML" é uma combinação de duas peças principais geralmente combinadas:
MML (Idioma) - Elementos e atributos HTML 3D para descrever objetos e experiências 3D
DOM em rede (Networking) - Um protocolo de biblioteca e rede para executar documentos MML/HTML em um servidor para que vários usuários possam interagir com eles em um modo multiusuário.
Por exemplo
<m-cubo id = "my-cube" color = "Red"> </m-cube> <cript> const cube = document.getElementById ('my-cubo'); cube.addeventListener ('click', () => {cube.setAttribute ('color', 'azul'); }); </script>
HTML e JavaScript na forma do DOM (modelo de objeto de documentos) fornecem uma base existente para descrever e mutar uma hierarquia de elementos. A MML usa essa base com novos elementos e atributos para permitir a descrição dos conceitos 3D.
No caso de uso comum, um documento MML é executado em um servidor e é observado e interagido por vários usuários.
Esse recurso é alcançado executando um documento MML em um servidor usando uma biblioteca (criada expressamente para MML) chamada "DOM em rede".
Os componentes do servidor e da rede necessários para suportar esse modo multiusuário são independentes das adições de MML ao HTML (e podem ser usadas com HTML 2D regular).
O servidor DOM em rede e o cliente MML podem ser usados para permitir que vários usuários interajam com a mesma instância de um objeto ao mesmo tempo e trazer esses objetos para os mecanismos de jogo e as experiências do mundo virtual da Web.
Familiaridade : o MML é baseado no HTML, a maneira mais comum de autores documentos para a Web. Isso o torna acessível para uma ampla gama de criadores.
ECOSYSTEM : O ecossistema HTML é vasto e, como o MML é baseado no HTML, os criadores podem tirar proveito desse ecossistema existente de bibliotecas, estruturas e recursos de aprendizado.
Portabilidade : os documentos MML podem ser executados em qualquer navegador da Web moderno, facilitando o compartilhamento e a visualização.
Composibilidade : os documentos MML podem ser compostos por vários documentos em execução em diferentes servidores, possibilitando a criação de objetos virtuais complexos do mundo sem precisar fornecer toda a potência de computação e capacidade técnica em um único servidor.
O MML é um conjunto de elementos e atributos HTML que podem ser usados para descrever objetos e experiências 3D.
Esses elementos e atributos podem ser usados sem redes. No entanto, quando um documento HTML, incluindo tags MML, é executado em um servidor e exposto por meio de um WebSocket, vários usuários podem interagir com a mesma instância do documento ao mesmo tempo.
./packages/mml-web - biblioteca Web Three.js MML
./packages/mml-web-client-Web Three.js MML Client
./packages/mml-web-runner-Web Runner (para executar documentos MML em um navegador da web em vez de um servidor)
./packages/schema - esquema MML em XML Schema Definition Language (XSD)
./packages/schema-validator - um pacote para validar o documento MML usando o esquema MML
O MML é baseado em um conjunto de bibliotecas (construídas expressamente para MML) chamado "DOM em rede".
Os componentes do servidor e da rede necessários para suportar o modo multi-usuário são independentes das adições de MML ao HTML (e podem ser usadas com HTML 2D regular).
DOM em rede
./packages/networked-dom-web-biblioteca DOM em rede web
./packages/networked-dom-web-client-Web Rede Dom Client
./packages/networked-dom-web-runner-web redesed Dom Runner (para executar documentos DOM em rede em um navegador da web em vez de um servidor)
./packages/networked-dom-protocol-Definição de Dom Websocket Protocol em rede Dom WebSocket
./packages/observable-dom-common-Dom observável comum
./packages/observable-dom - Biblioteca de DOM (JSDOM) observável (JSDOM)
./packages/networked-dom-document-biblioteca de documentos DOM em rede
Este repo contém definições de bibliotecas e esquema para MML. A maneira mais provável de usar esse repositório é cloná -lo como bibliotecas para outros projetos.
Clone o repo
npm install
npm run iterate
Builds e começa a construir incrementalmente artefatos de pacotes de fontes
Os servidores devem iniciar para exemplos:
http: // localhost: 7070 - servidor de exemplo mml
http: // localhost: 7071 - Servidor de exemplo de DOM em rede
Para usar qualquer uma das bibliotecas neste repositório em outro projeto, você pode usar npm link
para tornar essas dependências vinculadas ao seu outro projeto NPM.
npm run link-all
executa npm link
em todos os pacotes publicados para permitir o uso de dependências locais. Ele também imprimirá os comandos para vincular as dependências.
O diagrama abaixo mostra a arquitetura de alto nível do sistema MML quando usada em um navegador da Web com o servidor DOM em rede executando um documento MML.
Gráfico TD
Servidor DOM em rede de subgrafias
Rede-Dom-Server [Servidor DOM em rede]
Documentos em rede [documento DOM em rede]
JSDOM [JSDOM]
WebSocket [WebSocket Handler]
Rede-Dom-Server-> Dom-documental em rede
Document-Dom em rede-> JSDOM
fim
MML-SOURCE ["Código-fonte MML (HTML)"]
MML-SOURCE-> DOM-DOMED-DOM
Navegador da web do subgraf
Navegador da web [navegador da web]
SUBRAPIMENTO "EXPERIÊNCIA DE Web 3D"
Cena de três Js-scene [cena três.js]
Subgraph Networked DOM Client
Rede-Dom-Client [cliente DOM em rede]
dom ["dom (html)"]
Rede-Dom-Client-> DOM
fim
Biblioteca de clientes do subgraf MML
Web-navegador-MML-Client [Instância do MML Remotendocument]
MML-Three-Js [MML três.js]
MML-Three-Js-Eventos-> Web-Browser-MML-Client
Navegador da Web-MML-Client-> MML-Three-Js
fim
Dom-renderizado por-> MML-Three-Js
MML-Three-Js-Composto em-> três-JS-Scene
fim
fim
DOM-DOM-DOM-> WS-ADDR
WS-ADDR-> WebSocket
ws-addr ["ws: // ..."]
WebSocket-> Rede-Dom-Server
Navegador da web-> Web-Browser-MML-Client
Navegador da Web-MML-Client-> Rede-Dom-Client
Carregando