オンライン サービスにログインすると、ユーザーは自分の友達やオンラインで出会った他のユーザーに関する情報 (オンラインであるかどうか、彼らのしていること、ゲームに参加可能かどうかなど) を見ることができます。 Presence インターフェース は、これらの機能へのアクセスが可能な Online Subsystem を提供します。
プレゼンス ステータス
ほとんどのオンライン サービスは、「オンライン」、「オフライン」、「不在」などの各ユーザーの基本的なプレゼンス (存在) の状態を認識します。また、「ロビー内」や「(マップ上で) 対戦中」などのようなゲーム固有の状態も認識します。 ただし、サービス固有のプライバシー ポリシーとアカウント設定により、これらの設定は常に表示されるわけではなく、一部のユーザーにのみ表示されてもそれ以外のユーザーには表示されない場合もあります。 Online Subsystem はこれらのポリシーや設定とやり取りはしませんが取得する情報はこれらの影響を受けます。
プレゼンスを定義する
FOnlineUserPresence クラスには、ユーザーのプレゼンスに関するすべての情報が含まれています。
ユーザーが現在オンラインであるかどうかや、ユーザーがゲームをプレイしているかどうかなどの基本情報に加えて、ユーザーのプレゼンス (FOnlineUserPresenceStatus クラスの使用) には、より詳細な情報が格納されます。
これには通常、表示用のローカライズされた文字列、ユーザーの基本状態を説明するための列挙型の値 (型 EOnlinePresenceState)、および正確なプレゼンス表示メッセージを作成する際に使用可能な、ゲーム固有のカスタム データを保持する一連のキーと値のペアが含まれます。
他のユーザーに関する情報を取得する
特定のユーザーに関するプレゼンス情報を収集するための基本的なフローは、最初に QueryPresence を介してオンライン サービスにリクエストし、そのユーザーを FUniqueNetId で指定します。
その操作が終了すると、提供された FOnPresenceTaskCompleteDelegate が呼び出され、ユーザーと、リクエストの成否を示します。
成功した場合、ローカル プレゼンス情報キャッシュには最新のプレゼンス情報が入ります。この情報は GetCachedPresence 関数を通じて利用できます。
一部のオンライン サービスは、ユーザーのプレゼンスについて Online Subsystem に事前通知します。
これらのサービスでは、実際には QueryPresence を呼び出したり、そのデリゲートを待ったりする必要はありませんが、複数のサービス間で機能するように、通常のコードのフローは変更しません。
ユーザーのプレゼンスを設定する
SetPresence 関数では、オンライン サービスを介してローカル ユーザーのプレゼンス状態を設定します。
オンライン サービスで新しいステータスを確認する必要があるため、これは非同期呼び出しとなります。完了時には FOnPresenceTaskCompleteDelegate 型のデリゲートが呼び出されます。
プレゼンス ステータス自体は、FOnlineUserPresenceStatus クラスによって記述されます。