語法
成員
maxUserCount uint32_t
網路中允許的唯一使用者數目上限。
此值必須大於 0。如果用戶端呼叫 PartyNetwork::AuthenticateLocalUser() 會違反此限制,則作業將以非同步方式失敗,且 PartyAuthenticateLocalUserCompletedStateChange::result 會設定為 PartyStateChangeResult::NetworkLimitReached。
maxDeviceCount uint32_t
允許連線至網路的裝置數目上限。
PlayFab Party 網路可以調整規模,以支援 2 到 128 部裝置。服務會選擇針對您的案例最佳化的網路轉送設定,因此請務必在 PartyNetworkConfiguration 中設定 maxDeviceCount,以符合您網路中預期的裝置數目上限。如果用戶端呼叫 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 位址,這可能會引發隱私權疑慮,或讓惡意使用者有機會在遊戲外攻擊對等裝置及其網際網路連線。基於原則考量,某些平台也可能不允許這種連線。請務必根據您的效能和安全性目標使用適當的旗標。
除了此處為特定網路設定的值之外,裝置還可以選擇使用 PartyManager::SetOption() 設定 PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask,針對其驗證進入的所有網路進一步限制這些旗標。所有旗標都會使用位元 AND 運算進行評估。也就是說,只有當特定旗標在三個位置都啟用時,該旗標才會對指定網路中的一對裝置實際生效:網路的此欄位,以及兩部裝置各自的本機遮罩選項。即使此欄位允許相關形式的直接對等連線,任一部裝置都可以藉由不在其本機裝置遮罩選項中啟用該旗標,單方面選擇退出彼此之間的 IP 位址揭露和直接連線嘗試。PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask 值預設為允許網路所啟用的所有直接對等連線,因此只有在您有裝置特定需求、要防止涉及該裝置的部分或全部直接對等連線時,才需要設定它。
為避免過度耗用資源,即使這些旗標允許,Party 程式庫也會在內部防止任何指定裝置在其目前參與的所有網路中,嘗試建立超過所設定上限數目的直接對等連線。這不會影響裝置參與大型網路或多個網路並與其他遠端裝置通訊的能力。與其他裝置的通訊只會改為透過透明雲端轉送伺服器傳輸。若要修改直接對等連線的數目上限,請使用 PartyManager::SetOption() 設定 PartyOption::LocalDeviceMaxDirectPeerConnections。
建議您不要對任何指定的一對裝置主動強制要求直接對等連線的可用性 (亦即,不要在 PartyNetwork::GetDeviceConnectionType() 回報 PartyDeviceConnectionType::DirectPeerConnection 以外的值時呼叫 PartyNetwork::LeaveNetwork()),因為使用中的特定底層傳輸方法不會改變整體的邏輯通訊能力。如果您的遊戲設計對訊息延遲上限有嚴格要求,因而傾向使用直接對等連線,最好根據 PartyEndpointStatistic::AverageDeviceRoundTripLatencyInMilliseconds 統計資料所回報之目前實際觀察到的延遲採取行動,而不是根據傳輸機制做出抽象假設。否則,您可能會持續妨礙那些因無法控制的環境因素而總是需要使用附近透明雲端轉送伺服器、並嘗試與同一群朋友一起遊玩的使用者。
需求
標頭: Party.h另請參閱
Party 成員PartyNetwork::AuthenticateLocalUser
PartyAuthenticateLocalUserCompletedStateChange
PartyManager::ConnectToNetwork
PartyConnectToNetworkCompletedStateChange
PartyNetwork::CreateEndpoint
PartyNetworkDestroyedStateChange
PartyStateChangeResult
PartyDirectPeerConnectivityOptions
