MMLは、HTMLに基づいた3Dマルチユーザーインタラクティブメタバースオブジェクトとエクスペリエンスを記述するためのマークアップ言語です。
https://mml.io/にアクセスして、MMLを始めましょう。
https://github.com/mml-io/mml-starter-projectをチェックして、自分でMMLドキュメントを実行し始めてください。
https://github.com/mml-io/mml-playgroundをチェックして、MMLドキュメントを含む3D Webエクスペリエンスの例を見つけてください。
「MMLスタック」は、通常、2つのメインピースを組み合わせた組み合わせです。
MML(言語) -3Dオブジェクトとエクスペリエンスを記述するための3D HTML要素と属性
ネットワークドム(ネットワーク) - マルチユーザーモードで複数のユーザーがそれらと対話できるように、サーバーでMML/HTMLドキュメントを実行するためのライブラリおよびネットワークプロトコル。
例えば
<m-cube id = "my-cube" color = "red"> </m-cube> <script>
const cube = document.getElementById( 'my-cube');
cube.addeventlistener( 'click'、()=> {cube.setattribute( 'color'、 'blue');
}); </script>DOM(Document Object Model)の形式のHTMLとJavaScriptは、要素の階層を記述および変異させるための既存の基盤を提供します。 MMLは、この基盤を新しい要素と属性で使用して、3D概念を説明できるようにします。
一般的なユースケースでは、MMLドキュメントがサーバーで実行され、複数のユーザーが観察および対話します。
この機能は、「ネットワークDOM」と呼ばれるライブラリ(MML向けに明示的に構築)を使用してサーバー上でMMLドキュメントを実行することで達成されます。
このマルチユーザーモードをサポートするために必要なサーバーおよびネットワークコンポーネントは、HTMLへのMMLの追加とは無関係です(通常の2D HTMLで使用できます)。
ネットワーク化されたDOMサーバーとMMLクライアントを使用して、複数のユーザーが同時にオブジェクトの同じインスタンスと対話し、これらのオブジェクトをゲームエンジンとWeb仮想世界体験に持ち込むことができます。
親しみやすさ:MMLは、Webのドキュメントを作成する最も一般的な方法であるHTMLに基づいています。これにより、幅広いクリエイターにとって親しみやすくなります。
エコシステム:HTMLエコシステムは膨大であり、MMLはHTMLに基づいているため、クリエイターはライブラリ、フレームワーク、学習リソースのこの既存のエコシステムを活用できます。
移植性:MMLドキュメントは、最新のWebブラウザで実行でき、共有や表示を簡単にすることができます。
複合性:MMLドキュメントは、異なるサーバーで実行されている複数のドキュメントで構成され、単一のサーバーですべての計算パワーと技術機能を提供することなく、複雑な仮想世界オブジェクトを作成することができます。
MMLは、3Dオブジェクトと経験を記述するために使用できるHTML要素と属性のセットです。
これらの要素と属性は、ネットワークなしで使用できます。ただし、MMLタグを含むHTMLドキュメントがサーバーで実行され、WebSocketを介して公開されると、複数のユーザーがドキュメントの同じインスタンスと同時に対話できます。
./packages/mml -web -web 3.js mmlライブラリ
./packages/mml-web-client-web 3.js mmlクライアント
./packages/mml-web-runner-ウェブランナー(サーバーではなくWebブラウザーでMMLドキュメントを実行するため)
./packages/schema -xmlスキーマ定義言語(xsd)のMMLスキーマ
./packages/schema-validator-MMLスキーマを使用してMMLドキュメントを検証するためのパッケージ
MMLは、「ネットワークDOM」と呼ばれるライブラリ(MML向けに明示的に構築)のセットに基づいています。
マルチユーザーモードをサポートするために必要なサーバーおよびネットワークコンポーネントは、HTMLへのMMLの追加とは無関係です(通常の2D HTMLで使用できます)。
ネットワークドム
./Packages/Networked-dom-web- Webネットワーク付きDOMライブラリ
./Packages/Networked-dom-web-client- Webネットワークドムクライアント
./packages/Networked-dom-web-runner-ウェブネットワークドムランナー(サーバーではなくWebブラウザーでネットワークドムドキュメントを実行するため)
./Packages/Networked-dom-protocol-ネットワーク化されたDOM WebSocket Protocol TypeScript定義
./packages/observable-dom-common-観察可能なDom Common
./packages/observable-dom-観察可能なDOM(JSDOM実行)ライブラリ
./Packages/Networked-dom-document-ネットワークドムドキュメントライブラリ
このレポは、MMLのライブラリとスキーマ定義が含まれています。このリポジトリを使用する最も可能性の高い方法は、他のプロジェクトのライブラリとしてクローン化することです。
レポをクローンします
npm install
npm run iterate Buildsは、ソースからパッケージアーティファクトを段階的に構築し始めます
サーバーは例を使用する必要があります。
http:// localhost:7070 -mmlサンプルサーバー
http:// localhost:7071-ネットワークドムサンプルサーバー
別のプロジェクトでこのリポジトリのライブラリを使用するには、 npm link使用して、これらの依存関係を他のNPMプロジェクトにリンクできるようにすることができます。
npm run link-allすべての公開されたパッケージでnpm linkを実行し、ローカル依存関係を使用して開発できるようにします。また、依存関係をリンクするコマンドを印刷します。
以下の図は、MMLドキュメントを実行しているネットワークブラウザでWebブラウザーで使用した場合のMMLシステムの高レベルアーキテクチャを示しています。
グラフTD
サブグラフネットワークドムサーバー
ネットワークドムサーバー[ネットワークドムサーバー]
ネットワークドムドキュメント[ネットワークドムドキュメント]
jsdom [jsdom]
WebSocket [WebSocketHandler]
ネットワークドムサーバー - >ネットワークドムドキュメント
Networked-dom-document-> jsdom
終わり
MML-Source ["MMLソースコード(HTML)"]]
mml-source-> networked-dom-document
サブグラフWebブラウザー
Webブラウザー[Webブラウザ]
サブグラフ「3Dウェブエクスペリエンス」
Three-JS-Scene [3.jsシーン]
サブグラフネットワークドムクライアント
ネットワークドムクライアント[ネットワークドムクライアント]
dom ["dom(html)"]
ネットワークドムクライアント - > dom
終わり
サブグラフMMLクライアントライブラリ
web-browser-mml-client [mml remotendocumentインスタンス]
mml-three-js [mml three.js]
MML-Three-JS-Events-> Web-Browser-MML-Client
web-browser-mml-client-> mml-three-js
終わり
dom----> mml-three-jsによってレンダリングされます
MML-Three-js- - > 3JS-Sceneに構成されています
終わり
終わり
ネットワークドムクライアント - > ws-addr
ws-addr-> websocket
ws-addr ["ws:// ..."]
WebSocket->ネットワークドムサーバー
Web-Browser-> web-browser-mml-client
web-browser-mml-client-> networked-dom-client 読み込み