MML adalah bahasa markup untuk menggambarkan objek dan pengalaman metaversal interaktif multi-pengguna 3D berdasarkan HTML.
Kunjungi https://mml.io/ untuk memulai dengan MML.
Lihat https://github.com/mml-io/mml-starter-project untuk mulai menjalankan dokumen MML sendiri.
Lihat https://github.com/mml-io/mml-playground untuk menemukan contoh pengalaman web 3D yang dapat mencakup dokumen MML.
"MML Stack" adalah kombinasi dari dua bagian utama yang biasanya digabungkan bersama:
MML (Bahasa) - Elemen dan atribut HTML 3D untuk menggambarkan objek dan pengalaman 3D
DOM Networked (Networking) - Protokol perpustakaan dan jaringan untuk menjalankan dokumen MML/HTML di server sehingga banyak pengguna dapat berinteraksi dengannya dalam mode multi -pengguna.
Misalnya
<m-cube id = "my-cube" color = "red"> </m-cube> <script> const cube = document.geteLementById ('my-cube'); cube.addeventListener ('klik', () => {cube.setAttribute ('color', 'blue'); }); </script>
HTML dan JavaScript dalam bentuk DOM (Model Objek Dokumen) memberikan fondasi yang ada untuk menggambarkan dan bermutasi hierarki elemen. MML menggunakan yayasan ini dengan elemen dan atribut baru untuk memungkinkan menggambarkan konsep 3D.
Dalam kasus penggunaan umum, dokumen MML dijalankan di server dan diamati dan berinteraksi dengan banyak pengguna.
Kemampuan ini dicapai dengan menjalankan dokumen MML di server menggunakan pustaka (dibangun secara tegas untuk MML) yang disebut "DOM jaringan".
Komponen server dan jaringan yang diperlukan untuk mendukung mode multi-pengguna ini tidak tergantung pada penambahan MML untuk HTML (dan dapat digunakan dengan HTML 2D biasa).
Server DOM jaringan dan klien MML kemudian dapat digunakan untuk mengizinkan banyak pengguna berinteraksi dengan instance objek yang sama pada saat yang sama, dan membawa objek ini ke dalam mesin game dan pengalaman dunia virtual web.
Keakraban : MML didasarkan pada HTML, cara paling umum untuk penulis dokumen untuk web. Ini membuatnya mudah didekati untuk berbagai pencipta.
Ekosistem : Ekosistem HTML sangat luas, dan karena MML didasarkan pada HTML, pencipta dapat memanfaatkan ekosistem perpustakaan, kerangka kerja, dan sumber belajar yang ada ini.
Portabilitas : Dokumen MML dapat berjalan di browser web modern apa pun, membuatnya mudah dibagikan dan dilihat.
Komposabilitas : Dokumen MML dapat terdiri dari beberapa dokumen yang berjalan di server yang berbeda, memungkinkan untuk membuat objek dunia virtual yang kompleks tanpa harus memberikan semua daya komputasi dan kemampuan teknis pada server tunggal.
MML adalah seperangkat elemen dan atribut HTML yang dapat digunakan untuk menggambarkan objek dan pengalaman 3D.
Elemen dan atribut ini dapat digunakan tanpa jaringan. Namun, ketika dokumen HTML termasuk tag MML dijalankan di server dan diekspos melalui beberapa pengguna Websocket dapat berinteraksi dengan instance dokumen yang sama secara bersamaan.
./packages/mml-web - Web Three.js MML Library
./packages/mml-web-client-Web Three.js MML Klien
./packages/mml-web-runner-Web Runner (untuk menjalankan dokumen MML di browser web daripada server)
./packages/schema - Skema MML dalam Bahasa Definisi Skema XML (XSD)
./packages/schema-validator - Paket untuk memvalidasi dokumen MML menggunakan skema MML
MML didasarkan pada satu set perpustakaan (dibangun secara tegas untuk MML) yang disebut "DOM jaringan".
Komponen server dan jaringan yang diperlukan untuk mendukung mode multi-pengguna tidak tergantung pada penambahan MML ke HTML (dan dapat digunakan dengan HTML 2D biasa).
DOM jaringan
./packages/networked-dom-web-Web Networked Dom Library
./packages/networked-dom-web-client-Web Networked Dom Client
./packages/networked-dom-web-runner-Web Networked Dom Runner (untuk menjalankan dokumen DOM jaringan di browser web daripada server)
./packages/networked-dom-protocol-Jaringan DOM Websocket Protocol TypeScript Definisi
./packages/observable-dom-common-dom umum yang dapat diamati
./packages/observable-dom - pustaka dom (eksekusi jsdom) yang dapat diamati
./packages/networked-dom-Document-Library Dokumen Dom Jaringan
Repo ini berisi perpustakaan dan definisi skema untuk MML. Cara yang paling mungkin untuk menggunakan repo ini adalah mengkloningnya sebagai perpustakaan untuk proyek lain.
Kloning repo
npm install
npm run iterate
Builds Dan Mulai Membangun Artefak Paket Secara Tertahap Dari Sumber
Server harus mulai untuk contoh:
http: // localhost: 7070 - server contoh mml
http: // localhost: 7071 - server contoh dom jaringan
Untuk menggunakan salah satu perpustakaan dalam repo ini di proyek lain, Anda dapat menggunakan npm link
untuk membuat dependensi ini dapat ditautkan ke proyek NPM Anda yang lain.
npm run link-all
menjalankan npm link
di semua paket calon yang diterbitkan untuk memungkinkan penggunaan sebagai dependensi lokal untuk dikembangkan. Ini juga akan mencetak perintah untuk menautkan dependensi.
Diagram di bawah ini menunjukkan arsitektur tingkat tinggi dari sistem MML ketika digunakan di browser web dengan server DOM jaringan yang menjalankan dokumen MML.
grafik td
Subgraph Networked Dom Server
Networked-Dom-Server [Server Dom Networked]
Jaringan-DOM-Dokumen [Dokumen DOM Jaringan]
JSDOM [JSDOM]
WebSocket [Handler Websocket]
Networked-Dom-Server-> jaringan-dom-dokumen
Jaringan-DOM-DOCUMEN-> JSDOM
akhir
MML-Source ["Kode Sumber MML (HTML)"]
MML-Source-> Jaringan-Dom-Document
Browser Web Subgraph
Browser web [browser web]
Subgraph "Pengalaman Web 3D"
Tiga-JS-scene [adegan Three.js]
Subgraph Networked Dom Client
Networked-Dom-Client [Networked Dom Client]
dom ["dom (html)"]
Networked-Dom-Client-> Dom
akhir
Perpustakaan Klien Subgraph MML
Web-Browser-MML-CLient [MML Remotendocument Instance]
MML-tiga-JS [MML Three.js]
MML-THREE-JS-Acara-> Web-Browser-MML-CLIENT
Web-browser-mml-client-> mml-tiga-js
akhir
dom-diterjemahkan oleh-> mml-tiga-js
MML-tiga-JS-disusun menjadi-> tiga-js-scene
akhir
akhir
Networked-Dom-Client-> 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
Memuat