namespace、title、group、master_player_account 和 title_player_account。其他實體對 PlayFab 而言可能沒有固有意義,但在您的遊戲中有其意義。
每個實體都有一個設定檔,其中包含該實體擁有的各種資源。例如物件、檔案、語言設定、原則,以及未來的其他資源。實體設定檔可直接使用 GetProfile API 擷取,而許多其他 API 則會操作設定檔內的特定資源,例如 SetObjects。
最後,實體之間存在父子關係,這會影響管理其他實體如何存取某個實體資源的權限。指定實體的「祖系」可以在其設定檔的 Lineage 屬性中找到。
與傳統 API 的比較
了解上述內容後,讓我們看看「傳統」API 和「實體」API 之間的差異。如果您正在使用傳統 API,您其實已經在使用與實體 API 相同的實體,只是它們不一定是明確的。例如,在用戶端 API 中,UpdateUserData 操作的是 title_player_account 實體,GetUserPublisherData 操作的是 master_player_account,GetCharacterStatistics 操作的是 character (它是 title_player_account 的子系),GetTitleData 操作的是 title,而 GetPublisherData 操作的是 namespace。
一般而言,每個傳統 API 都操作一種特定類型的實體,但實體類型通常是隱含的,而且不一定能從 API 名稱推斷出來。此外,兩種實體類型的對等 API 在參數、限制和行為上可能存在細微差異 (例如 UpdatePlayerStatistics 與 UpdateCharacterStatistics 的比較)。如果您對此感到困惑,您並不孤單。我們希望在不破壞與現有 API 集合相容性的前提下簡化 PlayFab API,這就引出了…
「實體 API」是我們對較新 PlayFab API 的稱呼,這些 API 遵循下列設計目標 (有一些例外)。
- 可搭配任意類型的實體使用。
- 具有實體 Type 和 Id 的明確參數。
- 對實體設定檔中的特定資源執行特定作業。
- 可在多種安全性內容中呼叫,例如從遊戲用戶端、遊戲伺服器、Cloud Script 和後端伺服器呼叫,其權限由原則定義,並根據呼叫 API 的實體來選取。
傳統 API 使用者的考量
為了在維持相容性的同時實現設計目標,我們通常會將這些實體 API 作為獨立的集合推出,與傳統 API 並存。雖然實體 API 可以搭配與傳統 API 相同的實體使用,但在大多數情況下,它們會操作這些實體所擁有的另一組資源/資料。例如,SetObjects 實體 API 和 UpdateUserData 傳統 API 都可以將資料儲存在 title_player_account 實體下,但兩個 API「看到」的資料是分開的。以下是一些實際影響:
缺點
- 如果您的遊戲已經針對玩家資料、庫存和其他資源 (也稱為
title_player_account) 使用傳統 API,這些現有資料不會自動出現在對等的實體 API 中。 - 實體 API 需要一些時間才能達到與傳統 API 相同的功能。在大多數情況下,資料是分開儲存的,而且需要進行許多後端變更才能支援它們。某些傳統功能可能永遠不會納入實體 API。
優點
- 您不需要做任何事。如果您的遊戲已經在 PlayFab 傳統 API 上運作良好,它會繼續運作。
- 您可以開始使用實體 API,同時在同一組實體上繼續使用傳統 API。在某些情況下,這樣做能以很少的成本帶來明顯的好處。例如,除了儲存在傳統「玩家資料」中的現有設定之外,您還可以新增一項功能,將較大量的資料儲存在檔案中。
功能概觀
實體程式設計模型是 PlayFab 新一代資料和遊戲服務的基礎。支援的實體類型
下列清單說明可用來建構EntityKey 的可用實體類型。在大部分較新的 API 方法中,實體索引鍵用於識別實體。
這些值用於 EntityKey.Type 欄位。
這些值會區分大小寫。其他/自訂值目前無法運作。
namespace
namespace 實體代表跨遊戲的玩家身分和共用資料範圍。根據預設,它涵蓋工作室中的每個遊戲。命名空間與工作室不同,工作室是一種管理分組。如需詳細資訊,請參閱 PlayFab 概念。
某些 API 使用較舊的用語 publisher 來表示此範圍。發行者識別碼 (Publisher ID) 用於識別命名空間。
此實體的變更不會即時反映。
ID 欄位設定為您的 GamePublisherId。若要擷取您的 GamePublisherId:
- 登入 Game Manager。
- 從 My Studios and Titles 頁面,選取適當的遊戲。
- 選取遊戲頁面左上角的齒輪圖示,然後選取 Title Settings。
- 選取 API Features 索引標籤。
GamePublisherId 和命名空間識別碼。
title
title 實體代表限定於單一遊戲範圍的全域資訊。遊戲是針對某款遊戲或遊戲環境的獨立 PlayFab 資源。
此實體的變更不會即時反映。
ID 欄位設定為您遊戲的 TitleId。若要擷取您的 TitleId:
- 登入 Game Manager。
- 在 My Studios and Titles 頁面上,找到您的遊戲。
master_player_account
master_player_account 是由命名空間中所有遊戲共用的玩家實體。
將 ID 欄位設定為傳統 API 中的 PlayFabId,此值由任何 LoginResult.PlayFabId 傳回。
title_player_account
對大多數開發人員而言,title_player_account 以最傳統的方式代表玩家。
在用戶端 API 中將 ID 欄位設定為 LoginResult.EntityToken.Id,或在驗證 API 中設定為 GetEntityTokenResponse.Entity.Id。
character
character 是 title_player_account 的子實體,直接對應傳統 API 中的角色。
將 ID 欄位設定為 result.Characters[i].CharacterId 中的任何 characterId。
group
group 是包含其他實體的實體。目前僅限於玩家和角色。
如果您正在建立群組,請將 ID 欄位設定為 result.Group.Id;在列出您的成員資格時,則設定為 result.Groups[i].Group.Id。
game_server
game_server 實體是遊戲伺服器使用的唯一實體,主要用於 Matchmaking 和 Lobby 功能。未來可能會新增其他情境以支援其他 PlayFab 功能。
此實體為遊戲伺服器提供專屬的身分,有助於唯一識別遊戲伺服器,以便訂閱 Matchmaking 和 Lobby 的即時更新,並支援大廳擁有者移轉等特定功能。
若要以 game_server 實體進行驗證,請以 title 實體身分呼叫 API AuthenticateGameServerWithCustomId,並擷取 game_server 實體索引鍵和權杖組。透過 PFMultiplayerSetEntityToken 使用 PlayFab Multiplayer SDK 時,請使用此實體索引鍵。