MML es un lenguaje de marcado para describir objetos y experiencias de metaversas interactivas multiusuario 3D basadas en HTML.
Visite https://mml.io/ para comenzar con MML.
Echa un vistazo a https://github.com/mml-io/mml-starter-project para comenzar a ejecutar un documento MML para ti.
Visite https://github.com/mml-io/mml-playground para encontrar un ejemplo de una experiencia web en 3D que pueda incluir documentos MML.
La "pila MML" es una combinación de dos piezas principales generalmente combinadas juntas:
MML (Idioma) - Elementos y atributos HTML 3D para describir objetos y experiencias 3D
DOM en red (red de red) : un protocolo de biblioteca y red para ejecutar documentos MML/HTML en un servidor para que múltiples usuarios puedan interactuar con ellos en modo de múltiples usuarios.
P.ej
<M-Cube id = "my-cube" color = "rojo"> </m-cube> <script> const cube = document.getElementById ('my-cube'); cube.addeventListener ('click', () => {cube.setattribute ('color', 'azul'); }); </script>
HTML y JavaScript en forma del DOM (modelo de objeto de documento) proporcionan una base existente para describir y mutar una jerarquía de elementos. MML utiliza esta base con nuevos elementos y atributos para permitir la descripción de conceptos 3D.
En el caso de uso común, se ejecuta un documento MML en un servidor y se observa e interactúa con múltiples usuarios.
Esta capacidad se logra ejecutando un documento MML en un servidor utilizando una biblioteca (construida expresamente para MML) llamada "DOM en red".
Los componentes del servidor y la red necesarios para admitir este modo multiusuario son independientes de las adiciones MML a HTML (y pueden usarse con HTML 2D regular).
El servidor DOM en red y el cliente MML se pueden usar para permitir que varios usuarios interactúen con la misma instancia de un objeto al mismo tiempo, y traer estos objetos a los motores de juego y las experiencias del mundo virtual web.
Familiaridad : MML se basa en HTML, la forma más común de los documentos del autor para la web. Esto lo hace accesible para una amplia gama de creadores.
Ecosistema : el ecosistema HTML es vasto, y debido a que MML se basa en HTML, los creadores pueden aprovechar este ecosistema existente de bibliotecas, marcos y recursos de aprendizaje.
Portabilidad : los documentos MML pueden ejecutarse en cualquier navegador web moderno, haciéndolos fáciles de compartir y ver.
Composibilidad : los documentos MML pueden estar compuestos por múltiples documentos que se ejecutan en diferentes servidores, lo que permite crear objetos mundiales virtuales complejos sin tener que proporcionar toda la capacidad de potencia de cómputo y la capacidad técnica en un solo servidor.
MML es un conjunto de elementos y atributos HTML que se pueden usar para describir objetos y experiencias 3D.
Estos elementos y atributos se pueden usar sin redes. Sin embargo, cuando un documento HTML que incluye etiquetas MML se ejecuta en un servidor y se expuso a través de un WebSocket, varios usuarios pueden interactuar con la misma instancia del documento al mismo tiempo.
./packages/mml-web - biblioteca mml de Web Three.js
./packages/mml-web-client-client de mml web.
./packages/mml-web-runner-Web Runner (para ejecutar documentos MML en un navegador web en lugar de un servidor)
./packages/schema - Schema MML en el lenguaje de definición de esquema XML (XSD)
./packages/schema-validator: un paquete para validar el documento MML utilizando el esquema MML
MML se basa en un conjunto de bibliotecas (construidas expresamente para MML) llamada "DOM en red".
Los componentes del servidor y la red necesarios para admitir el modo multiusuario son independientes de las adiciones MML a HTML (y pueden usarse con HTML 2D regular).
DOM en red
./packages/networked-dom-web-biblioteca DOM de red web web
./packages/networked-dom-web-client-cliente DOM en red web
./packages/networked-dom-web-runner-DOM Runner en red web (para ejecutar documentos DOM en red en un navegador web en lugar de un servidor)
./packages/networked-dom-protocol-Definición de tipografías de protocolo DOM WebSocket de redes en red
./packages/observable-domcommon-DOM observable Common
./packages/observable-dom - biblioteca observable dom (ejecución de JSDOM)
./packages/networked-dom-document-Biblioteca de documentos DOM en red
Este repositorio contiene bibliotecas y definiciones de esquema para MML. La forma más probable de usar este repositorio es clonarlo como bibliotecas para otros proyectos.
Clonar el repositorio
npm install
npm run iterate
Builds y comienza a construir artefactos de paquetes de construcción incrementales de fuentes
Los servidores deben comenzar para ejemplos:
http: // localhost: 7070 - servidor de ejemplo mml
http: // localhost: 7071 - servidor de ejemplo de DOM en red
Para usar cualquiera de las bibliotecas en este repositorio en otro proyecto, puede usar npm link
para que estas dependencias sean vinculadas a su otro proyecto NPM.
npm run link-all
Ejecuta npm link
en todos los paquetes posibles para permitir el uso de dependencias locales para desarrollar. También imprimirá los comandos para vincular las dependencias.
El siguiente diagrama muestra la arquitectura de alto nivel del sistema MML cuando se usa en un navegador web con el servidor DOM en red que ejecuta un documento MML.
Gráfico TD
Subgraph Networked DOM Servidor
servidor de domingos en red [servidor DOM en red]
Dom-Document en red [documento DOM en red]
JSDOM [JSDOM]
WebSocket [WebSocket Handler]
Networked-Dom-server-> Documento de DOM en red
Dom-Document de red en red-> JSdom
fin
MML-Source ["Código fuente MML (HTML)"]
Source MML-> Documento de DOM en red
navegador web subgraph
navegador web [navegador web]
Subgraph "Experiencia web 3D"
Tres-JS-Scene [Three.js Scene]
Subgraph Cliente DOM en red
Networked-DOM-Client [Cliente DOM en red]
DOM ["DOM (HTML)"]
Networked-Dom-Client-> DOM
fin
Subgraph Biblioteca de clientes MML
BROWSER-MMML-CLIENT [instancia mml remotendocument]
MML-Three-JS [MML tres.js]
mml-three-js-eventos-> web-navegador-mml-client
webser-mml-client-> mml-three-js
fin
DOM-Renderizado por-> mml-three-js
mml-three-js-compuesto en-> tres-js-scene
fin
fin
Networked-Dom-Client-> WS-ADDR
WS-ADDR-> WebSocket
ws-addr ["ws: // ..."]
WebSocket-> Networked-Dom-Merver
navegador web-> web-navegador-mml-client
BROWSER-MMML-CLIENT-> Networked-Dom-Client
Cargando