はじめに
※この記事は、3D都市モデル Project PLATEAU Advent Calendar 2024の10日目の記事です。
先日、PLATEAU XR & デジタルツイン ハッカソン2024に参加して、PLATEAUのデータを使ったVRマルチプレイ陣取りゲーム「島根っ化大作戦 vs 鳥取ビジョン」を作りました。その際にUnityのVR Multiplayerテンプレートを使ってみたのですが、便利だったので使い方を書いていこうと思います。
環境
- Windows 11 Home
- Unity6000.0.25f1
- Meta Quest2, Meta Quest3
- Muitiplayer Play Mode v1.3.1
- PLATEAU SDK for Unity v3.1.1 alpha
VR Multiplayerテンプレートについて
Unityのプロジェクト作成時に選択できるテンプレートで、これを使うとVRマルチプレイ用の設定がされた状態で開発を始めることができます。
プロジェクト作成
以下の手順でプロジェクトを作成します。
- エディターバージョンが
6000.0.22f1
以降が選択されていることを確認 - VR Multiplayerテンプレートを選択する
- 「Unity Cloud に接続」にチェックを付ける(デフォルトで付いているはず)
- 「プロジェクトを作成」ボタンを押す
※エディターバージョンについては、後述するMuitiplayer Play Mode
の対応しているバージョンが6000.0.22f1
以降になっているためです。また、マルチプレイの実行のためにUnity Cloudに接続しておく必要があります。
ビルドしてみる
ファイル > ビルドプロファイル
を開いてAndroidを選択します。Quest3を接続して、「ビルドして実行」を押します。
Quest3を着けて確認すると、ルーム作成を促され、ルームに入室成功するといくつかのサンプルゲームを遊べるようになっています。
一度エディターに戻って、シーン内にPLATEAUのモデルを配置してみます。
(PLATEAUモデルの取り込み方はPLATEAU SDKの使い方を参照)
もう一度ビルドして確認してみます。
PLATEAUのモデルが表示できています。
手持ちにQuest3が複数台なかったので、Quest2とマルチプレイしてみましたが問題なく成功しました。(片方がルームを作成して、もう片方がルームIDを入力して入室)
テストプレイを手軽にする
このままだと、テストプレイをしたいときに毎回ビルドしてから実行するというプロセスを経ることになります。Quest Linkで接続してエディター上で実行するという手もありますが、これではマルチプレイのテストができません。
そこで、XR Device Simulator
とMuitiplayer Play Mode
を使ってエディター上でマルチプレイのテストができるようにします。
XR Device Simulator
まずVRヘッドセットを着けなくてもテストプレイできるようにします。
そのためにXR Device Simulator
を使うのですが、VR Multiplayerテンプレートには既に入っています。
Assets/Samples/XR Interection Toolkit/3.0.6/XR Device Simulator/
にあるXR Device Simulator
プレハブをヒエラルキーに配置してからエディター上で実行してみてください。マウスとキーボードで操作できるようになっています。
Tabキー
でHMD、左手コントローラ、右手コントローラの操作を切り替えることができます。
Muitiplayer Play Mode(MPPM)
Muitiplayer Play Modeを使うことで、メインのエディタープレイヤーに加えて最大3人の仮想プレイヤーを同時に実行できます。
まず、パッケージマネージャーのUnityレジストリからMultiplayerPlayMode
をインストールします。
ウインドウ > Multiplayer > Multiplayer Play Mode
を開いて、「Add Tags to Player」で各プレイヤーにタグをつけます。
プレイヤー名の左にあるチェックボックスをオンにすると状態がActiveになり、そのプレイヤーのウィンドウが立ち上がります。その状態で実行すると、エディタープレイヤーとアクティブな仮想プレイヤーで同時にテストプレイできます。
まとめ
以上、VR Multiplayerテンプレートの使い方とテストプレイを手軽にする方法でした。
VRやマルチプレイのアプリを作るとなると複雑な設定が必要なイメージでしたが、このテンプレートを使うと簡単にできてしまいます。これにPLATEAUのデータを使ってコンテンツを作ってみるのも面白いのではないかと思います。
なお、マルチプレイにはNetcode for GameObjects
が使われています。この単語で調べるとマルチプレイ実装方法のあれこれがわかるかもしれません。
おすすめ:Netcode for GameObjectsを使ってみよう - Unityステーション
参考文献