XBOX Live 協助程式庫概觀
PlayFab Party 的 XBOX Live 協助程式庫旨在協助使用 PlayFab Party 的遊戲符合與通訊相關的 XBOX Live 原則 (XR-015 和 XR-045)。XBOX Live 協助程式庫可在 Nuget.org 上取得。與 PlayFab Party 程式庫的相容性
雖然我們努力將 API 中的重大變更降到最低,但對 PlayFab Party API 所做的某些變更可能會導致 XBOX Live 協助程式庫傳回錯誤的值。請參閱下表,確保您的程式庫版本相容。追蹤 XBOX Live 使用者
必須明確告知 PlayFab Party XBOX Live 協助程式庫目前參與 Party 工作階段的 XBOX Live 使用者。建議遊戲接聽其多人遊戲工作階段文件的變更,並透過PartyXblManager::CreateLocalChatUser 和 PartyXblManager::CreateRemoteChatUser 在 XBOX Live 協助程式庫中反映該名單,以告知程式庫。
對於本機使用者:
PartyChatControlCreatedStateChange 更新時,您可能需要類似的關聯邏輯。
對於本機和遠端聊天使用者,請務必記住,核心 Party 程式庫是透過 PlayFab 實體識別碼來識別使用者和聊天控制項,而 XBOX Live 協助程式庫則是以 XBOX 使用者識別碼識別聊天使用者。因此,通常需要在兩者之間進行轉換。如需詳細資訊,請參閱 XBOX Live 使用者識別碼與 PlayFab 實體識別碼之間的對應。
從 PartyXblLocalChatUsers 建立 PartyLocalChatControls
PartyXblLocalChatUser 物件通常只有在與 Party 程式庫中的 PartyLocalUser 和 PartyLocalChatControl 物件相關聯時才有用。產生 PartyLocalUser 和 PartyLocalChatControl 物件時,遊戲需要將其使用者登入 PlayFab,並擷取使用者的 entityId 和 titlePlayerEntityToken。登入可以透過 PlayFab CPP SDK 執行,但如果遊戲打算使用 XBOX Live 認證登入 PlayFab,可以使用 PartyXblManager::LoginToPlayFab,以避免引入額外的相依性。
下列範例顯示 XBOX Live 協助程式庫如何協助您從 PartyXblLocalChatUser 物件建立 PartyLocalUser 和 PartyLocalChatControl 物件。如需建立 PartyXblLocalChatUser 物件的詳細資訊,請參閱追蹤 XBOX Live 使用者。
PartyXblManager::LoginToPlayFab 後不久,您會收到包含登入作業結果的 PartyXblLoginToPlayFabCompletedStateChange。
尊重 XBOX Live 使用者的協助工具喜好設定
PartyXblLocalChatUser 物件會公開 XBOX Live 使用者與 Party 聊天工作階段相關的部分協助工具喜好設定。遊戲可以使用此資訊立即啟用 Party 的部分協助工具功能,為玩家提供更好的體驗。
尊重 XBOX Live 使用者的隱私權設定和權限
根據 XBOX Live 原則,當使用者的隱私權或權限不允許時,遊戲不得允許透過 XBOX Live 進行通訊。XBOX Live 協助程式庫可讓您查詢 XBOX Live 原則所允許之兩位使用者之間最嚴格的PartyChatPermissionOptions,以協助您達成此目標。每當此值變更時,程式庫都會產生 PartyXblRequiredChatPermissionInfoChangedStateChange。可以呼叫 PartyXblLocalChatUser::GetRequiredChatPermissionInfo() 取得更新的 PartyChatPermissionOptions。
PartyXblRequiredChatPermissionInfoChangedStateChange,通知您現在有更新的 PartyChatPermissionOptions 值可用。
PartyXblChatPermissionInfo 結構包含兩項資訊:
PartyChatPermissionOptions遮罩,可以直接傳遞給PartyLocalChatControl::SetPermission(),或者如果您已經有想要使用的PartyChatPermissionOptions值,但想確保遵守 XBOX Live 原則,也可以將其用作二進位遮罩。PartyXblChatPermissionMaskReason值,提供有關PartyXblChatPermissionInfo::chatPermissionMask值的額外資訊
尊重跨網路通訊權限
支援 XBOX Live 和非 XBOX Live 玩家之間跨網路遊玩和通訊的遊戲,需要在允許這些玩家之間通訊之前檢查通訊權限。XBOX Live 協助程式庫透過PartyXblLocalChatUser::GetCrossNetworkCommunicationPrivacySetting() 提供此資訊。此方法會傳回具有三個可能值的 PartyXblCrossNetworkCommunicationPrivacySetting 列舉:
XBOX Live 使用者識別碼與 PlayFab 實體識別碼之間的對應
許多使用 PlayFab Party 的 XBOX Live 遊戲需要在 XBOX Live 使用者識別碼 (在整個 XBOX Live 生態系統中使用) 和 PlayFab 實體識別碼 (由 PlayFab Party 使用) 之間進行轉換。使用PartyXblManager::GetEntityIdsFromXboxLiveUserIds,遊戲可以擷取與指定 XBOX Live 使用者識別碼清單對應的 PlayFab 實體識別碼清單。遊戲應該已經透過外部名單服務 (例如 Multiplayer Session Directory) 取得 XBOX Live 使用者識別碼清單。藉由將名單中的 XBOX Live 使用者識別碼與其 PlayFab 實體識別碼相關聯,我們可以建構與遊戲工作階段名單對應的所有 PlayFab 實體識別碼的對應。接著可以使用此對應,將 PartyEndpoint 和 PartyChatControl 物件與其對應的 XBOX Live 使用者相關聯。
只有在 XBOX Live 使用者已連結至 PlayFab 帳戶時,每個 XBOX Live 使用者識別碼才會對應到 PlayFab 實體識別碼。第一次為指定的 XBOX 使用者呼叫
PartyXblManager::LoginToPlayFab 時,會自動建立並連結 PlayFab 帳戶。或者,PlayFab SDK 的取用者也可以使用 LoginWithXbox API 達成相同的結果。PartyXblLocalChatUser 將用於向 PlayFab 進行驗證。如果使用者先前未透過呼叫 PartyXblManager::LoginToPlayFab 登入 PlayFab,XBOX Live 協助程式庫將需要在背景中驗證使用者。
PartyXblManager::GetEntityIdsFromXboxLiveUserIds 後不久,您會收到包含作業結果的 PartyXblGetEntityIdsFromXboxLiveUserIdsCompletedStateChange。此結果可用來建構或更新您的對應。
Windows 的特殊考量
在 Windows 上,XBOX Live 協助程式庫需要遊戲的協助才能取得 XBOX Live 權杖。程式庫會藉由產生PartyXblTokenAndSignatureRequestedStateChange 來要求權杖。遊戲可以使用 XBOX 驗證程式庫 (XAL) 來完成這些要求。將此工作交由遊戲處理,可確保遊戲完全掌控通常與使用者驗證相關聯的任何 UI 處理和同意提示。
correlationId 呼叫 PartyXblManager::CompleteGetTokenAndSignatureRequest(),將其提供給 XBOX Live 協助程式庫。