> ## 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.

# PartyDirectPeerConnectivityOptions

> 控制在網路中的裝置之間嘗試使用直接對等連線的旗標。

控制在網路中的裝置之間嘗試使用直接對等連線的旗標。

## 語法

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

## 常數

| 常數 | 描述 | |
| - | - | - |
| None | 未指定任何旗標。  沒有旗標表示不允許任何直接對等連線嘗試。裝置之間的所有端點訊息和聊天資料一律會透過透明的雲端轉送伺服器傳輸，且永遠不會交換任何 IP 位址資訊。 | |
| SamePlatformType | 可以嘗試在相同平台類型的裝置之間建立直接對等連線。  如果一對裝置被識別為具有與其使用之特定 Party 程式庫相關聯的相同硬體和/或作業系統平台類型 (例如 Windows PC、XBOX 遊戲主機、iOS 行動裝置)，它們就會嘗試建立直接對等連線。   請注意，此旗標本身不允許任何直接對等連線嘗試。它必須與 `SameEntityLoginProvider` 和 `DifferentEntityLoginProvider` 旗標的其中之一或兩者結合使用。     此旗標不能與 [PartyNetworkConfiguration](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/structs/partynetworkconfiguration.md) 結構中的 `OnlyServers` 旗標結合使用。它可以在 [PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/enums/partyoption.md) 值中與 `OnlyServers` 結合使用。 | |
| DifferentPlatformType | 可以嘗試在不同平台類型的裝置之間建立直接對等連線。  如果一對裝置被識別為具有與各自使用之特定 Party 程式庫相關聯的不同硬體和/或作業系統平台類型 (例如 Windows PC、XBOX 遊戲主機、iOS 行動裝置)，它們就會嘗試建立直接對等連線。   請注意，此旗標本身不允許任何直接對等連線嘗試。它必須與 `SameEntityLoginProvider` 和 `DifferentEntityLoginProvider` 旗標的其中之一或兩者結合使用。     此旗標不能與 [PartyNetworkConfiguration](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/structs/partynetworkconfiguration.md) 結構中的 `OnlyServers` 旗標結合使用。它可以在 [PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/enums/partyoption.md) 值中與 `OnlyServers` 結合使用。 | |
| AnyPlatformType | 無論裝置的平台類型為何，都可以嘗試在裝置之間建立直接對等連線。  此旗標等同於 \`\`\`SamePlatformType | DifferentPlatformType\`\`\`。 |
| SameEntityLoginProvider | 可以嘗試在已驗證之使用者 PlayFab 實體識別碼是使用相同提供者登入的裝置之間建立直接對等連線。  正在將本機使用者初始驗證到網路中的裝置，會嘗試與至少有一個已驗證使用者 PlayFab 實體識別碼是使用與新驗證使用者相同提供者 (例如 XBOX Live、Facebook、iOS、Google) 登入的遠端裝置建立直接對等連線。   請注意，此旗標本身不允許任何直接對等連線嘗試。它必須與 `SamePlatformType` 和 `DifferentPlatformType` 旗標的其中之一或兩者結合使用。     此旗標不能與 [PartyNetworkConfiguration](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/structs/partynetworkconfiguration.md) 結構中的 `OnlyServers` 旗標結合使用。它可以在 [PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/enums/partyoption.md) 值中與 `OnlyServers` 結合使用。   | |
| DifferentEntityLoginProvider | 可以嘗試在已驗證之使用者 PlayFab 實體識別碼是使用不同提供者登入的裝置之間建立直接對等連線。  正在將本機使用者初始驗證到網路中的裝置，會嘗試與沒有任何已驗證使用者 PlayFab 實體識別碼是使用與新驗證使用者相同提供者 (例如 XBOX Live、Facebook、iOS、Google) 登入的遠端裝置建立直接對等連線。   請注意，此旗標本身不允許任何直接對等連線嘗試。它必須與 `SamePlatformType` 和 `DifferentPlatformType` 旗標的其中之一或兩者結合使用。     此旗標不能與 [PartyNetworkConfiguration](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/structs/partynetworkconfiguration.md) 結構中的 `OnlyServers` 旗標結合使用。它可以在 [PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/enums/partyoption.md) 值中與 `OnlyServers` 結合使用。 | |
| AnyEntityLoginProvider | 無論驗證之使用者 PlayFab 實體識別碼登入時使用的提供者為何，都可以嘗試在裝置之間建立直接對等連線。  此旗標等同於 \`\`\`SameEntityLoginProvider | DifferentEntityLoginProvider\`\`\`。 |
| OnlyServers | 如果至少有一個裝置具有 PlayFab 實體類型為 `game_server` 的已驗證使用者，則可以嘗試在裝置之間建立直接對等連線。  正在將本機使用者初始驗證到網路中的裝置，如果本機使用者或遠端裝置上的使用者是 `game_server` PlayFab 實體類型 (如指定給 [PartyManager::CreateLocalUserWithEntityType()](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_createlocaluserwithentitytype.md) 者)，就會嘗試與遠端裝置建立直接對等連線。換句話說，玩家的裝置永遠不會直接彼此連線，只會連線到伺服器裝置。伺服器裝置會嘗試直接連線到所有玩家和其他伺服器裝置。   此旗標不能與 [PartyNetworkConfiguration](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/structs/partynetworkconfiguration.md) 結構中的任何 `SamePlatformType`、`DifferentPlatformType`、`SameEntityLoginProvider` 或 `DifferentEntityLoginProvider` 旗標結合使用。它可以在 [PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/enums/partyoption.md) 值中與這些旗標結合使用。 | |

## 備註

在將初始使用者成功驗證到網路的過程中，若網路 [PartyNetworkConfiguration](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/structs/partynetworkconfiguration.md) 結構中宣告的這些旗標允許，裝置可能會嘗試與已參與網路的其他裝置建立直接對等連線。對於成功的嘗試，裝置之間的端點訊息和聊天資料會使用這些直接連線傳輸。對於因裝置之間環境不相容而失敗的嘗試，這些裝置之間的所有通訊都會改為透過透明的雲端轉送伺服器傳輸。如果這些旗標不允許裝置嘗試直接對等連線，則它們永遠不會交換 IP 位址資訊，且一律會透過透明的雲端轉送伺服器傳輸端點訊息和聊天資料。 \
\
&#x20;您可以呼叫 [PartyNetwork::GetDeviceConnectionType()](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/methods/partynetwork_getdeviceconnectiontype.md)，判斷本機裝置是否實際與特定遠端裝置建立了直接對等連線。   \
\
&#x20;成功的直接對等連線可能會在某些裝置之間提供較低的延遲，但嘗試建立直接對等連線也需要使用者向其他人揭露其裝置的 IP 位址，這可能會引發隱私權疑慮，或讓惡意使用者有機會在遊戲之外攻擊對等端的裝置和網際網路連線。基於原則考量，某些平台也可能不允許直接對等連線。請務必針對您的效能和安全性目標使用適當的旗標。   \
\
&#x20;除了特定網路的 [PartyNetworkConfiguration::directPeerConnectivityOptions](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/structs/partynetworkconfiguration.md) 值之外，裝置還可以使用 [PartyManager::SetOption()](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_setoption.md) 設定 [PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/enums/partyoption.md)，針對其驗證進入的所有網路選擇性地進一步限制這些旗標。所有旗標都會使用位元 AND 運算進行評估。也就是說，只有當特定旗標在三個地方都已啟用時 (網路的 [PartyNetworkConfiguration](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/structs/partynetworkconfiguration.md) 結構，以及*兩個*裝置各自的本機遮罩選項)，該旗標才會對指定網路中的一對裝置生效。即使 Party 網路允許相關形式的直接對等連線，任一裝置都可以藉由不啟用該旗標，單方面選擇退出彼此之間的 IP 位址揭露和直接連線嘗試。[PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/enums/partyoption.md) 值預設為允許網路啟用的所有直接對等連線，因此只有在您有裝置專屬需求，要防止涉及該裝置的部分或全部直接對等連線時，才需要設定它。   \
\
&#x20;為了避免耗用過多資源，即使這些旗標允許，Party 程式庫也會在內部防止任何指定裝置在其目前參與的所有網路中，嘗試建立超過設定上限數目的直接對等連線。這不會影響裝置參與具有更多遠端裝置之大型網路或多個網路的能力。與額外裝置之間的通訊只會改為透過透明的雲端轉送伺服器傳輸。若要修改直接對等連線的數目上限，請使用 [PartyManager::SetOption()](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_setoption.md) 設定 [PartyOption::LocalDeviceMaxDirectPeerConnections](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/enums/partyoption.md)。   \
\
&#x20;建議您不要主動強制任何一對裝置都必須有直接對等連線 (也就是說，如果 [PartyNetwork::GetDeviceConnectionType()](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/methods/partynetwork_getdeviceconnectiontype.md) 回報的值不是 [PartyDeviceConnectionType::DirectPeerConnection](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/enums/partydeviceconnectiontype.md)，請勿呼叫 [PartyNetwork::LeaveNetwork()](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/methods/partynetwork_leavenetwork.md))，因為使用中的特定基礎傳輸方法並不會改變整體的邏輯通訊能力。如果您的遊戲設計對訊息延遲上限有嚴格的需求而傾向使用直接對等連線，最好根據 [PartyEndpointStatistic::AverageDeviceRoundTripLatencyInMilliseconds](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/enums/partyendpointstatistic.md) 統計資料所回報的目前實際延遲觀察值採取動作，而不是根據傳輸機制做出抽象的假設。否則，您可能會持續妨礙那些因無法控制的環境因素而總是需要使用附近透明雲端轉送伺服器、卻想與同一群好友遊玩的使用者。

## 需求

**標頭：** Party.h

## 另請參閱

[Party 成員](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/party_members.md)\
[PartyNetworkConfiguration](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/structs/partynetworkconfiguration.md)\
[PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/enums/partyoption.md)\
[PartyManager::SetOption](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_setoption.md)\
[PartyEndpointStatistic::AverageDeviceRoundTripLatencyInMilliseconds](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/enums/partyendpointstatistic.md)\
[PartyLocalEndpoint::GetEndpointStatistics](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/classes/PartyLocalEndpoint/methods/partylocalendpoint_getendpointstatistics.md)


## Related topics

- [PartyOption](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/enums/partyoption.md)
- [PartyNetworkConfiguration](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/structs/partynetworkconfiguration.md)
- [PlayFab Party 版本資訊](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/release-notes.md)
- [Party C/C++ API 概觀](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/party_members.md)
- [DirectPeerConnectivityOptions](https://docs.xbox.com/zh-TW/services/playfab/multiplayer/networking/unity-party-api-reference/enums/partyunitydirectpeerconnectivityoptions.md)
