MML ist eine Markup-Sprache zur Beschreibung von interaktiven Metaversalobjekten und -erlebnissen mit Multi-Benutzern auf der Grundlage von HTML.
Besuchen Sie https://mml.io/, um mit MML zu beginnen.
Schauen Sie sich https://github.com/mml-io/mmlstarter-project an, um selbst ein MML-Dokument selbst auszuführen.
Schauen Sie sich https://github.com/mml-io/mml-playground an, um ein Beispiel für ein 3D-Weberlebnis zu finden, das MML-Dokumente enthalten kann.
Der "MML Stack" ist eine Kombination von zwei Hauptteilen, die normalerweise miteinander kombiniert sind:
MML (Sprache) - 3D -HTML -Elemente und -attribute zur Beschreibung von 3D -Objekten und -erlebnissen
Networked DOM (Networking) - Ein Bibliotheks- und Netzwerkprotokoll zum Ausführen von MML/HTML -Dokumenten auf einem Server, sodass mehrere Benutzer in einem Mehrbenutzermodus mit ihnen interagieren können.
Z.B
<m-cube id = "my-cube" color = "rot"> </m-cube> <script>
const cobe = document.getElementById ('my-cube');
cobe.addeventListener ('click', () => {cube.setAttribute ('color', 'blau');
}); </script>HTML und JavaScript in Form des DOM (Dokumentobjektmodells) bieten eine vorhandene Grundlage für die Beschreibung und Mutation einer Hierarchie von Elementen. MML verwendet diese Stiftung mit neuen Elementen und Attributen, um die Beschreibung von 3D -Konzepten zu ermöglichen.
Im gemeinsamen Anwendungsfall wird ein MML -Dokument auf einem Server ausgeführt und von mehreren Benutzern beobachtet und interagiert.
Diese Funktion wird erreicht, indem ein MML -Dokument auf einem Server verwendet wird, das eine Bibliothek (ausdrücklich für MML) namens "Networked DOM" erstellt hat.
Die zur Unterstützung dieses Multi-Benutzer-Modus erforderlichen Server- und Netzwerkkomponenten sind unabhängig von den MML-Ergänzungen zu HTML (und können mit normalem 2D-HTML verwendet werden).
Der networked DOM -Server- und MML -Client kann dann verwendet werden, damit mehrere Benutzer gleichzeitig mit derselben Instanz eines Objekts interagieren und diese Objekte in Spielermotoren und Web -Virtual World -Erlebnisse in Web bringen können.
Vertrautheit : MML basiert auf HTML, der häufigsten Möglichkeit, Dokumente für das Web zu verzeichnen. Dies macht es für eine Vielzahl von Schöpfer zugänglich.
Ökosystem : Das HTML -Ökosystem ist riesig, und da MML auf HTML basiert, können Schöpfer dieses vorhandene Ökosystem von Bibliotheken, Frameworks und Lernressourcen nutzen.
Portabilität : MML -Dokumente können in jedem modernen Webbrowser ausgeführt werden, wodurch sie einfach zu teilen und zu sehen sind.
Kompositionsfähigkeit : MML -Dokumente können aus mehreren Dokumenten bestehen, die auf verschiedenen Servern ausgeführt werden, sodass komplexe Objekte für virtuelle Welt erstellt werden können, ohne dass die gesamte Rechenleistung und die technische Funktion auf einem einzelnen Server bereitgestellt werden müssen.
MML ist eine Reihe von HTML -Elementen und -attributen, mit denen 3D -Objekte und -erlebnisse beschrieben werden können.
Diese Elemente und Attribute können ohne Vernetzung verwendet werden. Wenn jedoch ein HTML -Dokument mit MML -Tags auf einem Server ausgeführt und über ein WebSocket ausgesetzt wird, können mehrere Benutzer gleichzeitig mit derselben Instanz des Dokuments interagieren.
./packages/mml-web - Web Three.js MML Library
./packages/mml-web-client-Web Three.js MML Client
./packages/mml-web-runner-Webläufer (zum Ausführen von MML-Dokumenten in einem Webbrowser anstelle eines Servers)
./packages/schema - MML -Schema in XML Schema Definitionssprache (XSD)
./Packages/schema -validator - Ein Paket zum Validieren von MML -Dokument mit dem MML -Schema
MML basiert auf einer Reihe von Bibliotheken (ausdrücklich für MML erstellt) "Networked DOM".
Die Server- und Netzwerkkomponenten, die zur Unterstützung des Multi-User-Modus erforderlich sind, sind unabhängig von den MML-Ergänzungen zu HTML (und können mit normalem 2D-HTML verwendet werden).
Vernetzte DOM
./packages/networked-dom-web-Web Networked DOM-Bibliothek
./packages/networked-dom-web-client-Web Networked DOM-Client
./packages/networked-dom-web-runner-Web Networked DOM-Läufer (zum Ausführen von netzwerkartigen DOM-Dokumenten in einem Webbrowser anstelle eines Servers)
./packages/networked-dom-protocol-Networked DOM WebSocket Protocol TypeScript-Definition
./packages/observable-dom-common-Observable DOM Common
./packages/observable-dom - Observable DOM (JSDOM Execution) Bibliothek
./Packages/Networked-dom-document-Networked DOM-Dokumentbibliothek
Dieses Repo enthält Bibliotheken und Schema -Definitionen für MML. Die wahrscheinlichste Möglichkeit, dieses Repo zu nutzen, besteht darin, ihn als Bibliotheken für andere Projekte zu klonen.
Klonen Sie das Repo
npm install
npm run iterate Builds und beginnt inkrementell, Paketartefakte aus Quellen zu erstellen
Server sollten für Beispiele beginnen:
http: // localhost: 7070 - mml Beispielserver
http: // localhost: 7071 - networked DOM -Beispielserver
Um eine der Bibliotheken in diesem Repo in einem anderen Projekt zu verwenden, können Sie npm link verwenden, um diese Abhängigkeiten mit Ihrem anderen NPM -Projekt verknüpfbar zu machen.
npm run link-all FAHRE LINK-ALL npm link in allen potenziellen veröffentlichten Paketen ausgeführt, damit die Verwendung als lokale Abhängigkeiten entwickelt werden kann. Es werden auch die Befehle gedruckt, um die Abhängigkeiten zu verknüpfen.
Das folgende Diagramm zeigt die hochrangige Architektur des MML-Systems, wenn sie in einem Webbrowser verwendet werden, wobei der vernetzte DOM-Server ein MML-Dokument ausführt.
Graph TD
Subgraph Networked DOM -Server
networked-dom-server [Networked DOM Server]
Networked-Dom-Dokument [Networked DOM-Dokument]
JSDOM [JSDOM]
Websocket [WebSocket -Handler]
Networked-Dom-Server-> Networked-Dom-Dokument
Networked-Dom-Document-> JSDOM
Ende
MML-Source ["MML Quellcode (HTML)"]
MML-Source-> Networked-Dom-Dokument
Subgraph -Webbrowser
Webbrowser [Webbrowser]
Subgraph "3D -Weberfahrung"
Drei-JS-Szene [Three.js-Szene]
Subgraph Networked DOM -Client
Networked-Dom-Client [Networked DOM Client]
DOM ["DOM (HTML)"]
Networked-Dom-Client-> Dom
Ende
Subgraph MML Client Library
Web-Browser-MML-Client [MML Remotendocument Instance]
MML-Drei-Js [MML Three.js]
MML-Drei-Js-Ereignisse-> Web-Browser-MML-Client
Web-Browser-MML-Client-> MML-Three-Js
Ende
DOM-gerendert von-> MML-Drei-Js
MML-Drei-Js-komponiert in-> Drei-JS-Szene
Ende
Ende
Networked-Dom-Client-> WS-ADDR
WS-ADDR-> WebSocket
WS-ADDR ["WS: // ..."]
WebSocket-> Networked-dom-Server
Webbrowser-> Web-Browser-MML-Client
Web-Browser-MML-Client-> Networked-Dom-Client Laden