TypeScript
Ethereum
VR
DApps
Decentraland

Decentralandで仮想世界を構築する(その2)

はじめに

前回、Decentralandの概要と簡単なアーキテクチャの説明をしました。
今回からはDecentraland SDKを用いて実際にコンテンツを作っていきたいと思います。
まずはSDKのインストールと、シーンの雛形作成までやります。

Decentraland SDK

インストール

何はともあれDecentraland SDKをインストールしましょう。
npmでグローバルインストールします。

npm install -g decentraland

もしくは

yarn global add decentraland

無事インストールが完了すると、 dcl コマンドが利用できるようになります。

最初のシーンを作る

次に最初のコンテンツ(以降 シーン)の雛形を作ります。
シーン作成用のディレクトリを作ってそこに移動し、下記コマンドを実行します。

dcl init

すると対話形式で以下のことを聞かれます。
スクリーンショット 2018-09-20 1.50.01.png
1. Scene title
シーンのタイトルを入力します。
2. Your ethereum address
Ethereumアドレス。開発用なので、私はRopstenネットワークのアドレスを入れました。空でもOK。
3. Your name
開発者名を入力します。空でもOK。
4. Your email
Emailアドレスを入力します。空でもOK。
5. Parcels comprising the scene
パーセルの座標を入力します。利用用途がいまいち不明でした。空でもOK。
6. Which scene template would you like to generate?
シーンのタイプを指定します。今回は Basic を選択します。

すべての質問に答え終わったら、依存モジュールのインストールが行われ、シーンが構築されます。ディレクトリ構成は以下のようになります。
スクリーンショット 2018-09-20 2.17.00.png

各々のファイルの使用用途
  • scene.tsx シーンのエントリーポイントとなるプログラムファイル
  • scene.json シーンのメタデータ記述ファイル
  • package.json and package-lock.json モジュールの依存関係定義ファイル
  • build.json ビルド用コンフィグファイル
  • tsconfig.json: Typescriptのコンフィグファイル

シーンのプレビュー

シーンの雛形ができ、それぞれのファイルの用途がわかったところで一度ビルドしてシーンを見てみましょう。下記コマンドを実行してください。

dcl start

実行すると8000番ポートでサーバが立ち上がり、ブラウザからシーンが覗けます。(もちろんOculus GoなどのHMDからでも確認できます)
fff.gif

方向はマウスでグリグリ動かせます。移動はW(↑)S(↓)A(←)D(→)です。
実際に見るとちょっとテンション上がるので是非。

その3へ続きます。

補足

シーンのタイプを今回Basicにしましたが、他のタイプについてそれぞれ補足説明しておきます。

Basic scene
boxやsphereなどのglTFモデルの置かれたノーマルシーンです。ちょうどA-Frameのデモみたいなやつです。

Interactive scene
ドアの開閉を制御するようなインタラクション付きのシーンです。ドアの開閉はクリックイベントを拾ってドアのState(開閉状態)を切り替えています。インタラクティブなコンテンツを作っていきたい方はこちらを。

Remote scene
Interactive sceneと同様にドアの開閉を制御するシーンですが、Stateはサーバで管理されています。通信はwebSocketを使用しています。インタラクティブなコンテンツ + サーバ通信を考えている方はこちらを選択して参考にするのが良いかと思います。

Static scene
XMLに記述されたシーンです。プログラムでシーンを制御できません。見て楽しみたいだけという方はこちらで。