開発者向けニュースに戻る

マルチプレイヤーVRエクスペリエンスの構築

2022年5月24日作成者:Navyata Bawa

VRのエコシステムにおいて、マルチプレイヤー体験はますます重要な要素となってきました。マルチプレイヤー機能によって、ユーザーはさまざまなゲームやアプリでほかのユーザーを見つけ、招待し、一緒にプレイすることができます。この4部構成の「マルチプレイヤーのVR体験の構築」のブログと動画シリーズから、プラットフォームSDKのQuestのマルチプレイヤー機能を取り上げ、Unityで作成したオープンソース化したSharedSpacesのサンプルについて学びながら検討し、そのサンプルを使って独自のマルチプレイヤーアプリを構築する方法を紹介していきます。関心のある方は、よろしければこの動画MetaのオープンソースのYouTubeチャンネルでご覧ください。

今回のブログでは、Platform SDKのマルチプレイヤー機能と、それを利用して構築できるものをご説明します。また、App Labから得たUnityのSharedSpacesサンプルについても取り上げ、これらのマルチプレイヤー機能を実際に見ていきます。

マルチプレイヤー機能

クエストのマルチプレイヤー機能—デスティネーション、グループプレゼンス、招待、招待リンク、参加者リストなど—は、VRアプリ内でユーザーを見つけ、招待し、一緒にプレイできます。これらの機能により、アプリ内でのソーシャルインタラクションが強化され、大ファンが他のユーザーを招待し、アプリ内で友人と物理的に一緒にいるような感覚のユニークなマルチプレイヤーエクスペリエンスが実現します。

デスティネーション

デスティネーションは、アプリ内で移動する場であり、Quest開発においてはマルチプレイヤー機能に不可欠なものです。下図は、SharedSpacesのサンプルアプリのデスティネーションのうち3つを示したものです。次回のブログでは、アプリのデスティネーションを設定する手順について説明します。

グループプレゼンス

グループプレゼンスは、誰かがいずれかのアプリにいるか、マッチングはあるのか、特定のデスティネーションにいるのか、合流可能かといったことなど、さまざまな情報を提示します。デスティネーションとグループプレゼンスの詳細については、ドキュメントにて、さまざまな事例のシナリオと、アプリケーションでの最適な活用方法について記載していますので、そちらをご覧ください。

ディープリンク

ディープリンクは、開発者がユーザーを特定のエクスペリエンスに誘導できるようにするものです。誰かが友人と合流するためにアプリを起動する際、または特定のデスティネーションに移動する際は、そのディープリンクに目的のデスティネーションまたは任意のロビーやマッチに関する情報が含まれています。

マルチプレイヤーエクスペリエンスでは、必ず最初のステップでデスティネーション、グループプレゼンス、ディープリンクを統合します。次回のブログでは、Unity SharedSpacesサンプルの独自のバージョンの構築方法と、アプリへの設定方法について説明します。

アプリに招待

[Invite to App (アプリに招待)]により、プレイヤーはサポートされているゲームのQuestメニューから、友達や、最近プレイしたユーザーを既存のロビーにシームレスに招待できます。

招待状を送ると、VR内とOculusモバイルアプリ上で招待されたユーザーに、体験に参加するよう促すお知らせが表示されます。

Invite to App APIの詳細と体験の中でそれを使用する方法については、ドキュメントのページをご覧ください。

招待リンク

招待リンクにより、Oculusモバイルアプリを使用して、友人のグループをデスティネーションで起動させることができます。

招待リンクは、グループプレゼンスAPIを使用して、グループの全メンバーが確実に同じセッションに到達できるようにします。招待リンクの詳細については、ドキュメントのページをご覧ください。

参加者リスト

参加者リストを使用すると、ユーザーは一緒にゲームに参加している人が分かります。現在のユーザーのプレゼンスがゲームによって設定されている場合、ゲームによってデータが設定されたすべてのユーザーのロビーセッションIDは同じものになります。SharedSpacesのサンプルでは、参加者リストのパネルに入ると参加者リストが表示されます。以下の画像は、参加者リストには、一緒にプレイしている人物と自分と合流するよう招待した人物がどのように表示されるのかをとして示したものです。

UnityのSharedSpacesのサンプル

ここまで、プラットフォームSDKマルチプレイヤー機能をいくつか説明しましたが、この後はこれらのマルチプレイヤー機能を実際に動作させているSharedSpacesというサンプルプロジェクトを見ていきます。ここからは、このサンプルのUnityバージョン に注目しますが、Unrealバージョンに関心がある方はApp Labで探すことができます。

最初に、Unity SharedSpacesのサンプルの仕組みを説明します。このサンプルでは、以下の3層のネットワークが採用されています。

  • プラットフォームSDK。これにより、デスティネーション、プレゼンス、ロビー、マッチを設定できます。
  • トランスポート層のPhoton SDK。これによりスペースをシェアするユーザー間のコミュニケーションが可能です。
  • ネットワーク機能。UnityのGameObjectsのSDKのネットコード。

下図は、今回取り上げた3層をまとめたものです。

サンプルのインストール

これで、SharedSpacesアプリの動作の基本を理解できました。App LabでUnity SharedSpacesのサンプルをダウンロードし、ご自身のQuestのヘッドセットで試してみてください。

サンプルの実行

Questのヘッドセットでアプリを起動すると、ロビーと呼ばれる部屋からスタートします。プレイヤーはカラフルなキャラクターで表されます。コントローラーで操作できます。左のコントローラーでプレイヤーを移動させるものです。右のコントローラーは、カメラを移動させることで、自分の周囲の世界をスムーズに見て、快適に周囲の好きな場所を選んで移動することができます。コントローラーのYボタンを押すと、プレイヤーをジャンプさせることができます。

右側のデバッグパネルでは、デスティネーションの状況、ネットワーク層の状況、ルームに加わる人物に関する情報などを得られます。左側には、入力できるプライベートのデスティネーションが3つ、右側には、入力できるパブリックのデスティネーションが表示されます。

左上には、この体験に合流させる友人を招待するためのオプションが表示されます。これは、これより前に取り上げた「アプリに招待」機能です。

右上には、グループプレゼンスの情報を載せた参加者リストが表示されます。これは、プラットフォームSDKの参加者リストの機能を実際に使っているところです。

背後のペイントショップではプレイヤーのカラーを変えることができます。また、コントローラーのXボタンを押してもプレイヤーのカラーは変更できます。

左下と右下には、自分と友人を照会するオプションが表示され、プレイヤーに関する詳細な情報を得られます。

サンプルテストのシナリオ

このスペースに慣れたところで、デスティネーションのひとつにエントリーしてみましょう。パープルルームは、誰でも入ることが可能で、どのロビーからもアクセス可能なパブリックな場所です。では、ロビーに戻りましょう。

一旦ロビーに戻ったら、今度は別のルームに入ってみます。レッド、ブルー、グリーンの各ルームはプライベートで、入室には招待状が必要となります。

プライベートルームに入る前に、誰かを招待して合流することができます。「友人を招待する」パネルに移動して利用可能な友人リストを表示し、リストから友人を招待します。ロビーで体験を始めたのは自分であれば、自分がロビーのマスタークライアントとしてホスト役を務めることになります。

招待した友人には、自分から招待したことを知らせるお知らせが表示されます。相手が招待を受け入れて合流する場合には、ロビーに表示されます。その後、そのセッションでは同じロビーIDを共有することになります。

ここからは、ブルールームでプライベートなマッチングを開始できます。自分がブルールームに入ったときには、友人がすでにブルールームに入っていることがあります。先に入場したのは友人ですから、そのルームを主催しているのは友人で、自分はその友人とつながっていることになります。また、ブルールームに対応するマッチセッションIDも同じです。ここで自分がブルールームを退室した場合には、ロビーIDが同一であることから、2人とも自分のロビーに戻ることになります。

自分がブルールームにいながら友人を招待し、友人は友人のロビーにいるときに招待を受けてその正体を受け入れた場合、友人のマッチIDはブルールームに対応したマッチセッションIDに変更されますが、友人のロビーIDは以前と同じものになります。その場合、二人ともブルールームを退室すると、各自のロビーに戻ったことになります。

以上、UnityのSharedSpacesのサンプルアプリを簡単にご説明しました。今回は、プラットフォームSDKが提供すべきマルチプレイヤー機能の一部と、それらがQuestのUnity SharedSpacesアプリで機能する仕組みについて取り上げました。次回のブログでは、このサンプルをGithubからダウンロードし、Questのヘッドセットで構築して実行する方法などを取り上げます。


本シリーズについて

本シリーズでは、Unityで作成したオープンソース化したSharedSpacesサンプルを紹介しながらQuestのプラットフォームSDKのマルチプレイヤー機能についてご説明します。このブログは「マルチプレイヤーのVR体験の構築」の動画シリーズを補足するブログの4部構成の第一部です。

プラットフォームSDKのマルチプレイヤー機能や、SharedSpacesサンプルの仕組みの詳細については、Questのマルチプレイヤーアプリの構築と拡大について検討しているこの接続セッションをチェックしてください。 App Labを起動して独自のヘッドセットで実施し、UnityのSharedSpacesのサンプルを試してください。プラットフォームSDKのマルチプレイヤー機能を使用する方法を学ぶには、マルチプレイヤー機能sに関する当社のドキュメントをチェックしてください。

Meta Questの詳細は、ウェブサイトをご覧になるか、当社のYouTubeチャンネルをご視聴いただくか、TwitterFacebookをフォローしてください。ご不明な点、ご意見、ご感想は、開発者のフォーラムにてお知らせください。

Meta Questの詳細は、オープンソースサイトをご覧になるか、当社のYouTubeチャンネルをご視聴いただくか、TwitterFacebookをフォローしてください。