Skip to main content
控制在网络中的设备之间尝试使用直接对等连接的标志。

Syntax

Constants

Remarks

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

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

成功的直接对等连接可能会降低某些设备之间的延迟,但尝试建立此类连接也要求用户向他人披露其设备的 IP 地址,这可能引发隐私方面的担忧,或使恶意用户可能在游戏之外攻击对等设备及其 Internet 连接。此外,出于策略原因,某些平台上可能不允许直接对等连接。请务必使用适合你的性能和安全目标的标志。

除了特定网络的 PartyNetworkConfiguration::directPeerConnectivityOptions 值之外,设备可选择通过使用 PartyManager::SetOption() 设置 PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask,进一步约束其进行身份验证的所有网络的这些标志。所有标志均使用按位 AND 运算进行评估。也就是说,只有当特定标志在三处均已启用时,它才会对给定网络的一对设备生效:网络的 PartyNetworkConfiguration 结构中,以及两台设备各自的本地掩码选项中。即使 Party 网络允许相关形式的直接对等连接,任一设备也可通过不启用该标志单方面选择退出彼此之间的 IP 地址披露和直接连接尝试。PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask 值默认允许网络启用的所有直接对等连接,因此仅当你有设备特定的要求以阻止部分或全部涉及该设备的直接对等连接时,才需要配置它。

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

建议不要主动强制要求任何给定设备对之间必须存在直接对等连接(即,如果 PartyNetwork::GetDeviceConnectionType() 报告的值不是 PartyDeviceConnectionType::DirectPeerConnection,请不要调用 PartyNetwork::LeaveNetwork()),因为所使用的特定底层传输方式不会改变整体逻辑通信能力。如果游戏设计对最大消息延迟有严格要求,从而鼓励使用直接对等连接,最好根据 PartyEndpointStatistic::AverageDeviceRoundTripLatencyInMilliseconds 统计信息所报告的当前对该延迟的具体观察结果采取行动,而不是基于传输机制做出抽象假设。否则,你可能会持续妨碍尝试与同一群朋友一起游戏的用户,而这些朋友因超出他们控制范围的环境因素,始终需要使用附近的透明云中继服务器。

Requirements

Header: Party.h

See also

Party members
PartyNetworkConfiguration
PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask
PartyManager::SetOption
PartyEndpointStatistic::AverageDeviceRoundTripLatencyInMilliseconds
PartyLocalEndpoint::GetEndpointStatistics
最后修改于 2026年8月24日