【Cluster】初学者のためのUnity+clusterによるメタバース空間の構築。

# はじめに
　今回「[<font color="Red">DMM WEBCAMP mentor Advent Calendar 2022 :christmas_tree: </font>](https://qiita.com/advent-calendar/2022/infratop_mentor)」の**9日目**を担当する、@takakouと申します。よろしくお願いいたします。

　今回の記事では普段皆さんがよく触れているWEB系の技術に関する記事ではなく、あえて別の分野である「**メタバース** 」について触れていき簡単に自分の思い通りのメタバース空間を構築する手法をご紹介していきたいと思います。

### そもそもメタバースって何？

　簡単にいうと、仮想空間の中でアバターと呼ばれる、インターネット上での自分の分身で仮想の世界に入り、さまざまな場所から参加しているユーザと遊んだり、会話をしたり、お買い物をしたり…と誰かとコミュニケーションをとることができる場所がメタバースです。
(引用元: [メタバース相談室](https://xrcloud.jp/blog/articles/business/660/))
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524017/221efd29-dcd2-54fc-7e03-94d751de42ae.png)

(出典: [Meta](https://www.oculus.com/workrooms/))

### 今回、記事の検証で用いる「Unity」と「cluster」って？
- **Unity**
　Unityとは、ユニティ・テクノロジーズ社が提供する、ゲーム開発プラットフォームです。 マルチプラットフォームに対応しており、Unityで開発したゲームは、Windows、Mac、Linuxなどのデスクトップや、iOS、Androidなどに対応しています。つまりUnityで作ったゲームはいろんなデバイスで遊ぶことができるってことですね！(小並感)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524017/092304ca-9235-a8fb-2b6c-8f324b80bdff.png)
(出典:[Unity](https://unity.com/ja))

- **cluster**
　clusterとは、バーチャルSNSやソーシャルVRなどと呼ばれる、3D空間のコミュニケーションプラットフォームです。 バーチャル空間で、時にはゲームをしたり、時には草原で乗馬をしたり、時にはカフェでまったりしながら、友達とボイスチャット機能を使っておしゃべりすることができます。Unityにて、自分で作成したワールドを公開することができ、マルチなプラットフォームを通して参加できることがclusterの強みです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524017/fc6f28a4-d5e1-ca49-8bee-8a1e5abe017e.png)

(出典:[cluster](https://cluster.mu/))


### 使用機器
　今回検証に使用するPCの詳細を下記に記します。
- PC
 ・型式 : MacBook Air(M1,2020)
 ・RAM : 8GB
 ・OS : macOS Monterey(ver12.1)


### Unityの導入方法

1. **Unity Hub**をインストールする。
　今回の検証で用いるclusterというサービスは、Unityのバージョンがある程度指定されているため、Unityのバージョン管理が容易であるUnity Hubを用いて検証を進めていきます。
　Unity Hubのダウンロードについては[こちら](https://zenn.dev/imasaka0909/articles/09973aaaf45b87)のサイトを確認し、インストールしていただくようにお願いします。しかし、Windows,Mac,M1 Macによってインストール方法が違いますので、他の機器で検証しようとしている方は別のリファレンスを参照するようにお願いいたします。
 
2. **Unity Hub**で指定のバージョンの**Unity**をインストールする。
　UnityHub上で「エディターをインストール」→「アーカイブ」→「ダウンロードアーカイブ」を選択し、Web上から上記の指定のバージョンの「UnityHub」のボタンを押せばOKです。
 指定cluster対応バージョン:**Unity 2021.3.4f1**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524017/df1ab206-a0f4-8153-063e-00e39bcb43d5.png)

3. 必要なモジュールをインストールする。
　インストール時に必要なモジュールを追加する必要があるとともにOSによって必要なモジュールが異なるので気を付ける。
- Windows
・Andoroid Build Support 
・iOS Build Support
・**Mac Build Support(mono)**

- MacOS
・Andoroid Build Support 
・iOS Build Support
・**Windows Build Support(mono)**
:::note info
それぞれ日本語化パックも入れておきUnity Hub上で言語設定を日本語化しておくととても便利なのでお勧めいたします！
:::

### clusterのインストール
　[こちら](https://cluster.mu/downloads)のcluster公式ページにてアプリのインストールをしておきましょう。今回はPCからの参加を前提としているのでいるのですが、もちろんOculusなどのVR機器などでも参加可能なのでデバイスを持っている方はそちらにもインストールしておくと後で楽しめます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524017/ca7cb450-3e56-cb5d-a35b-4118d59fd1f0.png)

### clusterのアイテムが入っているプロジェクトをインポート
　clusterの公式がGithub上に上げている、[こちら](https://github.com/ClusterVR/ClusterCreatorKitSample)のページからサンプルプロジェクトをローカルの環境に落としてきます。cloneでもzipでダウンロードでもどちらでも良いですが、zipでダウンロードした場合は解凍を忘れないようにお願いします。
　ダウンロード完了後、「**ClusterCreatorKitSample-master**」をUnity Hub上で開きましょう。その後起動する前にcluster指定のバージョンが選択されていることを確認した後、クリックしてプロジェクトを起動しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524017/1858c670-d78b-4ecc-1b00-0b56bab2058a.png)

### ワールドの構築
　クリックした後にしばらくすると、下記の画像のようにUnityでプロジェクトを開くことができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524017/abb2a030-241e-5f90-ac3c-05d8217151f7.png)

　その後、[公式リファレンス](https://creator.cluster.mu/cck-worldcreatetutroial-home/)を適宜、確認しながら適当にワールド構築の練習をしましょう。自分が満足できるものが仕上がったら次の工程に進んでください。

### ワールドのデプロイ
　今回は例として、下記の画像のようなワールドを作成しました。なのでこれをcluster上にデプロイしていこうと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524017/0f41bd76-3c71-1749-f0b8-bf2536fa9c35.png)

1. **clusterの公式ページにログイン**
　clusterに自分が作成したワールドをデプロイしておくにはまずは[こちら](https://cluster.mu/)のclusterの公式Webサイトにて自分のIDとパスワードでログインをしておく必要があります。もしまだ、会員の登録をしていないようでしたらここでしておきましょう。事前にインストールしておいたclusterのアプリを起動する際にも必要になるからです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524017/95a36868-cfc6-633b-f13c-936e64013244.png)

2. **Webトークンを発行**
　ここで一旦、今回デプロイしたいUnityのプロジェクトに戻ります。そしてUnity上部のメニューバー「cluster」->「ワールドアップロード」->「Webでトークンを発行」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524017/21b7083a-270b-df51-9002-910828eec426.png)
　そうするとClusterの公式Webサイトに飛ばされます。そこでアクセストークンの発行をしましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524017/a98e7def-05dd-4731-58d4-e8d30a527ffd.png)
　アクセストークンを発行したらUnityのプロジェクトに戻り、アクセストークンを貼り付け、「**このトークンを使用**」をクリックしましょう。下記のような画面が出てきたら大丈夫です。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524017/45b77510-3088-df3f-cc78-ff2c9d7a868a.png)
出てきたら、ワールドの「**新規作成**」ボタンをクリックします。

3. **デプロイ**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524017/b8005eac-f616-658b-bc23-207fae8d90d7.png)
　サムネイル画像や各種設定を終えたらアップロードボタンがクリックできるようになっているはずです。そうなっていたら「**'ワールド名'をアップロードする**」をクリックしましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524017/b4486176-d1e8-2c46-290d-688abefdda5c.png)
　その後出てきたポップアップも「**アップロード**」でクリックをしましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524017/536c7097-4d14-3b93-db7e-e5686f57182e.png)
　ワールドのアップロードはかなり時間がかかる上にPCの負荷もかなりかかるので気長に待ちましょう。完了したら勝手にclusterの公式ページに戻され、先ほどデプロイしたワールドが表示されているはずです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524017/7679bae5-b870-006d-a483-67e7724d2abb.png)


4. **作成したメタバース空間へ入室。**
　ワールド名をクリックするとワールドの詳細を見に行くことができます。何回入室があったか、いいねの回数なども確認をすることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524017/4effb4be-b6c2-ff59-dfdd-cd84349df7a6.png)
　出てきたら「**遊びに行く**」をクリックしましょう。そうすると下記の画像のページに遷移します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524017/8d4c42f3-9cf8-12a0-dd0e-df4d5c7d7f7a.png)
　遷移できたら、その後「**clusterを起動**」をクリックしましょう。勝手にclusterのアプリが立ち上がってきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524017/9e6a8905-4fb5-3659-1951-733446e5e72b.png)
　アプリが立ち上がったら先ほど作成したアカウントでログインをしましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524017/74cf485f-a099-a3b4-81a6-d525313b0df3.png)
　ログインできたらアバターを選択して「**Desktopで入る**」をクリックしましょう。もしアバター選択画面に遷移しなかったら、一旦clusterのアプリをクローズし、その後clusterのHPのワールド詳細画面からもう一度「**clusterを起動**」をクリックしてもう一度試してください。
:::note warn
アプリを起動したまま再入室を試みると、なぜかうまくいかないので一旦アプリを落とすようにお願いします。
:::
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524017/fc157253-b1bc-60ae-8931-9dbfcbcad700.png)
　そうすると、自分が作成したワールドに入ることができます。そしてこのワールドは公開すれば、誰でも参加できるようになります。友達との交流の場としてもぜひ使ってみましょう。


### 注意点
　今までUnityとclusterを用いたメタバース空間の作成を行いましたが、いくつか注意点があります。

:::note warn
  **clusterの仕様が変わる可能性があること**
　clusterはまだ発展途上のサービスで、機能追加修正日々行われ、アップデートが頻繁に行われます。なのでもしかしたら、今回紹介するワールドのデプロイ方法が変わる恐れがあります。もしエラー等でてうまくいかない場合はclusterの公式Webサイトやgithubを見て確認をしましょう。
:::

:::note warn
  **C#スクリプトが自由に使えないこと**
　基本的にclusterが提供しているアイテムについたスクリプトしか使うことができません。なので今までUnityでスクリプトに頼ってきた人たちは自由度の低さに悩むと思うので注意しましょう。スクリプトについての[記事](https://note.com/cluster_official/n/n5ca8ed9426f6)も最近出たものなので、スクリプト付きのアイテムは、かなり新しい機能になりますのでリファレンスも多くないです。

:::

:::note warn
  **アセットのUnityのバージョンに気をつける。**
　アセットを使うこと自体には何の問題もないのですが、アセットによってUnityの対応バージョンが違うので今回利用したUnityのバージョンに対応しているものを選ぶようにしましょう。

:::
## 終わりに
　今回はUnityとclusterを用いたメタバース空間の構築を簡単にご紹介しました。ワールドの構築方法や、細かい設定については省いてしまったので、もし機会があれば別の記事にてもっと詳しくお話しできればと思います。拙い文章ですが、ここまで読んでいただきありがとうございました🙇‍♂️