雲端儲存

玩家在多部裝置上玩遊戲,並在同一部裝置上多次安裝遊戲。因此玩家每次都必須從上次的進度狀態開始遊戲。如要達成這個目標,您必須在遊戲中導入雲端儲存解決方案。

為符合遊戲開發人員計畫的使用者體驗指南,遊戲必須實作雲端儲存解決方案,該解決方案包含兩部分:

  1. 雲端儲存

    將玩家的遊戲狀態儲存至雲端。在玩家開始遊戲時擷取。Play 遊戲服務的遊戲進度存檔功能提供這項服務,但您也可以使用任何雲端儲存解決方案。

  2. 解決多個遊戲狀態的衝突

    如果使用者有多個帳戶,或裝置上儲存的遊戲資料與雲端資料發生衝突,您需要制定衝突解決政策。通常使用者會決定如何解決這些衝突。衝突解決政策應涵蓋下列主要情境:

    • 每位使用者有多個帳戶:處理單一使用者透過不同帳戶與應用程式互動的案例。
    • 狀態衝突:解決本機遊戲狀態與雲端儲存遊戲狀態之間的不一致問題。

遊戲進度存檔

遊戲進度存檔服務可以讓您在 Google 伺服器儲存玩家的遊戲進度,非常便利。遊戲可以擷取遊戲進度存檔資料,讓玩家用任何裝置重新開啟遊戲後能從上次的儲存點繼續進行遊戲。

這項服務可為玩家和開發人員帶來多項主要優勢:

  • 在多部裝置之間同步處理遊戲資料。舉例來說,玩家可以在 Android 手機上開始遊戲,然後在平板電腦上無縫接續遊戲,而不會損失任何進度。
  • 確保資料持續性。即使玩家遺失裝置、裝置損毀,或是換購更新型號之後,仍然可以接續遊戲進度。

如果想瞭解如何為您使用的平台實作遊戲進度存檔,請參閱「用戶端實作」。

遊戲進度存檔基礎知識

遊戲進度存檔由兩個部分組成:

  • 非結構化的二進位檔 blob - 這個資料可以代表任選內容,您的遊戲須負責剖析及寫入。
  • 結構化的中繼資料 - 和此二進位檔資料相關聯的其他屬性,可讓 Google Play 遊戲服務在預設遊戲進度存檔清單使用者介面 (UI) 中以視覺方式呈現遊戲進度存檔,並可在 Google Play 遊戲應用程式中呈現實用的資訊 (例如上次更新的時間戳記)。

只要遵守使用者配額,每一位玩家的遊戲都可以寫入任意數量的遊戲進度存檔,因此並未強制規定玩家只能擁有一組存檔。

封面圖片

除了保持進度的功能之外,遊戲進度存檔服務也能在視覺上提供使用者體驗。我們強烈建議您為存檔準備相對應的代表圖片,並為兩者建立關聯。如果您的遊戲使用 Play 遊戲 SDK 提供的預設遊戲進度存檔清單使用者介面 (UI),則此 UI 會顯示封面圖片。Google Play 遊戲應用程式也可能會顯示這些封面圖片。

說明

您可以提供簡短的文字,藉此說明特定遊戲進度存檔的內容。玩家可以直接看到這段說明,而說明內容應該要能概略說明這個遊戲進度存檔所代表的狀態,例如「在黑暗森林和哥布林戰鬥」。

配額

開發人員不需為雲端儲存的遊戲進度存檔資料付費。這些資料都會按照玩家的 Google 雲端硬碟配額計算,您不需擔心這個問題。遊戲開發人員只要注意 Google Drive API 配額即可。

讀寫隔離

所有遊戲進度存檔都會儲存在玩家的 Google 雲端硬碟的應用程式資料資料夾內。只有您的遊戲才能讀取並寫入這個資料夾,其他開發人員推出的遊戲無法檢視或修改內容,讓資料更安全、更不容易損毀。另外,系統會防止玩家直接竄改遊戲進度存檔,避免玩家修改特定的遊戲進度存檔。

支援離線使用

就算玩家裝置處於離線狀態,遊戲依然可以讀取並寫入遊戲進度存檔,不過在建立網路連線之前無法和 Google Play 遊戲服務保持同步。重新連線之後,Google Play 遊戲服務就能以非同步方式更新 Google 伺服器上的遊戲進度存檔資料。

衝突解決

當遊戲使用遊戲進度存檔服務時,可能會在嘗試儲存資料時發生衝突。如果有使用者透過不同裝置或電腦執行多個應用程式執行個體,就有可能發生這種衝突。您的應用程式必須有可以解決這種衝突的能力,以便提供最佳使用者體驗。

會發生資料衝突,通常是因為應用程式執行個體在嘗試要載入或儲存資料時無法取得遊戲進度存檔服務。一般而言,避免發生資料衝突最合適的方式是一律在應用程式啟動或恢復執行的時候載入服務上的最新資料,並按照合理的頻率把資料儲存到服務上。不過,有時依然無法避免資料衝突。應用程式應該要能盡力解決衝突問題,藉此保存使用者資料,並提供良好的使用體驗。

限制

Google Play 遊戲服務會強制規定二進位檔資料和封面圖片的大小,分別為 3 MB 和 800 KB。

遊戲進度存檔中繼資料

遊戲進度存檔的結構化中繼資料含有以下屬性:

資源 說明
ID Google Play 遊戲服務為此遊戲進度存檔產生的專用字串。您可以在遊戲用戶端用這組 ID 參照遊戲進度存檔。
名稱 開發人員為遊戲進度存檔取的簡短名稱,例如「Save slot 1」或「PlayerName_Save1」。玩家不會看到這個內容。
說明 開發人員提供的遊戲進度存檔說明。
上次修改時間 Google Play 遊戲服務針對上次遊戲進度存檔更新時間而產生的時間戳記,以毫秒為單位。
遊戲進行時間

開發人員在遊戲進度存檔上顯示的時間 (以毫秒為單位)。這個值應該代表玩家遊玩相應遊戲進度存檔的時間。

舉例來說,如果遊戲進行時間值為 3600000,Google Play 遊戲服務便會顯示「1 小時」。

封面圖片 這是由開發人員提供的非必要屬性,內含封面圖片的資訊。

用戶端實作

如要瞭解如何為您的平台實作遊戲進度存檔,請參閱以下資源: