此页面介绍如何将 Play 游戏服务登录与您现有的身份或云保存解决方案集成。尽管这些建议是可选的,但它们可以帮助您完成 PC 版 Google Play 游戏的云保存要求。使用连续性要求和预期行为页面验证您的实现是否满足这些要求。
恢复玩家状态
在您的游戏后端,游戏帐户可能由某些标识符表示,这些标识符使您可以获取和更新游戏中他们的进度。为了简便起见,我们将其称为您的帐户 ID。当玩家登录 Play 游戏服务时,您可以使用该身份验证来获取新的标识符,即 Play 游戏服务玩家 ID,该 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 游戏服务玩家 ID 绑定到单个帐户在跨设备移动时可能无法提供最佳玩家体验。
在召回解决方案中,您存储 Play 游戏服务玩家 ID 和游戏内帐户的松散映射,玩家在切换设备或注销时只需查看您存储的最近帐户。
在此示例中,玩家拥有三个游戏帐户,然后切换到新设备。
当您提示玩家恢复时,您还可以提供“取消”或“创建新帐户”按钮,供玩家选择创建新帐户。
为简便起见,您的游戏可以选择仅召回最近看到的帐户。对于多帐户切换用例,这可能比较困难,但仍满足连续性要求。
其他召回示例
以下部分包含使用召回的其他示例。
非 Android 手机
在这里,我们演示了召回已存在的帐户(已链接的第三方帐户)或从另一个未登录 Play 游戏服务的设备创建的帐户。
更常见的流程可能是从非 Android 手机开始,然后转移到 PC 上的 Google Play 游戏。
由于非 Android 手机没有 Play 游戏服务,因此没有激活召回功能,玩家必须手动在 PC 上的 Google Play 游戏中输入其凭据。
一个帐户的多个 Play 游戏服务配置文件
有时可能有多个 Play 游戏服务配置文件处于活动状态,这些配置文件先前已“召回”给定帐户。对于这种情况,有两种主要解决方案同样有效。
无论如何保存 在“无论如何保存”模型中,我们忽略指向给定帐户的重复指针。
覆盖 在“覆盖”模型中,开发人员需要记住 Play 游戏服务到帐户的映射,并在他们的“覆盖”模型表中清除旧映射。通过这样做,他们可以保持召回帐户和 Play 游戏服务帐户的清晰 1:1 映射。
同一设备召回 多帐户玩家也可以使用您的召回实现快速切换游戏帐户。