ネットワークARセッションのセットアップ

近くにいるプレイヤーを同一のAR体験に参加させる。

ARNetworkingセッションの概要

複数のプレイヤーが同一のAR世界でインタラクトできるようにするには、各デバイスで動作する ARSessions の情報を共有する必要があります。プレイヤー同士がその情報を送受信するための接続は、各デバイス上のMultipeerNetworkingインスタンスによって処理されます。同様に、処理された情報は、各デバイスのARNetworkingインスタンスによって処理されます。

ARNetworking セッションは、ARNetworkingFactoryクラスで構築されます。

using Niantic.ARDK.AR.Networking;

// Create an ARNetworking session.
// This also creates new ARSession and MultipeerNetworking objects,
// since they are required components of ARNetworking.
var arNetworking = ARNetworkingFactory.Create();

また、ARNetworking セッションは、既存の ARSession インスタンスまたは MultipeerNetworking インスタンスを使用して構築することもできます。

たとえば、アプリケーションにロビーが設定されているとします。ロビーでは、MulitpeerNetworking セッションに接続しているプレイヤーは、共有AR体験が開始するまでの間、メッセージのやり取りを行うことができます。プレイヤーはピアIDに基づいて色でラベル付けされるため、プレイヤーが共有AR体験を開始する際、ピアIDが変わらないようにする必要があります。そのためには、その MulitpeerNetworking セッションをもとに ARNetworking セッションを開始します。これにより、プレイヤーは、切断して新しいセッションに接続し直す必要がありません。

using Niantic.ARDK.Networking;
using System.Text;

var networking = MultipeerNetworkingFactory.Create();

// Can join either before or after creating an ARNetworking
var sessionIdentifier = Encoding.UTF8.GetBytes("Example");
networking.Join(sessionIdentifier);

// The ARSession and MultipeerNetworking objects used to create an ARNetworking
// need to have the same stage identifier, so specify the stage identifier for
// the ARSession constructed here.
var arSession = ARSessionFactory.Create(networking.StageIdentifier);

var arNetworking = ARNetworkingFactory.Create(arSession, networking);

共有体験の開始

共有AR体験を開始するには、ARNetworking オブジェクトの基礎となる ARSession コンポーネントと MultipeerNetworking コンポーネントのいずれも起動する必要があります。

using Niantic.ARDK.AR.Configuration;

// Create a configuration.
var configuration = ARWorldTrackingConfigurationFactory.Create();

// Enable shared experiences.
configuration.IsSharedExperienceEnabled = true;

// Run the AR session (if you haven't already).
arNetworking.ARSession.Run(configuration);

// Join the networking session (if you haven't already).
var sessionIdentifier = Encoding.UTF8.GetBytes("Example");
arNetworking.Networking.Join(sessionIdentifier);

AR体験のセットアップ方法については、AR体験の作成 のページ、プレイヤー同士のネットワークを接続する方法については、マルチプレイヤー体験の作成 のページを参照してください。方法は次のとおりです。

  1. ARSceneCamera プレハブをシーンに追加します。

  2. 同一セッションに参加するすべてのプレイヤーに同一の sessionIdentifier 値を使用します。

ARNetworkingManagerの使用

ARネットワークセッションのセットアッププロセスを簡略化するには、付属の Manager をシーンに追加します。使用方法については、ARNetworkingManagerのAPIリファレンスやコード内コメント、ツールヒントを参照してください。

または、ARNetworkingSceneManagerプレハブを使用することもできます。このプレハブには、ARNetworkingManagerコンポーネントが付属しています。このプレハブの使用方法の詳細については、 共有ARを使い始める をご参照ください。

ホストとピア

ネットワークセッションは、ホスト と**ピア** クライアントの概念を使用します。クライアントが指定されたセッションIDを使用して参加リクエストを送信すると、サーバーは次のいずれかを行います。

  • クライアントをセッションに追加します(セッションが存在する場合)。これで、クライアントはセッションのピアに設定されます。

  • セッションを作成し、クライアントをホストとして指定します。

その後、同一セッションに参加するクライアントには、どのクライアントがホストであるか通知されます。

ARDKの共有ネットワークセッションに参加する場合は、クライアントごとに同一のAPIトークンを使用するように設定する必要があります。