“保存的游戏”服务为您提供了一种便捷的方式,可以将玩家的游戏进度保存到 Google 的服务器。您的游戏可以检索保存的游戏数据,以便回访玩家可以从任何设备在他们上次的保存点继续游戏。
“保存的游戏”服务使得跨多个设备同步玩家游戏数据成为可能。例如,如果您有一款在 Android 上运行的游戏,您可以使用“保存的游戏”服务允许玩家在 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 在您的游戏客户端中引用保存的游戏。 |
名称 | 开发者提供的保存游戏的简短名称,例如“保存槽 1”或“PlayerName_Save1”。此名称不会显示给玩家。 |
描述 | 开发者提供的保存游戏的描述。 |
上次修改时间 | 由 Google Play 游戏服务生成的时间戳(以毫秒为单位),表示上次更新保存游戏的时间。 |
游玩时间 | 开发者提供的显示在保存游戏上的时间(以毫秒为单位)。此值应代表玩家游玩相应保存游戏的时长。例如,游玩时间值为 3600000 将由 Google Play 游戏服务显示为“1 小时”。 |
封面图片 | 这是一个可选的开发者提供的属性,包含有关封面图片的信息。 |
客户端实现
要了解如何为您的平台实现保存的游戏,请参阅以下资源