> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PartyNetworkConfiguration

> 网络配置数据。

网络配置数据。

## 语法

```cpp theme={null}
struct PartyNetworkConfiguration {  
    uint32_t maxUserCount;  
    uint32_t maxDeviceCount;  
    uint32_t maxUsersPerDeviceCount;  
    uint32_t maxDevicesPerUserCount;  
    uint32_t maxEndpointsPerDeviceCount;  
    PartyDirectPeerConnectivityOptions directPeerConnectivityOptions;  
}  
```

### 成员

**`maxUserCount`**   uint32\_t

网络中允许的唯一用户的最大数量。

此值必须大于 0。\
\
&#x20;如果客户端通过调用 [PartyNetwork::AuthenticateLocalUser()](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/methods/partynetwork_authenticatelocaluser.md) 会违反此限制,则操作将异步失败,并且 [PartyAuthenticateLocalUserCompletedStateChange::result](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/structs/partyauthenticatelocalusercompletedstatechange.md) 将设置为 [PartyStateChangeResult::NetworkLimitReached](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/enums/partystatechangeresult.md)。

**`maxDeviceCount`**   uint32\_t

允许连接到网络的最大设备数。

PlayFab Party 网络的规模可支持 2 到 128 台设备。服务将选择针对你的场景进行优化的网络中继配置,因此将 `PartyNetworkConfiguration` 中的 `maxDeviceCount` 配置为与网络中预期的最大设备数一致非常重要。\
\
&#x20;如果客户端通过调用 [PartyManager::ConnectToNetwork()](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_connecttonetwork.md) 会违反此限制,则操作将异步失败,并且 [PartyConnectToNetworkCompletedStateChange::result](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/structs/partyconnecttonetworkcompletedstatechange.md) 将设置为 [PartyStateChangeResult::NetworkLimitReached](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/enums/partystatechangeresult.md)。

**`maxUsersPerDeviceCount`**   uint32\_t

每台设备允许的最大用户数。

此值必须介于 1 和 `c_maxLocalUsersPerDeviceCount`(包括两端)之间。\
\
&#x20;如果客户端通过调用 [PartyNetwork::AuthenticateLocalUser()](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/methods/partynetwork_authenticatelocaluser.md) 会违反此限制,则操作将异步失败,并且 [PartyAuthenticateLocalUserCompletedStateChange::result](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/structs/partyauthenticatelocalusercompletedstatechange.md) 将设置为 [PartyStateChangeResult::NetworkLimitReached](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/enums/partystatechangeresult.md)。

**`maxDevicesPerUserCount`**   uint32\_t

每个用户允许的最大设备数。

此值必须大于 0。\
\
&#x20;如果客户端通过调用 [PartyNetwork::AuthenticateLocalUser()](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/methods/partynetwork_authenticatelocaluser.md) 会违反此限制,则操作将异步失败,并且 [PartyAuthenticateLocalUserCompletedStateChange::result](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/structs/partyauthenticatelocalusercompletedstatechange.md) 将设置为 [PartyStateChangeResult::NetworkLimitReached](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/enums/partystatechangeresult.md)。

**`maxEndpointsPerDeviceCount`**   uint32\_t

每台设备允许的最大终结点数。

此值必须介于 0 和 `c_maxNetworkConfigurationMaxEndpointsPerDeviceCount`(包括两端)之间。\
\
&#x20;如果在网络配置可用后,客户端通过调用 [PartyNetwork::CreateEndpoint()](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/methods/partynetwork_createendpoint.md) 会违反此限制,则对 PartyNetwork::CreateEndpoint() 的调用将同步失败。如果客户端在网络配置变得可用之前已经排队了违规数量的终结点创建操作,则该客户端将被从网络中踢出,并生成 [PartyNetworkDestroyedStateChange](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/structs/partynetworkdestroyedstatechange.md)。

**`directPeerConnectivityOptions`**   [PartyDirectPeerConnectivityOptions](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/enums/partydirectpeerconnectivityoptions.md)

是否以及如何支持网络中设备之间的直接点对点连接尝试。

在成功将初始用户身份验证到网络的过程中,当这些标志允许时,设备可能会尝试与已经参与网络的其他设备建立直接点对点连接。对于成功的尝试,设备之间的终结点消息和聊天数据将通过这些直接连接传输。对于因设备之间的环境不兼容而失败的尝试,这些设备之间的所有通信都将改为通过透明云中继服务器传输。如果这些标志不允许设备尝试直接对等连接,则它们永远不会交换 IP 地址信息,并且将始终通过透明云中继服务器传输终结点消息和聊天数据。\
\
&#x20;你可以通过调用 [PartyNetwork::GetDeviceConnectionType()](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/methods/partynetwork_getdeviceconnectiontype.md) 来确定本地设备是否实际与特定远程设备建立了直接点对点连接。   \
\
&#x20;成功的直接对等连接可能会使某些设备之间的延迟更低,但尝试建立此类连接也需要用户向其他人披露其设备的 IP 地址,这可能会引发隐私方面的担忧,或使恶意用户可能在游戏之外潜在地攻击对等方的设备和 Internet 连接。出于策略原因,某些平台可能也不允许这样做。请务必使用适合你的性能和安全目标的标志。   \
\
&#x20;除了此处为特定网络配置的值外,设备还可以通过使用 [PartyManager::SetOption()](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_setoption.md) 设置 [PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/enums/partyoption.md),对其参与的所有网络进一步约束这些标志。所有标志都使用按位 AND 运算进行评估。也就是说,特定标志仅在下列三处都被启用时,才对给定网络的一对设备实际生效:该网络的此字段,以及*两个*设备各自的本地掩码选项。即使此字段允许相应形式的直接对等连接,任何一台设备均可以通过不在其本地设备掩码选项中启用该标志,单方面选择不进行 IP 地址披露和它们之间的直接连接尝试。[PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/enums/partyoption.md) 值默认允许网络所启用的所有直接对等连接,因此只有在你有针对特定设备的要求(要阻止涉及该设备的部分或全部直接对等连接)时,才需要对其进行配置。   \
\
&#x20;为避免消耗过多资源,即使这些标志允许,Party 库也会在内部阻止任何给定设备在其当前所参与的所有网络中尝试建立超过配置的最大数量的直接对等连接。这不影响设备参与具有其他远程设备的大型网络或多个网络的能力。与其他设备的通信只是通过透明云中继服务器传输而已。若要修改直接对等连接的最大数量,请使用 [PartyManager::SetOption()](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_setoption.md) 设置 [PartyOption::LocalDeviceMaxDirectPeerConnections](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/enums/partyoption.md)。   \
\
&#x20;建议不要为任何给定的一对设备主动强制要求直接点对点连接的可用性(即,如果 [PartyNetwork::GetDeviceConnectionType()](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/methods/partynetwork_getdeviceconnectiontype.md) 报告了 [PartyDeviceConnectionType::DirectPeerConnection](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/enums/partydeviceconnectiontype.md) 以外的值,不要调用 [PartyNetwork::LeaveNetwork()](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/methods/partynetwork_leavenetwork.md)),因为所使用的特定底层传输方法不会更改总体上的逻辑通信能力。如果你的游戏设计对最大消息延迟有严格要求,鼓励使用直接对等连接,那么最好基于 [PartyEndpointStatistic::AverageDeviceRoundTripLatencyInMilliseconds](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/enums/partyendpointstatistic.md) 统计信息所报告的当前具体延迟观测采取行动,而不是基于传输机制作出抽象假设。否则,你可能会不断阻碍那些总是需要通过附近的透明云中继服务器进行通信(因为其无法控制的环境因素)的用户与相同的朋友一起游戏。

## 要求

**标头:** Party.h

## 另请参阅

[Party 成员](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/party_members.md)\
[PartyNetwork::AuthenticateLocalUser](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/methods/partynetwork_authenticatelocaluser.md)\
[PartyAuthenticateLocalUserCompletedStateChange](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/structs/partyauthenticatelocalusercompletedstatechange.md)\
[PartyManager::ConnectToNetwork](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_connecttonetwork.md)\
[PartyConnectToNetworkCompletedStateChange](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/structs/partyconnecttonetworkcompletedstatechange.md)\
[PartyNetwork::CreateEndpoint](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/methods/partynetwork_createendpoint.md)\
[PartyNetworkDestroyedStateChange](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/structs/partynetworkdestroyedstatechange.md)\
[PartyStateChangeResult](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/enums/partystatechangeresult.md)\
[PartyDirectPeerConnectivityOptions](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/enums/partydirectpeerconnectivityoptions.md)


## Related topics

- [PartyNetworkConfigurationMadeAvailableStateChange](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/structs/partynetworkconfigurationmadeavailablestatechange.md)
- [PartyNetwork::GetNetworkConfiguration](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/methods/partynetwork_getnetworkconfiguration.md)
- [PartyNetwork::GetDeviceConnectionType](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/methods/partynetwork_getdeviceconnectiontype.md)
- [PartyOption](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/enums/partyoption.md)
- [PartyManager::ConnectToNetwork](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_connecttonetwork.md)
