游戏存档

借助游戏存档服务,您可以轻松将玩家的游戏进度保存到 Google 的服务器。游戏可以检索游戏存档数据,以便回访玩家在任意设备上从上一个存档点继续玩游戏。

游戏存档服务可在多个设备之间同步玩家的游戏数据。例如,如果您开发了一款在 Android 上运行的游戏,则可以使用游戏存档服务,让玩家在 Android 手机上启动游戏,然后在平板电脑上继续玩游戏,而不会丢失任何进度。此外,此服务可用于确保玩家从上次停下的地方继续游戏,即使设备丢失、销毁或通过以旧换新更换为新型号也是如此。

如需了解如何为您的平台实现游戏存档,请参阅客户端实现

游戏存档基础知识

游戏存档由以下两部分组成:

  • 非结构化二进制 blob - 这些数据可表示您选择的任何内容,游戏负责解析和写入这些数据。
  • 结构化元数据 - 与二进制数据相关联的其他属性,可允许 Google Play 游戏服务在默认游戏存档列表界面 (UI) 中直观呈现游戏存档,并在 Google Play 游戏应用中显示实用信息(例如上次更新时间戳)。

游戏可为单人写入任意数量的游戏存档,但受用户配额限制,因此不会强制限制玩家只能保存一个存档文件。

封面图片

除了永久性功能之外,游戏存档服务还提供视觉用户体验。我们强烈建议您将代表性图片与相应存档文件相关联。如果您在游戏中使用 Play 游戏 SDK 提供的默认游戏存档列表界面 (UI),该界面将显示这些封面图片。封面图片还会显示在 Google Play 游戏应用中。

说明

您可以为特定游戏存档内容提供简短文字说明。此说明直接面向玩家展示,应总结游戏存档代表的状态;例如,“与黑暗森林中的地精战斗”。

配额

开发者无需为存储在云端的任何游戏存档数据付费。这些数据会计入玩家的 Google 云端硬盘配额,您完全不必担心。游戏开发者只需要关注他们的 Google Drive API 配额。

读取/写入隔离

所有游戏存档都存储在玩家的 Google 云端硬盘“应用数据”文件夹中。此文件夹只能由您的游戏读取和写入,其他开发者的游戏无法查看和修改此文件夹,因此可以提供额外的保护,防止数据损坏。此外,玩家无法直接改动游戏存档,因此他们无法修改单个游戏存档。

离线支持

在玩家的设备离线时,您的游戏仍可读取和写入游戏存档,但在设备建立网络连接前无法与 Google Play 游戏服务同步。重新联网后,Google Play 游戏服务会异步更新 Google 服务器上的游戏存档数据。

冲突解决

使用游戏存档服务时,您的游戏可能会在尝试保存数据时遇到冲突。当用户在不同设备或计算机上运行应用的多个实例时,可能会发生一些冲突。您的应用必须能够解决这些冲突,同时提供最佳用户体验。

通常,如果应用实例在尝试加载或保存数据时无法访问游戏存档服务,将会发生数据冲突。一般而言,避免数据冲突的最佳方式是在应用启动或恢复时始终从游戏存档服务加载最新数据,并按照合理的频率将数据保存到该服务。不过,有时无法避免数据冲突。您的应用应尽可能处理冲突,以便保留用户的数据,并为他们提供良好的体验。

限制

目前,Google Play 游戏服务对二进制数据和封面图片强制执行的大小上限分别为 3 MB 和 800 KB。

游戏存档元数据

游戏存档的结构化元数据包含以下属性:

属性 说明
ID Google Play 游戏服务为相应游戏存档生成的唯一字符串。可以使用此 ID 引用游戏客户端中的游戏存档。
Name 开发者提供的游戏存档简称,例如“Save slot 1”或“PlayerName_Save1”。玩家不会看到此简称。
Description 开发者提供的游戏存档说明。
Last modified Google Play 游戏服务针对游戏存档上次更新时间生成的时间戳(以毫秒为单位)。
Played time 开发者提供的时间(以毫秒为单位),显示在游戏存档中。此值应表示玩家玩相应已存档游戏的时长。例如,Google Play 游戏服务会将已玩时间值 3600000 显示为“1 小时”。
Cover image 此属性是可选属性,由开发者提供,包含封面图片的相关信息。

客户端实现

如需了解如何为您的平台实现游戏存档,请参阅以下资源: