已保存的游戏

已保存的游戏服务为您提供了一种方便的方法,可以将玩家的游戏进度保存到 Google 的服务器。您的游戏可以检索已保存的游戏数据,以允许返回的玩家从任何设备继续他们在上次保存点开始的游戏。

已保存的游戏服务使同步玩家的游戏数据跨多个设备成为可能。例如,如果您有一个在 Android 上运行的游戏,您可以使用已保存的游戏服务允许玩家在 Android 手机上开始游戏,然后在平板电脑上继续游戏而不会丢失任何进度。此服务还可以用于确保即使玩家的设备丢失、损坏或更换为更新的型号,玩家的游戏也能从上次停止的地方继续。

要了解如何为您的平台实施已保存的游戏,请参阅 客户端实现.

已保存游戏的基本知识

已保存的游戏包含两部分

  • 无结构二进制 blob - 此数据可以代表您选择的任何内容,并且您的游戏负责解析和写入它。
  • 结构化元数据 - 与二进制数据相关的其他 属性,允许 Google Play 游戏服务在默认已保存游戏列表用户界面 (UI) 中直观地呈现已保存的游戏,并在 Google Play 游戏应用 中呈现有用的信息(例如,上次更新时间戳)。

游戏可以为单个玩家写入任意数量的已保存的游戏,受 用户配额 限制,因此没有硬性要求限制玩家使用单个保存文件。

封面图片

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

描述

您可以提供特定已保存游戏的简短文本描述。此描述直接显示给玩家,应总结已保存的游戏所代表的状态;例如,“在黑暗森林中与哥布林战斗”。

配额

开发者无需为存储在云中的任何已保存的游戏数据付费。相反,此数据将计入玩家的 Google 云端硬盘配额 - 您无需为此担心。游戏开发者需要关心的唯一配额是他们的 Google 云端硬盘 API 配额。

读/写隔离

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

离线支持

即使玩家的设备处于脱机状态,您的游戏仍然可以读取和写入已保存的游戏,但无法与 Google Play 游戏服务同步,直到建立网络连接。重新连接后,Google Play 游戏服务会异步更新 Google 服务器上的已保存游戏数据。

冲突解决

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

通常,数据冲突发生在您的应用程序实例在尝试加载或保存数据时无法连接到已保存的游戏服务时。通常,避免数据冲突的最佳方法是在应用程序启动或恢复时始终从服务加载最新数据,并定期将数据保存到服务。但是,并非总能避免数据冲突。您的应用程序应尽一切努力处理冲突,以确保用户的数据得以保留,并且他们拥有良好的体验。

限制

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

已保存的游戏元数据

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

属性 描述
ID Google Play 游戏服务为此已保存的游戏生成的唯一字符串。使用此 ID 在您的游戏客户端中引用已保存的游戏。
名称 开发者提供的已保存游戏的简短名称,例如“保存槽 1”或“玩家名称_保存 1”。这不会显示给玩家。
描述 开发者提供的已保存游戏的描述。
上次修改时间 Google Play 游戏服务为上次更新已保存的游戏生成的以毫秒为单位的时间戳。
游戏时间 开发者提供的要在已保存的游戏上显示的时间(以毫秒为单位)。此值应表示玩家玩相应已保存游戏的时长。例如,游戏时间值为 3600000 将由 Google Play 游戏服务显示为“1 小时”。
封面图片 这是一个可选的、开发者提供的属性,包含有关 封面图片 的信息。

客户端实现

要了解如何为您的平台实施已保存的游戏,请参阅以下资源