PartyNetworkConfiguration
网络配置数据。
语法
struct PartyNetworkConfiguration {
uint32_t maxUserCount;
uint32_t maxDeviceCount;
uint32_t maxUsersPerDeviceCount;
uint32_t maxDevicesPerUserCount;
uint32_t maxEndpointsPerDeviceCount;
PartyDirectPeerConnectivityOptions directPeerConnectivityOptions;
}
成员
maxUserCount
uint32_t
网络中允许的最大唯一用户数。
此值必须大于 0。
如果客户端通过调用 PartyNetwork::AuthenticateLocalUser() 违反了此限制,则该操作将异步失败,并且 PartyAuthenticateLocalUserCompletedStateChange::result 将设置为 PartyStateChangeResult::NetworkLimitReached。
maxDeviceCount
uint32_t
允许连接到网络的最大设备数。
PlayFab Party 网络可以缩放,以支持 2 到 128 台设备之间的任意位置。 该服务将选择针对你的方案优化的网络中继配置,因此,必须配置 maxDeviceCount
, PartyNetworkConfiguration
以匹配网络中的最大预期设备数。
如果客户端通过调用 PartyManager::ConnectToNetwork() 违反了此限制,则该操作将异步失败,并且 PartyConnectToNetworkCompletedStateChange::result 将设置为 PartyStateChangeResult::NetworkLimitReached。
maxUsersPerDeviceCount
uint32_t
每个设备允许的最大用户数。
此值必须介于 1 和 c_maxLocalUsersPerDeviceCount
(包含)之间。
如果客户端通过调用 PartyNetwork::AuthenticateLocalUser() 违反了此限制,则该操作将异步失败,并且 PartyAuthenticateLocalUserCompletedStateChange::result 将设置为 PartyStateChangeResult::NetworkLimitReached。
maxDevicesPerUserCount
uint32_t
每个用户允许的最大设备数。
此值必须大于 0。
如果客户端通过调用 PartyNetwork::AuthenticateLocalUser() 违反了此限制,则该操作将异步失败,并且 PartyAuthenticateLocalUserCompletedStateChange::result 将设置为 PartyStateChangeResult::NetworkLimitReached。
maxEndpointsPerDeviceCount
uint32_t
每个设备允许的最大终结点数。
此值必须介于 0 和 c_maxNetworkConfigurationMaxEndpointsPerDeviceCount
(包含)之间。
如果在网络配置可用后,客户端通过调用 PartyNetwork::CreateEndpoint() 违反了此限制,则对 PartyNetwork::CreateEndpoint() 的调用将同步失败。 如果在网络配置可用时,客户端已将违反的终结点创建数量排队,则客户端将被从网络中踢出,并且当网络配置可用时将生成 PartyNetworkDestroyedStateChange。
directPeerConnectivityOptions
PartyDirectPeerConnectivityOptions
是否以及如何支持网络中设备之间的直接对等连接尝试。
在成功将初始用户验证到网络中时,如果这些标志允许,设备可能会尝试与已参与网络的其他设备建立直接对等连接。 如果尝试成功,设备之间的终结点消息和聊天数据将使用这些直接连接传输。 对于由于设备之间的环境不兼容而失败的尝试,这些设备之间的所有通信都将通过透明云中继服务器进行传输。 如果不允许设备通过这些标志尝试直接对等连接,则它们永远不会交换 IP 地址信息,并且将始终通过透明云中继服务器传输终结点消息和聊天数据。
可以通过调用 PartyNetwork::GetDeviceConnectionType() 来确定本地设备是否实际上建立了与特定远程设备的直接对等连接。
成功的直接对等连接可能会降低某些设备之间的延迟,但尝试建立该连接时还需要用户向其他人披露其设备的 IP 地址,这可能会引起隐私问题或者使恶意用户可能攻击对等方设备和游戏外的 Internet 连接。 出于策略原因,某些平台上可能也不允许使用该功能。 请务必使用适当的标志来实现性能和安全目标。
除了此处配置的特定网络值外,设备还可以选择使用 PartyManager::SetOption() 设置 PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask,从而针对其进行身份验证的所有网络进一步限制标志。 使用按位 AND 运算计算所有标志。 也就是说,仅在以下三处启用特定标志时,该特定标志才会对给定网络的设备对有效:网络的此字段以及两个设备各自的本地掩码选项。 即使此字段允许相关形式的直接对等连接,任一设备也可以通过不在其本地设备掩码选项中启用标志,主动选择退出 IP 地址披露和它们之间的直接连接尝试。
PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask 值默认允许网络启用的所有直接对等连接,因此只有当你有特定于设备的要求时才需要对其进行配置,以便阻止涉及它的部分或全部直接对等连接。
为了避免过度消耗资源,群库还会在内部阻止任何给定设备尝试在当前参与的所有网络上建立超过配置的最大直接对等连接数,即使这些标志允许也是如此。 这不会影响设备使用其他远程设备加入大型或多个网络的能力。 仅通过透明云中继服务器传输其他设备的通信。 若要修改直接对等连接的最大数目,请使用 PartyManager::SetOption () 设置 PartyOption::LocalDeviceMaxDirectPeerConnections。
建议不要主动强制对任何给定设备对进行直接对等连接(例如,如果 PartyNetwork::GetDeviceConnectionType() 报告除 PartyDeviceConnectionType::DirectPeerConnection 以外的值,请不要调用 PartyNetwork::LeaveNetwork()),因为使用的特定基础传输方法不会改变通信的整体逻辑能力。 如果游戏设计对于最大消息延迟有严格要求(其鼓励直接对等连接),那么最好根据 PartyEndpointStatistic::AverageDeviceRoundTripLatencyInMilliseconds 统计数据所报告的该延迟的当前具体观察结果采取措施,而不是根据传输机制进行抽象假设。 否则,你可能会不断阻碍用户尝试与同一组好友玩游戏,由于无法控制的环境因素,他们总是需要使用附近的透明云中继服务器。
要求
标题: Party.h
另请参阅
群成员
PartyNetwork::AuthenticateLocalUser
PartyAuthenticateLocalUserCompletedStateChange
PartyManager::ConnectToNetwork
PartyConnectToNetworkCompletedStateChange
PartyNetwork::CreateEndpoint
PartyNetworkDestroyedStateChange
PartyStateChangeResult
PartyDirectPeerConnectivityOptions