共有ARのデバッグ方法
共有ARは、ARの複雑さとマルチプレイヤーのネットワーク問題が重なり、デバッグが難しくなる場合があります。 開発時の問題をデバッグするには、複数のデバイスや、1台のマシンで複数のUnityエディターのインスタンスを実行する必要があります。 また、マルチプレイでは、シングルプレイヤーのアプリケーションに比べて、競合状態やタイミングの問題が発生しやすくなります。 この入門ガイドでは、共有AR体験をデバッグするためのヒントを紹介し、一般的な問題のトラブルシューティングガイドとして提供します。
前提条件
この入門ガイドを進めるには、以下の要件を満たしている必要があります。
- デバッグしたいLightship Shared ARを含むUnityプロジェクト。 何から始めたらいいかわからない場合は、共有ARの使い方から始めよう。
- プレイバック 機能が使用できる状態であること。
- ParrelSync がお使いのマシンにインストールされていること。
Unityエディターでプレイバック機能とParrelSyncを使用してデバッグする
ParrelSync は、Unityエディターの拡張機能です。Unityエディターで2つ目のウィンドウを開き、元のプロジェクトの変更をミラーリングすることで、マルチプレイヤーのゲームプレイをテストできます。プロジェクトをビルドする必要はありません。
ParrelSyncを設定してデバッグを開始するには、次の手順を行います。
- ParrelSync メニューから、 Clones Manager を開きます。 Clones Manager で Create new clone(新しいクローンを作成) をクリックして、クローンプロジェクトを作成します。 この処理には、時間がかかる場合があります。
- Clones Manager で Open in New Editor(新しいエディターで開く) をクリックして、クローンされたプロジェクトを開きます。 元のプロジェクトが変更されると、クローンされたプロジェクトも更新されます。
- 各エディターでプロジ ェクトを プレイ モードで実行します。 すべてのインスタンスがセッションに参加し、位置を正しく共有(コロカライズ)する必要があります。 すべてのインスタンスが同じルームに接続されていることを確認してください。
クロスプラットフォームのデバッグ
UnityエディターでアプリケーションのARトラッキングがうまく動作しない場合は、デバイスとUnityエディターを併用してプラットフォーム間のデバッグを行うとよいでしょう。こうすることで、物理デバイス上でARマルチプレイヤーを実行しながら、Unity内のゲームステートやシーンの階層構造を確認できるようになります。 ARDKでは、「Mock Colocalization」モードもサポートされており、このモードを使用して、エディターとデバイス間でテストやデバッグを行うことができます。 (このモードはネットワーキング機能にのみ適用されます。)
クロスプラットフォームのテストセッションを開始するには、次の手順を行います。
-
Hierarchyで XR Origin を選択します。 Inspector ウィンドウで Shared Space Manager コンポーネントを探し、 Colocalization Type で MockColocalization を選択します。
-
スクリプト内で
MockColocalization
設定をテストし、ペイロード値を使用してルームを設定します。 使用例:
if (_sharedSpaceManager.GetColocalizationType() ==
SharedSpaceManager.ColocalizationType.MockColocalization)
{
// 接続するルームを設定
var mockTrackingArgs = ISharedSpaceTrackingOptions.CreateMockTrackingOptions();
var roomArgs = ISharedSpaceRoomOptions.CreateLightshipRoomOptions(
"TestRoom",
32,
"Mock Colocalizationを使用するテストルーム"
);
_sharedSpaceManager.StartSharedSpace(mockTrackingArgs, roomArgs);
}.
- シーンを開始すると、アプリはデバイスとエディターの両方で、ホストかクライアントを選択するUIに直行するはず です。
デバイスのデバッグ
共有ARサンプルのダウンロードとインストールの方法については、 サンプルプロジェクト を参照してください。
共有ARの原点を表示してコロカライゼーションをデバッグする
コロカライゼーションをテストする有効な方法として、共有ARのXROriginを含むシーンの原点にキューブを配置する方法があります。 キューブの挙動を観察することで、VPSや画像トラッキングが正常に動作しているかを確認したり、共有ARの原点の現実世界での位置を特定することができます。また、デバイス間でのVPSや画像トラッキングの位置や回転の精度を確認することも可能です。
永続アンカーの位置や回転がデバイス間で異なる場合、デバイスは同期していない。 アンカーの位置や向きは正しいものの、ネットワークオブジェクトが正しく配置されていない場合、デバイスは同期しているが、ネットワークオブジェクトは同期して配置されていないことになります。
Niantic では、このコロカライゼーションのデバッグを行うために、方向矢印が付いたプレハブのキューブを提供しています。 共有ARサンプルの Assets/Samples/SharedAR/Prefabs
にある OriginVisualizer
をご覧ください。
アンカーの位置にプレハブを表示するには、 SharedSpaceManager
のトラッキングイベントハンドラに以下のコードスニペットを追加します。
[SerializeField]
private SharedSpaceManager _sharedSpaceManager;
[SerializeField]
private GameObject _sharedRootMarkerPrefab;
private void OnColocalizationTrackingStateChanged(SharedSpaceManager.SharedSpaceManagerStateChangeEventArgs args)
{
if (args.Tracking)
{
Instantiate(_sharedRootMarkerPrefab,
_sharedSpaceManager.SharedArOriginObject.transform, false);
}
}
ネットワーク統計
ネットワーク統計は、レイテンシーや接続の問題など、マルチプレイヤーの問題を分析する際に非常に役立ちます。 SharedARパッケージには、 LightshipNetcodeTransportStatsUI
というプレハブが含まれており、ホストまでの往復時間、送信データ量、メッセージ数などのネットワーク統計を表示するUIパネルが提供されています。 このプレハブは、 Packages/Niantic Lightship Shared AR Client Plugin/Assets/Prefabs
にあります。
ネットワーク統計UIを有効にするには、次の手順を行います。
-
LightshipNetcodeTransportStatsUI
プレハブをプロジェクトの Assets(アセット) フォルダに追加します。 -
シーンに Canvas オブジェクトが含まれていない場合は、作成します。
- ARシーンの Hierarchy で右クリックし、 Create メニューを開きます。次に、 UI、 Canvas の順に選択します。
-
プレハブを Assets フォルダからCanvasオブジェクトにドラッグします。
-
Hierarchy でプレハブを 選択し、 Inspector 内の Lightship Netcode Transport Stats Display を見つけます。 以下の設定を確認します。
- Lightship Netcode Transport が NetworkManager(Lightship Netcode Transport) に設定されていることを確認します。
- Text プロパティで、出力先のテキストオブジェクトを指定します。
- BG Image プロパティで、Canvasの背景画像を設定します。 画像 コンポーネントを使用して、現在の画像を修正します。
- サンプルレートを変更するには、 Sample Rate in Secondsを更新します。 デフォルトでは、UIでサンプルが1秒ごとに取得されます。 注: サンプルレートを高く設定すると、ネットワーク性能が低下する可能性があります。
- ネットワーキングパネルに詳細な情報を表示したい場合は、 Verbose Text をチェックしてください。 通常のテキストと詳細なテキストの例を以下に示します。
Regular TextVerbose Text