此页面介绍如何将 Play 游戏服务登录与您现有的身份或云保存解决方案集成。即使这些建议是可选的,它们也可以帮助您完成 Google Play 游戏在 PC 上的云保存要求。使用 连续性要求 和 预期行为 页面来验证您的实现是否满足这些要求。
恢复玩家状态
在您游戏的后端,游戏帐户可能由某个标识符表示,该标识符允许您获取和更新他们在您游戏中的进度。为简单起见,我们将此称为您的帐户 ID。当玩家登录 Play 游戏服务时,您可以使用该身份验证来获取一个新的标识符,即 Play 游戏服务玩家 ID,该标识符用于为 云保存要求 提供支持。
当玩家使用 Play 游戏服务登录时,您应继续执行以下操作
- 从客户端检索 OAuth 代码,并将其发送到您的服务器。
- 交换身份验证令牌并从 Play 游戏服务器获取经过验证的 Play 游戏服务 ID。这可确保 ID 是可信的,而不是某人通过使用受损设备冒充其他玩家。
- 尝试根据设备的条件和任何链接的标识符来解析游戏帐户。
需要在您的游戏中引入两种主要的新场景
- 在您的后端存储 Play 游戏服务 ID 并以某种方式将其分配给现有帐户 ID,例如以下情况
- 对于新玩家,进度应在某个时间点自动链接到 Play 游戏服务。(例如,在游戏启动时、教程之后或一定数量的关卡之后等)。
- 对于现有玩家,在玩家更新到集成了 Play 游戏服务 V2 的游戏版本后,当前进度应自动链接到 Play 游戏服务。
- Play 游戏服务 ID 可以与一个或多个帐户关联,并且可以取消 Play 游戏服务与这些帐户的关联,但它应至少与一个有效帐户关联。
- 根据 Play 游戏服务玩家 ID 自动恢复已注销/新设备上的游戏进度。
您如何存储和将 Play 游戏服务 ID 分配给现有帐户是灵活的,如下面的示例所示。需要牢记的主要要求是,玩家不应手动登录或与其他身份系统创建链接以创建其 Play 游戏服务 ID 与游戏进度之间的链接,并且游戏进度应在各个界面之间无缝恢复。
在设计您的解决方案时,首先查看您的现有系统以及它如何整合不同的身份提供商。某些系统每个帐户使用一个标识符,而其他系统每个帐户使用多个标识符。
如果您只能将每个帐户 ID 与单个标识符关联,则需要添加支持以将其与 Play 游戏服务关联。以下解决方案演示了如何执行此操作。
示例解决方案
示例解决方案包括**绑定**和**恢复**解决方案。
绑定是将 Play 游戏服务 ID 永久或半永久地链接到帐户状态的过程。在绑定情况下,即使玩家注销并使用您的游戏中另一个帐户登录,通过 Play 游戏服务恢复的基础帐户也不会发生更改。我们在此处结合 帐户绑定 进行了介绍。
使用恢复,您作为游戏开发者会存储 Play 游戏服务 ID 和玩家最后查看的帐户/帐户的松散映射,以便在他们在另一台设备上使用 Play 游戏服务登录时进行恢复。每次玩家使用相同的 Play 游戏服务 ID 登录到另一个游戏帐户时,此绑定都会发生更改。这是一个示例流程图,我们将在下面的 恢复最近的帐户 示例中更详细地介绍。
更多用户流程示例附加在下面的解决方案中。
帐户绑定
如果您的游戏没有很多多帐户玩家,或者您想鼓励玩家在您的游戏中拥有一个帐户,那么绑定可能是您游戏最合适的解决方案。在此示例中,您将使用 Play 游戏服务登录时看到的第一个帐户(无论是访客帐户还是与另一个身份平台绑定的帐户)与 Play 游戏服务玩家 ID 绑定。在此绑定之后,该绑定帐户将在新设备上自动恢复。由于我们正在进行强绑定,因此玩家还可以切换 Play 游戏服务配置文件以更改游戏中的帐户,并且您可以在此场景中提示玩家确认。
如果存在冲突的帐户,我们建议您要求玩家选择一个帐户。这些冲突的情况只会发生在您的游戏中有多个帐户的玩家身上,因此他们可能了解并希望使用特定帐户进行游戏。
帐户解析后,您的游戏应记住玩家的选择,除非登录标识符发生更改。如果 Play 游戏服务配置文件已更改,或者玩家登录到游戏中不同的标识符,则应重复上述步骤,因为玩家已发出强信号,表明他们希望更改帐户。
取消绑定
如果您想为玩家提供完全控制其绑定的能力,您可以为玩家提供取消其 Play 游戏服务玩家 ID 与游戏帐户绑定的能力。对于某些多帐户玩家来说,这可能很重要,如果他们不小心将 Play 游戏服务玩家 ID 与非主要帐户绑定。
其他帐户绑定示例
此主要示例显示,给定的 Play 游戏服务玩家 ID (1) 与看到的第一个游戏内帐户 (A) 绑定,并且当玩家注销其游戏进度以在另一个帐户上玩游戏时不会重新绑定。
您可以选择允许玩家重新绑定其帐户,但不是必需的。
切换设备上的帐户
在此,玩家已手动切换 Play 游戏服务帐户,因此已向游戏发出强信号,表明他们希望将其游戏内帐户更改为另一个帐户。对这种变化做出反应是玩家想要的;考虑到此信号可以带来更好的玩家体验。
与另一个标识符绑定的现有帐户
此示例表明,即使与非 Play 游戏服务标识符绑定的帐户也应绑定到 Play 游戏服务,然后在新设备上恢复。您游戏的大多数现有玩家的帐户都属于此类别。
恢复最近的帐户
在考虑解决方案时,通常会遇到多帐户体验。如果您的游戏鼓励高级用户创建多个帐户(例如抽卡游戏或选择您自己的冒险游戏),那么将 Play 游戏服务玩家 ID 绑定到单个帐户在跨设备移动时可能无法提供最佳的玩家体验。
在恢复解决方案中,您存储 Play 游戏服务玩家 ID 和游戏内帐户的松散映射,并且玩家在切换设备或注销时只会看到您存储的最后一个帐户。
在此示例中,玩家拥有游戏的三个帐户,然后切换到新设备
当您提示玩家恢复时,您还可以提供“取消”或“创建新”按钮,供玩家选择创建新帐户。
为简单起见,您的游戏可以选择仅恢复最后查看的帐户。对于多帐户切换用例来说,这可能更困难,但仍满足连续性要求。
其他恢复示例
以下部分包含使用恢复的其他示例。
非 Android 手机
在此,我们说明了恢复已存在的帐户(第三方帐户链接)或从另一个非 Play 游戏服务登录的设备创建的帐户。
更常见的流程可能是从非 Android 手机开始,然后切换到 Google Play 游戏在 PC 上。
由于非 Android 手机没有 Play 游戏服务,因此没有活动召回,玩家必须手动在电脑上的 Google Play 游戏中输入其凭据。
一个帐户的多个 Play 游戏服务配置文件
有时可能有多个 Play 游戏服务配置文件处于活动状态,这些配置文件之前已“召回”某个给定帐户。对于这种情况,有两个主要解决方案可以同样有效地解决问题。
无论如何保存 在“无论如何保存”模型中,我们忽略指向给定帐户的重复指针。
覆盖它 在“覆盖它”模型中,开发者需要记住 Play 游戏服务到帐户的映射,并在他们的表中清除旧映射。通过这样做,他们可以保持召回帐户和 Play 游戏服务帐户的清晰 1:1 映射。
同一设备召回 多帐户玩家也可以使用您的召回实现快速切换游戏帐户。