PartyDirectPeerConnectivityOptions

ネットワーク上のデバイス間で、直接ピアツーピア接続の試行を制御するフラグ。

構文

enum class PartyDirectPeerConnectivityOptions  : int32_t  
{  
    None = 0x0,  
    SamePlatformType = 0x1,  
    DifferentPlatformType = 0x2,  
    AnyPlatformType = SamePlatformType | DifferentPlatformType,  
    SameEntityLoginProvider = 0x4,  
    DifferentEntityLoginProvider = 0x8,  
    AnyEntityLoginProvider = SameEntityLoginProvider | DifferentEntityLoginProvider,  
    OnlyServers = 0x10,  
}  

定数

定数 説明
なし フラグは指定されていません。

フラグが存在しないということは、ピアへの直接接続の試行が許可されていないことを意味します。 デバイス間のすべてのエンドポイント メッセージとチャット データは、常に透過的なクラウド リレー サーバーを介して送信され、IP アドレス情報は交換されません。
SamePlatformType 同じプラットフォームの種類のデバイス間で直接ピア ツー ピア接続が試行される場合があります。

デバイスのペアは、使用する特定のパーティー ライブラリに関連付けられている同じ種類のハードウェアや OS プラットフォーム (例えば、Windows PC、Xbox ゲーム コンソール、iOS ベースのモバイル デバイスなど) を持っていることが識別された場合、ピアツーピア接続の確立を試みます。

このフラグは、ピアツーピア接続の直接試行を単独で許可しないことに注意してください。 SameEntityLoginProvider フラグと DifferentEntityLoginProvider フラグの一方または両方と組み合わせる必要があります。

このフラグを PartyNetworkConfiguration 構造の OnlyServers フラグと組み合わせることはできません。 PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask 値の一部として OnlyServers と組み合わせることができます。
DifferentPlatformType 異なるプラットフォームの種類のデバイス間で直接ピア ツー ピア接続が試行される場合があります。

デバイスのペアは、各デバイスが使用する特定のパーティー ライブラリに関連付けられている異なる種類のハードウェアや OS プラットフォーム (例えば、Windows PC、Xbox ゲーム コンソール、iOS ベースのモバイル デバイスなど) を持っていることが識別された場合、ピアツーピア接続の確立を試みます。

このフラグは、ピアツーピア接続の直接試行を単独で許可しないことに注意してください。 SameEntityLoginProvider フラグと DifferentEntityLoginProvider フラグの一方または両方と組み合わせる必要があります。

このフラグを PartyNetworkConfiguration 構造の OnlyServers フラグと組み合わせることはできません。 PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask 値の一部として OnlyServers と組み合わせることができます。
AnyPlatformType プラットフォームの種類に関係なくデバイス間で直接ピア ツー ピア接続が試行される場合があります。

このフラグは SamePlatformType | DifferentPlatformType と同等です。
SameEntityLoginProvider 同じプロバイダーを使用してログインした認証済みユーザー PlayFab エンティティ ID を持つデバイス間で、直接ピア ツー ピア接続が試行される場合があります。

最初にローカル ユーザーをネットワークに認証しているデバイスは、新しく認証するユーザーと同じプロバイダー (Xbox Live、Facebook、iOS、Google など) を使用してログインした認証済みユーザー PlayFab エンティティ ID が少なくとも 1 つ存在するリモート デバイスとのピアツーピア接続を直接確立しようとします。

このフラグは、ピアツーピア接続の直接試行を単独で許可しないことに注意してください。 SamePlatformType フラグと DifferentPlatformType フラグの一方または両方と組み合わせる必要があります。

このフラグを PartyNetworkConfiguration 構造の OnlyServers フラグと組み合わせることはできません。 PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask 値の一部として OnlyServers と組み合わせることができます。

DifferentEntityLoginProvider 異なるプロバイダーを使用してログインした認証済みユーザー PlayFab エンティティ ID を持つデバイス間で、直接ピア ツー ピア接続が試行される場合があります。

最初にローカル ユーザーをネットワークに認証しているデバイスは、新しく認証するユーザーと同じプロバイダー (Xbox Live、Facebook、iOS、Google など) を使用してログインした認証済みユーザー PlayFab エンティティ ID が存在しないリモート デバイスとのピアツーピア接続を直接確立しようとします。

このフラグは、ピアツーピア接続の直接試行を単独で許可しないことに注意してください。 SamePlatformType フラグと DifferentPlatformType フラグの一方または両方と組み合わせる必要があります。

このフラグを PartyNetworkConfiguration 構造の OnlyServers フラグと組み合わせることはできません。 PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask 値の一部として OnlyServers と組み合わせることができます。
AnyEntityLoginProvider 認証されたユーザー PlayFab エンティティ ID のログインに使用されるプロバイダーに関係なく、デバイス間で直接ピア ツー ピア接続が試行される場合があります。

このフラグは SameEntityLoginProvider | DifferentEntityLoginProvider と同等です。
OnlyServers 少なくとも 1 つのデバイスに PlayFab エンティティ型が game_server の認証済みユーザーが存在する場合、デバイス間でピアツーピア直接接続が試行される可能性があります。

最初にローカル ユーザーをネットワークに認証するデバイスは、ローカル ユーザーまたはリモート デバイス上のユーザーが PartyManager::CreateLocalUserWithEntityType() に指定されている game_server PlayFab エンティティ型である場合、リモート デバイスとのピアツーピア直接接続を確立しようとします。 つまり、プレイヤーのデバイスは互いに直接接続することはなく、サーバー デバイスにのみ接続されます。 サーバー デバイスは、すべてのプレイヤーおよびその他のサーバー デバイスに直接接続しようとします。

このフラグを PartyNetworkConfiguration 構造の SamePlatformTypeDifferentPlatformTypeSameEntityLoginProvider または DifferentEntityLoginProvider フラグと組み合わせることはできません。 PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask 値の一部としてそれらのフラグと組み合わせることができます。

解説

ネットワークへの初期ユーザーの正常な認証の一環として、デバイスは、ネットワークの PartyNetworkConfiguration 構造で宣言されているこれらのフラグによって許可されている場合に、ネットワークに既に参加している他のデバイスとの直接ピア ツー ピア接続の確立を試みることができます。 成功した場合、デバイス間のエンドポイント メッセージとチャット データは、これらの直接接続を使用して送信されます。 デバイス間の環境の非互換性のために失敗した場合、それらのデバイス間のすべての通信は、代わりに透過的なクラウド リレー サーバーを介して送信されます。 デバイスがこれらのフラグによってピア接続を直接試行することが許可されていない場合、IP アドレス情報を交換することはなく、常に透過的なクラウド リレー サーバーを介してエンドポイント メッセージとチャット データを送信します。

PartyNetwork::GetDeviceConnectionType() を呼び出すことで、ローカル デバイスが特定のリモート デバイスへの直接ピア ツー ピア接続を実際に確立したかどうかを確認できます。

直接ピア接続が成功すると、一部のデバイス間の待ち時間が短くなる可能性がありますが、確立を試みると、ユーザーはデバイスの IP アドレスを他のデバイスに開示する必要があります。これは、プライバシーの問題や、悪意のあるユーザーがタイトルの外部でピアのデバイスやインターネット接続を攻撃する可能性がある場合に問題になる可能性があります。 また、ポリシー上の理由から、特定のプラットフォームでは許可されない場合があります。 パフォーマンスとセキュリティの目標に適したフラグを必ず使用してください。

特定のネットワークの PartyNetworkConfiguration::directPeerConnectivityOptions 値に加えて、必要に応じて、PartyManager::SetOption() を使用して、PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask を設定することによって、認証するすべてのネットワークのデバイスによってフラグをさらに制限できます。 すべてのフラグは、ビット単位の AND 演算を使用して評価されます。 つまり、特定のフラグは、ネットワークの PartyNetworkConfiguration 構造と、両方のデバイスのそれぞれのローカル マスク オプションの 3 つの場所で有効になっている場合にのみ、特定のネットワークのデバイスのペアに対して有効になります。 Party ネットワークが、関連するフォームの直接ピア接続を許可している場合でも、どちらのデバイスも、フラグを有効にしないことで、IP アドレスの開示とデバイス間の直接接続の試行を一方的にオプトアウトできます。 PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask の既定値は、ネットワークによって有効になっているすべての直接ピア接続を許可するため、デバイス固有の要件がある場合にのみ構成する必要があります。

また、過剰なリソース消費を回避するために、パーティー ライブラリは、特定のデバイスが現在参加しているすべてのネットワークで、これらのフラグによって許可されている場合でも、構成された最大数を超えるピア直接接続を確立しようとするのを内部的に防止します。 これは、その他のリモート デバイスを使用して大規模なまたは複数のネットワークに参加するデバイスの機能には影響しません。 追加のデバイスとの通信は、透過的なクラウド リレー サーバーを介して送信されます。 ピア直接接続の最大数を変更するには、PartyManager::SetOption() を使用して PartyOption::LocalDeviceMaxDirectPeerConnections を設定します。

特定のペアのデバイスに対してピアツーピア直接接続の可用性を積極的に適用しないことをお勧めします (つまり、PartyNetwork::GetDeviceConnectionType()PartyDeviceConnectionType::DirectPeerConnection 以外の値を報告する場合は、PartyNetwork::LeaveNetwork() を呼び出さないでください)。これは、使用中の特定の基になる転送メソッドによって通信の全体的な論理機能が変更されないためです。 ゲーム設計に、直接ピア接続を促進する最大メッセージ待ち時間に対する厳格な要件がある場合は、送信メカニズムに基づいて抽象的な想定を行うのではなく、PartyEndpointStatistic::AverageDeviceRoundTripLatencyInMilliseconds 統計によって報告された、その待機時間の現在の具体的な観察に対してアクションを実行することをお勧めします。 そうしないと、環境要因が制御できないので、常に近くの透明なクラウド リレー サーバーを使用する必要がある同じフレンド のセットでプレイしようとしているユーザーを絶えず妨げる可能性があります。

要件

ヘッダー: Party.h

関連項目

パーティーのメンバー
PartyNetworkConfiguration
PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask
PartyManager::SetOption
PartyEndpointStatistic::AverageDeviceRoundTripLatencyInMilliseconds
PartyLocalEndpoint::GetEndpointStatistics