MML est un langage de balisage pour décrire des objets et des expériences de métavour interactifs multi-utilisateurs 3D basés sur HTML.
Visitez https://mml.io/ pour commencer avec MML.
Consultez https://github.com/mml-io/mml-starter-project pour commencer à exécuter un document MML pour vous-même.
Consultez https://github.com/mml-io/mml-playground pour trouver un exemple d'une expérience Web 3D qui peut inclure des documents MML.
La "pile MML" est une combinaison de deux pièces principales généralement combinées ensemble:
MML (langue) - Éléments et attributs HTML 3D pour décrire les objets et expériences 3D
DOM (Networking) en réseau - Un protocole de bibliothèque et de réseau pour exécuter des documents MML / HTML sur un serveur afin que plusieurs utilisateurs puissent interagir avec eux en mode multi-utilisateurs.
Par exemple
<m-cube id = "my-cube" color = "red"> </ m-cube> <cript>
const cube = document.getElementById («my-cube»);
cube.addeventListener ('click', () => {cube.setAttribute ('Color', 'Blue');
}); </ script>HTML et JavaScript sous la forme du DOM (Document Object Model) fournissent une base existante pour décrire et muter une hiérarchie d'éléments. MML utilise cette fondation avec de nouveaux éléments et attributs pour permettre la description des concepts 3D.
Dans le cas d'utilisation commun, un document MML est exécuté sur un serveur et est observé et interagi par plusieurs utilisateurs.
Cette capacité est obtenue en exécutant un document MML sur un serveur à l'aide d'une bibliothèque (construite expressément pour MML) appelée "Dom en réseau".
Les composants du serveur et du réseau nécessaires pour prendre en charge ce mode multi-utilisateurs sont indépendants des ajouts MML à HTML (et peuvent être utilisés avec un HTML 2D régulier).
Le serveur Dom en réseau et le client MML peuvent ensuite être utilisés pour permettre à plusieurs utilisateurs d'interagir avec la même instance d'un objet en même temps et d'amener ces objets dans les moteurs de jeu et les expériences du monde virtuels Web.
Familiarité : MML est basé sur HTML, le moyen le plus courant de les documents d'auteur pour le Web. Cela le rend accessible pour un large éventail de créateurs.
Écosystème : l'écosystème HTML est vaste, et parce que le MML est basé sur HTML, les créateurs peuvent profiter de cet écosystème existant de bibliothèques, de cadres et de ressources d'apprentissage.
Portabilité : les documents MML peuvent s'exécuter dans n'importe quel navigateur Web moderne, ce qui les rend faciles à partager et à afficher.
Composabilité : les documents MML peuvent être composés de plusieurs documents exécutés sur différents serveurs, ce qui permet de créer des objets du monde virtuel complexes sans avoir à fournir toute la puissance de calcul et la capacité technique sur un seul serveur.
MML est un ensemble d'éléments et d'attributs HTML qui peuvent être utilisés pour décrire des objets et des expériences 3D.
Ces éléments et attributs peuvent être utilisés sans réseautage. Cependant, lorsqu'un document HTML comprenant des balises MML est exécuté sur un serveur et exposé via un WebSocket plusieurs utilisateurs peuvent interagir avec la même instance du document en même temps.
./packages/mml-web - bibliothèque web trois.js MML
./packages/mml-web-lient - Client web trois.js MML
./packages/mml-web-runner - Web Runner (pour exécuter des documents MML dans un navigateur Web plutôt qu'un serveur)
./packages/schema - schéma MML dans le langage de définition du schéma XML (XSD)
./packages/schema-validator - Un package de validation du document MML à l'aide du schéma MML
MML est basé sur un ensemble de bibliothèques (construites expressément pour MML) appelées "Dom en réseau".
Les composants du serveur et du réseau nécessaires pour prendre en charge le mode multi-utilisateurs sont indépendants des ajouts MML à HTML (et peuvent être utilisés avec un HTML 2D régulier).
DOM en réseau
./packages/networked-dom-web - bibliothèque DOM en réseau Web
./packages/networked-dom-web-client - Client DOM en réseau Web
./packages/networked-dom-web-runner - Runner Dom en réseau Web (pour exécuter des documents DOM en réseau dans un navigateur Web plutôt qu'un serveur)
./packages/networked-dom-protocol - Définition de type protocole DOM WebSocket en réseau.
./packages/observable-dom-common - DOM observable commun
./packages/Observable-Dom - Bibliothèque observable Dom (JSDom Exécution)
./packages/networked-dom-document - bibliothèque de documents DOM en réseau
Ce repo contient des bibliothèques et des définitions de schéma pour MML. La façon la plus probable d'utiliser ce dépôt consiste à le cloner comme bibliothèques pour d'autres projets.
Cloner le repo
npm install
npm run iterate se construit et commence les artefacts de forfait de construction progressivement provenant de sources
Les serveurs doivent commencer pour des exemples:
http: // localhost: 7070 - Exemple de serveur MML
http: // localhost: 7071 - Exemple de serveur DOM en réseau
Pour utiliser l'une des bibliothèques de ce dépôt dans un autre projet, vous pouvez utiliser npm link pour rendre ces dépendances liées à votre autre projet NPM.
npm run link-all Exécute npm link dans tous les packages édifiés pour permettre à l'utilisation de dépendances locales avec lesquelles se développer. Il imprimera également les commandes pour lier les dépendances.
Le diagramme ci-dessous montre l'architecture de haut niveau du système MML lorsqu'il est utilisé dans un navigateur Web avec le serveur DOM en réseau exécutant un document MML.
graphique TD
Serveur DOM en réseau subgraph
Dom-Server en réseau [serveur DOM en réseau]
Document en réseau [document DOM en réseau]
jsdom [jsdom]
WebSocket [WebSocket Handler]
Dom-Server en réseau -> Dom-document en réseau
Document en réseau -> jsdom
fin
mml-source ["Code source MML (HTML)"]
MML-source -> Dom-document en réseau
navigateur Web Sub-Graph
Browser Web [Browser Web]
Sub-Graph "Expérience Web 3D"
Three-Js-Scene [Scène trois.js]
Client DOM en réseau subgraph
Dom-Client en réseau [Client Dom en réseau]
Dom ["Dom (html)"]
Dom-Client en réseau -> DOM
fin
Bibliothèque client sous-graphique MML
Web-Browser-MML-Client [instance MML RemotenDocument]
mml-trois-js [mml trois.js]
MML-Three-JS - Events -> Web-Browser-MML-Client
Browser-MML-Client -> MML-Three-Js
fin
Dom - rendu par -> mml-trois-js
MML-Three-Js - composé en -> trois-js-scene
fin
fin
Dom-Client en réseau -> WS-ADDR
WS-ADDR -> WebSocket
ws-addr ["ws: // ..."]
WebSocket -> Dom-Server en réseau
Browser Web -> Web-Browser-MML-Client
BROWNER-MML-CLIENT -> Dom-Dom-Client en réseau Chargement