仮想オブジェクト情報を共有する

共有AR体験の多くは、ユーザー間で仮想オブジェクトの情報を共有します。たとえば、あるユーザーが仮想オブジェクトを操作した場合は、その操作による影響を共有AR環境内の他のユーザーがすぐに確認できるようにする必要があります。

ARDKには、共有AR体験においてユーザー間で通信を行うための2つのネットワークAPIが付属しています。高レベルAPI(HLAPI)は、ユーザー間で仮想ゲームオブジェクトの情報を簡単に共有できる「ネットワーク化されたオブジェクト」システム、低レベルAPI(LLAPI)は、ユーザー間で情報を共有するための柔軟で汎用的なメッセージングシステムを提供します。

HLAPIとLLAPIはいずれも、指定されたホストとピアクライアントで、ネットワーク化されたARセッション向けのARDKクライアントサーバーアーキテクチャを使用します。詳細は、 ネットワーク化されたARセッションを設定する および ネットワークとLLAPIを理解する をご参照ください。

HLAPIを使用する場合

共有AR体験において、オブジェクトのスポーンや操作が必要な場合や、未加工のバイトストリームではなくネットワークストリーム経由で送受信を調整する必要がある場合はいずれも、HLAPIを使って直感的に管理することができます。HLAPIの機能は次のとおりです。

  • オブジェクトのネットワークのスポーンとデスポーン。1回のAPIコールによって、ゲームオブジェクトのスポーンやデスポーン、そして共有ARセッション内のすべてのユーザーにオブジェクトのスポーンやデスポーンを行うことができます。

  • 共有データの権限管理。ネットワーク上のデータの所有権を定義することで、すべてのクライアントがオブジェクトのデスポーン、特定のフィールドへの書き込み、それらのフィールドの更新のリッスンなどを許可するユーザーと一致します。

  • オブジェクトの変換を共有する。データ権限が付与されているクライアントは、仮想オブジェクトの変換を操作し、この変換をセッション内のすべてのクライアントに自動的に通知することができます。

  • 汎用ネットワークデータフィールドをサポートする。汎用的なデータフィールドの更新をセッション内の他のクライアントに自動的に伝搬します。

  • メッセージストリームでオブジェクトデータを送信する。未加工のバイトメッセージの代わりにオブジェクトをストリームで送受信します。

LLAPIを使用する場合

LLAPIには、効率的なピアツーピアメッセージを送信するためのネットワークAPIが付属しています。また、ARDKのLLAPIを使用して、セッション管理やピア検出、メッセージルーティング、セッションベースのデータストアを行うこともできます。LLAPIは、アプリケーションのメッセージタイプが非常に少ない場合(即ち、単一のオブジェクトをスポーンして移動させる場合のみ)や、未加工のバイトメッセージAPIを利用し、独自のアドレス指定やパースの処理に適したネットワークライブラリがある場合に使用します。

また、非常に特殊なネットワーク性能の要件がある場合は、LLAPIを使用することも検討してください。HLAPIでは、メッセージごとにネットワークのオーバーヘッドが生じる場合があります。メッセージはすべて、ネットワーク化されたオブジェクトメッセージを識別し、正しくルーティングできるようにIDでタグ付けされています。さらに、HLAPIにはピアの管理、グループやハンドラへのフレームごとのメッセージのクエリ実行によって、ランタイムのオーバーヘッドが生じることもあります。

HLAPIとLLAPIを併用する場合

一般的に、仮想オブジェクト情報を共有するためにHLAPIとLLAPIの両方を使用することは、ユーザー間の通信が複雑になるため、推奨されていません。ただし、HLAPIでオブジェクトメッセージを管理する必要があるが、HLAPIとの相性が良くなく、別途ネットワークメッセージ処理が必要になるシナリオが発生する場合があります。

HLAPIとLLAPIを併用する際の追加のガイダンスと、想定される問題点については、 HLAPIとLLAPIを併用する をご参照ください。