迁移概览

Google Play 游戏服务 games v1 SDK 依赖于 Google 登录(Android 版),后者已 废弃,并将于 2025 年从 Google Play 服务 Auth SDK (com.google.android.gms:play-services-auth) 中移除。新游戏应用可以在 2025 年之前使用 games v1。移除 Google 登录会给现有游戏应用带来依赖项问题。将现有游戏应用从 games v1 SDK 迁移到 games v2 SDK 可以解决因移除 Google 登录而带来的依赖项问题。

Google Play 游戏服务 v1 到 v2 的迁移是一项重大更新,可简化开发并支持跨平台游戏。Google Play 游戏服务 v2 将平台和游戏内身份分离,充当平台级身份系统,可在启动时自动对玩家进行身份验证。平台身份现在与主要游戏内账号系统分开,您必须使用“使用 Google 登录”或专有后端等工具单独管理该系统。Play 游戏服务 v2 SDK 集成使用玩家 ID 来实现成就和排行榜等平台功能,而不会更改现有的新手入门或登录流程。

本文档可帮助您了解游戏应用与各种 SDK 之间的互动。 鉴于官方废弃时间表,您必须遵循本迁移指南的架构原则、路径和玩家沟通策略,以确保玩家的连续性。

SDK 互动

这些图表说明了 Android 上的游戏应用、Google 移动服务 (GMS) Core、Play 游戏服务和第三方 (3P) 游戏服务器之间的互动。它重点介绍了应用如何使用 Google 的服务进行身份验证和游戏功能,同时还与单独的第三方系统互动。

games v2(当前)

Android 上的游戏应用、GMS Core、Play 游戏服务和第三方 (3P) 游戏服务器之间的互动。
Android 上的游戏应用、GMS Core、Play 游戏服务和第三方 (3P) 游戏服务器之间的互动。(点击可放大)。

games v1(旧版)

Android 上的游戏应用、GMS Core、Play 游戏服务和第三方 (3P) 游戏服务器之间的互动。
Android 上的游戏应用、GMS Core、Play 游戏服务和第三方 (3P) 游戏服务器之间的互动。(点击可放大)。

以下是组件和 SDK 的简要概览:

  • 游戏应用。
    • 这表示在 Android 设备上运行的用户游戏应用 。
    • 它包含两个主要组件:
      • games v1 或 games v2 SDK。 负责与 Play 游戏服务互动的客户端 SDK。
      • Auth SDK。 Google Play 服务 Auth SDK 负责处理 games v1 中的用户身份验证和授权流程。
    • 这两个 SDK 都使用 AIDL(Android 接口定义语言)进行通信,这表示不同进程或服务之间的通信模式。
  • GMS Core,也称为 Google Play 服务。
    • 这是 Android 上的 Google 专有层。
    • 游戏应用使用两个 GMS Core 模块:
      • 游戏模块。 提供游戏专用功能,例如排行榜、成就和游戏状态管理。
      • Auth 模块。 处理用户身份验证和授权操作。
    • 游戏应用中的游戏和 Auth SDK 使用 相应的模块 AIDL 接口通信,这表示进程间通信 (IPC)。

  • Play 游戏服务网关。
    • 一个逻辑网关,用于调解 GMS Core 和 Play 游戏服务服务器之间的通信。
    • 处理服务器通信的 API 请求、数据转换和身份验证。
  • Play 游戏服务服务器。
    • 表示负责存储游戏数据、管理用户账号和提供多人游戏功能的 Play 游戏服务后端服务。
  • 第三方游戏网关。
    • 如果您的游戏应用符合第三方 (3P) 应用的条件,则客户端库会通过第三方游戏服务器与 Play 游戏服务服务器通信。
    • 这意味着应用还可以使用其他服务提供商进行身份验证。
  • 第三方游戏服务器。
    • 表示游戏应用可以与之互动的可选外部服务器,可能用于自定义功能或数据管理。
    • 与应用的通信通过第三方游戏网关进行。

为何要将您的游戏迁移到 Play 游戏服务 v2

从 Play 游戏服务 v1 到 v2 的过渡是一项重大的架构现代化,可简化开发并支持跨平台游戏。

与充当主要游戏内身份系统的 v1 不同,Play 游戏服务 v2 将平台和游戏内身份分离。它充当平台级身份系统,可在启动时自动对玩家进行身份验证,以管理成就和排行榜等功能。

您现在必须使用“使用 Google 登录”或专有后端等工具单独管理游戏的主要游戏内账号系统。 借助 Play 游戏服务 v2 SDK,游戏可以使用 Play 游戏服务玩家 ID 访问平台功能,而无需更改现有的新手入门或登录流程。本文档将引导您完成迁移,涵盖架构原则、路径和玩家沟通策略。鉴于官方废弃时间表,遵循这些原则对于确保玩家的连续性至关重要。

比较平台身份验证和游戏内身份验证

在 Play 游戏服务 v2 中,“登录”的概念被分离为两个不同的层:

  • 平台身份。 SDK 处理平台身份验证。
  • 游戏内身份。

平台身份验证

Play 游戏服务严格来说只是一个平台互动层。它管理玩家与 Google Play 游戏生态系统(成就、排行榜和活动)的关系,而不是与登录特定游戏账号或产品目录的关系。

  • 静默且自动: 游戏启动时,身份验证会在后台自动进行。Play 游戏服务本身不需要手动“登录”按钮。
  • 玩家 ID: 平台身份验证成功后,Play 游戏服务会提供稳定的玩家 ID 。对于同一游戏,此 ID 在不同设备上是一致的,但主要用于跟踪平台统计信息(例如成就进度)。
  • 分离不得 将 Play 游戏服务 v2 用作游戏的主要身份系统,以管理玩家的游戏内账号及其游戏进度或产品目录。Play 游戏服务 v2 严格来说只是一个辅助的持久性平台标识符。

游戏内身份验证

开发者负责管理“游戏内账号”(IGA)。这是将玩家在游戏中的进度、产品目录和游戏代币绑定的身份系统。

  • 主要身份: 您可以使用自己的后端、“使用 Google 账号登录”(SiWG) 或其他提供方作为主要登录方法。
  • 独立性: 玩家可以登录 Play 游戏服务(平台身份)以赚取成就,同时登录任何特定的游戏内账号。例如,访客账号或特定的 SiWG 账号。
  • 管理多个游戏内账号: Play 游戏服务仅负责平台身份验证,而您的游戏负责管理玩家登录其游戏内账号 (IGA) 的主要身份验证。这意味着,您的游戏关于玩家如何在游戏内账号之间切换的现有流程不会发生任何变化。玩家在执行此操作时,仍会使用 Play 游戏服务通过 Play 游戏平台进行身份验证,而您将继续根据持久性玩家 ID 发送与其成就和其他 Play 游戏服务功能相关的数据。

迁移要求:将游戏内账号与 Google Open ID 绑定,而不是与 Play 游戏服务玩家 ID 绑定

在 Play 游戏服务 v1 中,开发者使用 Play 游戏服务作为主要身份提供商。“Google Play”按钮会将玩家的游戏内账号 (IGA) 直接链接到其 `Player ID`。“Google Play”按钮会将玩家的游戏内账号 (IGA) 直接关联到其 Player ID

Play 游戏服务 v2 通过在启动时提供自动静默平台身份验证 来改变这一点。生成的 Player ID 现在专用于排行榜和成就等平台功能,与主要账号登录分开。

游戏现在必须通过提供“使用 Google 账号登录”(SiWG) 或其他社交账号等方法的专用登录屏幕,单独管理主要身份 。至关重要的是,不得将 Play 游戏服务 v2 用作主要身份系统

这种架构转变要求开发者相应地更改其账号数据的结构。游戏内账号 (IGA) 必须与主要绑定到 Player ID 的状态分离。

相反,IGA 现在必须绑定到独立于 Play 游戏服务的稳定主要标识符。建议的标识符是“使用 Google 账号登录”(SiWG) 流程提供的 Open ID。此 Open ID 充当玩家在您系统中的主账户的唯一持久性密钥。

不过,IGA 仍然可以作为辅助绑定链接到 Player ID此辅助链接具有两个关键功能:

  1. 它允许游戏继续跟踪和更新与该特定玩家关联的 Play 游戏功能(成就等)的进度。
  2. 它启用“无缝恢复”功能,允许游戏仅在新设备上或重新安装后自动将玩家登录到其最近使用的 IGA。

了解这种分离的身份模型是为游戏找到正确的技术迁移路径的关键。

功能比较

下表比较了 games v1 和 games v2 SDK 的功能:


功能

games v1 SDK

games v2 SDK

身份验证

需要与 play-services-auth 集成。

简化和精简;不需要 play-services-auth

授权

成功、失败和重试的其他代码。

由 SDK 管理

服务器访问令牌

可以使用 GoogleSigninClient 请求其他 OAuth 2.0 范围GoogleSigninClient

身份验证期间用于错误处理的其他代码。

在请求对 Play 游戏服务 Web API 的服务器端访问时,可以使用 GamesSignInClient 请求三个基本的 OAuth 2.0 身份范围。

如需了解详情,请参阅 Play 游戏服务的服务器端访问 检索服务器身份验证代码


登录流程

使用 GoogleSigninClient

用于处理自动身份验证和错误处理的样板代码的其他代码。

使用 GamesSignInClient

SDK 可处理样板代码、自动身份验证和错误处理。“登录”分为两个不同的层:
  • 平台身份验证:由 Play 游戏服务 v2 SDK 处理。
  • 游戏内身份验证:由游戏处理。

欢迎弹出式窗口

需要其他代码。
开发者可以控制其位置和时间。

不需要其他代码。 使用 games v2 SDK 配置的所有游戏都具有一致的用户界面。

依赖项

需要 play-services-auth

游戏模块负责授权和身份验证。您无需添加任何其他依赖项。
退出

使用 GoogleSignInClient.signOut

由于 Play 游戏服务 v2 是持久性平台身份,因此不需要退出 API。

多个 Play 游戏服务账号和游戏专用 设置

可以在游戏中管理账号。

用户可以在移动设备 设置中更改 Play 游戏服务玩家资料。如需了解详情,请参阅 如何在移动设备上切换 Play Games 玩家资料