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 同一平台类型的设备之间可能会尝试直接点对点连接。

如果将一对设备标志为具有与其使用的特定群库相关联的相同类型硬件和/或操作系统平台(例如,Windows 电脑、Xbox 游戏主机、基于 iOS 的移动设备),则它们将尝试建立直接对等连接。

请注意,此标志自身不允许任何直接对等连接尝试。 它必须与 SameEntityLoginProviderDifferentEntityLoginProvider 的一个或两个标志相结合。

此标志不能与 OnlyServersPartyNetworkConfiguration 结构中的 标志组合使用。 它可以与 OnlyServers 作为 PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask 值的一部分进行组合。
DifferentPlatformType 不同平台类型的设备之间可能会尝试直接点对点连接。

如果将一对设备标志为具有与其使用的特定群库相关联的不同类型硬件和/或操作系统平台(例如,Windows 电脑、Xbox 游戏主机、基于 iOS 的移动设备),则它们将尝试建立直接对等连接。

请注意,此标志自身不允许任何直接对等连接尝试。 它必须与 SameEntityLoginProviderDifferentEntityLoginProvider 的一个或两个标志相结合。

此标志不能与 OnlyServersPartyNetworkConfiguration 结构中的 标志组合使用。 它可以与 OnlyServers 作为 PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask 值的一部分进行组合。
AnyPlatformType 无论设备的平台类型如何,都可以在设备之间尝试直接点对点连接。

此标志相当于 SamePlatformType | DifferentPlatformType
SameEntityLoginProvider 在已经使用同一提供程序登录的用户 PlayFab 实体 ID 的设备之间,可能会尝试直接点对点连接。

最初向网络验证本地用户的设备,将尝试与具有至少一个通过相同提供程序(例如,Xbox Live、Facebook、iOS、Google)登录的经过身份验证的用户 PlayFab 实体 ID 的远程设备,建立直接对等连接,作为新验证用户。

请注意,此标志自身不允许任何直接对等连接尝试。 它必须与 SamePlatformTypeDifferentPlatformType 的一个或两个标志相结合。

此标志不能与 OnlyServersPartyNetworkConfiguration 结构中的 标志组合使用。 它可以与 OnlyServers 作为 PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask 值的一部分进行组合。

DifferentEntityLoginProvider 在使用不同提供程序登录的经过身份验证的用户 PlayFab 实体 ID 的设备之间,可能会尝试直接点对点连接。

最初向网络验证本地用户的设备,将尝试与没有任何通过同一提供程序(例如,Xbox Live、Facebook、iOS、Google)登录的经过身份验证的用户 PlayFab 实体 ID 的远程设备,建立直接对等连接,作为新验证用户。

请注意,此标志自身不允许任何直接对等连接尝试。 它必须与 SamePlatformTypeDifferentPlatformType 的一个或两个标志相结合。

此标志不能与 OnlyServersPartyNetworkConfiguration 结构中的 标志组合使用。 它可以与 OnlyServers 作为 PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask 值的一部分进行组合。
AnyEntityLoginProvider 无论用于登录经过身份验证的用户 PlayFab 实体 ID 的提供商是谁,都可以在设备之间尝试直接点对点连接。

此标志相当于 SameEntityLoginProvider | DifferentEntityLoginProvider
OnlyServers 如果至少有一个设备具有经过身份验证的用户且 PlayFab 实体类型 game_server为 ,则设备之间可能会尝试直接对等连接。

如果本地用户或远程设备上的用户是 PlayFab 实体类型(指定给 PartyManager::CreateLocalUserWithEntityType () ),则最初在网络中对本地用户进行身份验证的设备将尝试与远程设备game_server建立直接对等连接。 换句话说,玩家的设备永远不会直接相互连接,而只能连接到服务器设备。 服务器设备将尝试直接连接到所有玩家和其他服务器设备。

此标志不能与 SamePlatformTypePartyNetworkConfiguration 结构中的任何 、DifferentPlatformTypeSameEntityLoginProviderDifferentEntityLoginProvider 标志组合使用。 它可以与这些标志合并为 PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask 值的一部分。

备注

在成功将初始用户验证到网络中时,如果网络 PartyNetworkConfiguration 结构中声明的这些标志允许,设备可能会尝试与已加入网络的其他设备建立直接点对点连接。 如果尝试成功,设备之间的端点消息和聊天数据将使用这些直接连接传输。 对于由于设备之间的环境不兼容而失败的尝试,这些设备之间的所有通信都将通过透明云中继服务器进行传输。 如果不允许设备通过这些标志尝试直接对等连接,则它们永远不会交换 IP 地址信息,并且将始终通过透明云中继服务器传输终结点消息和聊天数据。

可以通过调用 PartyNetwork::GetDeviceConnectionType() 来确定本地设备是否实际上建立了与特定远程设备的直接对等连接。

成功的直接对等连接可能会降低某些设备之间的延迟,但尝试建立该连接时还需要用户向其他人披露其设备的 IP 地址,这可能会引起隐私问题或者使恶意用户可能攻击对等方设备和游戏外的 Internet 连接。 出于策略原因,某些平台上可能也不允许使用该功能。 确保为性能和安全目标使用适当的标志。

除了特定网络的 PartyNetworkConfiguration::directPeerConnectivityOptions 值,可以选择性地通过设备进一步限制其通过 PartyManager::SetOption() 来设置 PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask。 使用按位 AND 操作计算所有标志。 也就是说,只有在三个位置启用了特定标志时,特定标志才对给定网络的设备对生效:网络的 PartyNetworkConfiguration 结构以及 这两个 设备各自的本地掩码选项。 即使群网络允许相关表单进行直接对等连接,任一设备也可以不启用标志,单独选择退出 IP 地址披露,以及直接进行连接尝试。 PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask 值默认允许网络启用所有直接对等连接,因此只需在有设备特定的要求时进行配置,以防止与其相关的某些或所有直接对等连接。

为了避免过度消耗资源,群库还会在内部阻止任何给定设备尝试在当前参与的所有网络上建立超过配置的最大直接对等连接数,即使这些标志允许也是如此。 这不会影响设备使用更多远程设备参与大型或多个网络的能力。 与额外设备的通信将仅通过透明的云中继服务器传输。 若要修改直接对等连接的最大数目,请使用 PartyManager::SetOption () 设置 PartyOption::LocalDeviceMaxDirectPeerConnections

建议不要主动为任何给定的设备对强制实施直接对等连接的可用性, (即, 如果 PartyNetwork:: GetDeviceConnectionType () 报告了 PartyDeviceConnectionType::D irectPeerConnection) 以外的值,则不要调用 PartyNetwork::LeaveNetwork () ,因为使用的特定基础传输方法不会改变通信的整体逻辑能力。 如果游戏设计对于最大消息延迟有严格要求(其鼓励直接对等连接),那么最好根据 PartyEndpointStatistic::AverageDeviceRoundTripLatencyInMilliseconds 统计数据所报告的该延迟的当前具体观察结果采取措施,而不是根据传输机制进行抽象假设。 否则,你可能会不断阻碍用户尝试与同一组好友玩游戏,由于无法控制的环境因素,他们总是需要使用附近的透明云中继服务器。

要求

标题: Party.h

另请参阅

群成员
PartyNetworkConfiguration
PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask
PartyManager::SetOption
PartyEndpointStatistic::AverageDeviceRoundTripLatencyInMilliseconds
PartyLocalEndpoint::GetEndpointStatistics