Google Play 游戏服务质量核对清单

随着 Google 登录 API 的废弃,我们将在 2026 年移除游戏 v1 SDK。2025 年 2 月之后,您将无法在 Google Play 上发布新集成了游戏 v1 SDK 的游戏。我们建议您改用游戏 v2 SDK。
虽然现有集成了游戏 v1 的游戏在未来几年内仍可正常运行,但我们鼓励您从 2025 年 6 月开始迁移到 v2
本指南适用于使用 Play Games Services v1 SDK。有关最新 SDK 版本的信息,请参阅v2 文档

您的游戏质量会影响其长期成功,包括安装量、玩家评分和评价、参与度以及玩家留存。在发布游戏之前,务必确保您的游戏通过引人入胜的功能和直观、设计良好的界面满足游戏玩家的基本期望。

本文档可帮助您关注质量、功能集和界面中可能对您的游戏成功产生重大影响的关键方面。每个重点领域都附有一份核对清单,列出了最低要求、最佳实践以及可有可无的增强功能。为了向玩家提供最好的产品,请尽可能最大程度地遵循核对清单建议。

1. 登录

以下核对清单任务适用于在游戏中实现玩家登录功能。详细了解登录的工作原理以及如何在登录概念中实现登录。如需了解如何在移动游戏中实现登录的代码示例,请参阅在 Android 上实现登录

ID 重要性 说明
1.1 必选 让玩家通过 Google Play 游戏服务登录。
1.1.1. 游戏启动时自动让玩家登录;使用手动登录作为备用方案

游戏应实现静默登录,以帮助玩家快速通过身份验证和授权,从而使用 Google Play 游戏服务提供的全部功能。如果静默登录失败,您的应用应提示玩家交互式登录。通过使用交互式登录,玩家可以选择登录游戏,而 Play Games 会确保他们的个人资料已正确配置,可在您的游戏中使用。静默登录和交互式登录相结合可最大限度地提高登录率,同时将用户阻力降至最低。

如果玩家选择不登录,请记住这一点,不要再次提示玩家。相反,请提供登录按钮。登录按钮应易于玩家找到;例如,应可从主屏幕访问或位于“设置”屏幕中。此按钮不应隐藏在游戏菜单深层。每次玩家启动游戏时,继续尝试自动登录玩家 - 他们可能会更改偏好设置并自动登录。

1.2 必选 创建登录客户端时,不要请求非 Play Games 范围。这将允许玩家自动登录您的游戏,因为请求非 Play Games 范围将强制用户使用交互式登录。

如果您已经请求了非 Play Games 范围,请从您的 GoogleSignInOptions 构造中移除任何不需要的范围以及您不再使用的任何 API。如果您需要请求其他范围(例如,如果您想查看用户的电子邮件用于营销目的),请在适当的时候进行,而不是作为登录流程的一部分。

// This is the proper way to do it
GoogleSignInOptions signInOption = GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN;
1.3 必选 允许玩家保持登录状态。

在玩家成功登录您的游戏后,每当游戏启动时自动连接他们,直到玩家明确退出。

1.4 必选 在登录过程中适当显示“正在连接”弹出式窗口。

在 Android 设备上,Google Play Games“正在连接”弹出式窗口必须在调用登录流程时显示。这需要您调用 GamesClient 类的 setViewForPopups() 方法。验证此弹出式窗口在游戏开始时自动登录玩家时是否显示。这能让玩家知道他们正在正确地登录您的游戏。

以下示例显示了在 Android 游戏登录期间,“正在连接”弹出式窗口可能出现的样子,后面紧接着 Google Play 游戏服务徽标的短暂动画。

Screeshot shows the 'Connecting to' pop-up.
1.5 必选 为玩家提供退出选项。

登录后,玩家必须始终拥有退出的选项。

考虑在您应用中的相关游戏屏幕(例如,在玩家“设置”屏幕中)提供退出按钮。

1.6 最佳实践 记住玩家是否拒绝登录。

如果玩家在您的游戏最初启动登录流程时拒绝登录(例如,如果在登录界面中点击了取消),您仍应允许玩家继续游戏。

当玩家再次启动您的游戏时,请勿自动调用交互式登录流程。这些玩家以后可以使用应位于您的“设置”系统中的“登录”按钮选择登录。这可以避免玩家每次启动游戏时都必须反复拒绝登录。

一个例外是玩家正在尝试访问依赖于登录状态的游戏功能(例如,向排行榜提交分数)。在这种情况下,请在继续游戏之前提示他们登录。

1.7 最佳实践 最大限度地提高登录玩家的数量。

更多玩家登录 Google Play 游戏服务有利于您的玩家,因为它增加了协作和竞争性游戏的机会。为了最大限度地提高登录到 Google Play 游戏服务的玩家数量,强烈建议您自动提示玩家登录,如上所述。

否则,从以下任一点(最推荐的顺序)尽快引导玩家进入登录流程

  • 您的游戏启动后立即。
  • 一段介绍性体验(如过场动画或教程)之后立即。
  • 玩家在您游戏中的任何位置点击 Google 登录按钮时。
1.8 建议 遵循 Google 品牌指南。

为了向玩家提供引人入胜且一致的端到端体验,请实施Google Play 游戏服务品牌指南

1.9 建议 提醒玩家他们已登录。

当您的游戏代表已登录玩家执行某些操作时,向他们提供适当的提醒或提示。例如,当已登录玩家完成一个级别时,您可以提供如下消息,表明玩家的分数和成就正在自动上传:“您已通过 Google 登录。您的成就和分数将自动保存。”

1.10 必选 使用 Play 游戏服务 ID 备份玩家进度。

为了确保玩家在更换或重置设备或在多设备上玩游戏时不会丢失进度,请确保他们的进度备份到云端保存方案中,并将 Play 游戏服务 ID 用作键,如果使用您自己的后端游戏服务器,请安全地使用。当玩家使用其 Play 游戏服务 ID 登录时,检查该帐户是否存在进度,如果存在,则允许玩家从上次离开的地方继续。您可以使用自己的云端保存方案或 Play 游戏服务已保存游戏。

如果用户未登录,请尝试在本地维护玩家进度,然后在玩家最终登录时同步该进度。这有助于防止玩家延迟登录游戏时丢失任何进度。

2. 成就

以下核对清单任务适用于在游戏中实现成就功能。

ID 重要性 说明
2.1 必选 确保所有成就都可以获得。

玩家必须能够解锁您创建的所有成就。

2.2 最佳实践 使成就具有独特性。

所有图片、文本和描述在成就之间应是唯一的。

2.3 最佳实践 按比例分配成就分数。

成就点数应与获得该成就所需的时间或技能成比例。

2.4 最佳实践 设计不同难度级别的成就。

包含一些玩家可以通过休闲游戏轻松获得的成就,一些需要更多技能或玩家投入才能获得的中等难度成就,以及一两个针对最专注玩家的非常困难的成就。

例如,以下截图显示了一个难以获得的成就,这有助于激励和留住该游戏的粉丝。

hard to earn achievement that requires earning 5K gems
2.5 建议 不要将成就集中在游戏初期。

避免在游戏开始的前 5 分钟内授予多项成就,因为新玩家尚未投入足够深,不会太在意。

不要将成就定义得过早地在游戏初期就被无意中授予。例如,注意那些可能在游戏开始时轻易获得的成就,例如“无伤完成一个级别”

2.6 建议 围绕引人入胜的游戏内活动定义成就。

选择指标来构建成就,使您的游戏更具吸引力和可重玩性(例如,“杀死的僵尸数量”是比“角色行走的英里数”更有趣的指标)。

2.7 建议 使用彩色成就图标。

Google Play 游戏服务使用成就图标的灰度版本来显示它们是否已获得或未获得。如果您仅限于使用全黑(或全白)成就图标,请将它们显示在彩色背景上。

2.8 建议 尽量少用隐藏成就。

隐藏成就只能用于避免游戏内剧透;它们不应该是常态。

2.9 建议 避免过于依赖运气获得的成就。

“找到 100 个宝箱”是一个比“找到一个在宝箱中出现几率为 1% 的物品”更好的成就。

2.10 建议 像“成就猎人”一样思考。

有些玩家会尝试获得您创建的每个成就。尝试提供能够满足这类玩家的成就。避免创建过于依赖玩家无法控制的元素或在玩家做出游戏中的某个决定后就无法获得的成就。

2.11 建议 确保您的成就图标显示正确。

当成就图标在 Android toast 中显示时,图标会被一个圆形覆盖,其外角被隐藏。确保您的图标在这种情况下看起来仍然不错。

3. 排行榜

以下核对清单任务适用于在游戏中实现排行榜功能。

ID 重要性 说明
3.1 最佳实践 在主菜单和关键过渡后显示排行榜。

排行榜在游戏加载时应易于访问。在游戏的关键过渡后(例如,一个级别结束时,或玩家死亡时),玩家应立即看到指向相关排行榜的链接。

3.2 最佳实践 定义可提交分数的上限。

如果可能,在定义排行榜时添加限制,以便丢弃明显的虚假分数。

3.3 最佳实践 使用自定义图标。

为您定义的每个排行榜创建一个自定义图标;不要只使用您的游戏图标,因为它在 Google Play 游戏应用中显示效果不佳。

3.4 最佳实践 保持合适的分数提交频率。

在游戏的关键过渡后提交分数,例如在级别结束时或玩家的游戏角色死亡时。对于没有关键过渡的游戏(例如,“无尽奔跑者”类型的游戏),请合理判断分数提交频率。分数不应连续或每秒提交一次。

3.5 建议 利用 scoretags。

Scoretags 是可以随分数提交发送的额外数据位。例如,您可以将 scoretag 实现为标记,以确认玩家提交的分数是否有效。

自定义排行榜也可以读取此标记数据。例如,如果 scoretag 包含一个包含该玩家游戏过程的 YouTube 视频 ID,您的游戏就可以在排行榜中创建链接以查看该视频。

3.6 建议 创造性地设计您自己的排行榜 UI

如果您有资源,可以在社交排行榜数据之上构建自己的自定义排行榜视图。社交排行榜通常比公共排行榜更能提供引人入胜的体验。首先检查社交排行榜中是否有任何条目。如果没有,则改用公共排行榜。

3.7 建议 向玩家展示他们与竞争对手的排名情况。

排行榜 API 支持显示分数窗口(例如,玩家在 +/-10 名范围内的排名)。如果您正在创建自定义视图,这可以是激发玩家参与度的强大方式。这可以在游戏中的关键过渡之后立即显示(例如,在一个级别结束时或玩家的游戏角色死亡时)。避免在玩家和他们的排名信息之间增加不必要的点击。

4. 好友

以下核对清单任务适用于在游戏中实现好友 API

ID 重要性 说明
4.1 必选 当玩家显示在列表中时,在拥有 Play Games 个人资料的用户旁边显示 Play Games 图标。

此列表可以是现有好友列表、最近玩过的玩家列表或其他好友列表。

4.1.1. Play Games 图标必须可点击。
如果用户按下图标,游戏应调用 getCompareProfileIntent()getCompareProfileIntentWithAlternativeNameHints() 以显示用户可以在其中将自己与另一玩家的个人资料进行比较的界面。
4.1.2. 为游戏内可自定义的玩家名称提供玩家个人资料和好友邀请支持。
如果玩家在游戏中设置了不同的名称(且未使用其 Play Games 个人资料名称),请使用 getCompareProfileIntentWithAlternativeNameHints() 为当前玩家和他们正在查看的玩家提供该备用游戏内名称,作为个人资料视图和从中发送的任何好友邀请的上下文。仅传递持久性的全局玩家名称作为值,而不传递任意用户内容。此要求意味着从游戏内发送的好友邀请将为两位玩家提供上下文
  • 收件人将看到邀请发送者的游戏内名称以及游戏名称。
  • 查看好友关系时,发送者仍将看到收件人的游戏内名称,以及他们发起邀请的游戏。
4.2 最佳实践 使用不同的图标来显示哪些 Play Games 用户已经是好友,哪些尚未成为 Play Games 好友但已通过 Play Games 登录。对 Play Games 用户使用两个图标,一个表示“好友”,一个表示“非好友”(或好友关系未知)。
好友图标
非好友图标
4.3 最佳实践 每次登录并显示好友列表时都调用 loadFriends(),以确保好友列表是最新的。确保玩家看到更新的列表。
4.4 最佳实践 如果您的游戏已经包含游戏内好友,请使用好友 API 通过添加 Play Games 好友来增加好友列表。如果玩家在游戏内好友列表中,并且也是 Play Games 好友,则显示“好友”图标。
4.5 最佳实践 如果玩家拒绝访问其好友列表的请求,请勿再次显示询问访问权限的对话框,除非用户已采取行动表明他们希望授予访问权限(例如,按下“导入 Play Games 好友”按钮)。
4.6 最佳实践 如果玩家拒绝访问好友列表,请为他们提供将来授予好友列表访问权限的方式(例如,在按下“导入 Play Games 好友”按钮后)。
4.7 最佳实践 如果您将玩家 ID 或好友列表与后端服务器一起使用,则必须安全地访问 ID 或列表。此外,对于一些较旧的游戏和玩家,Android SDK 为玩家返回的玩家 ID 可能与在同一游戏中查看该玩家时其他玩家看到的 ID 不同;这在使用好友列表时尤其相关。但是,REST API 中返回的 player_id 始终一致,并且始终是其他玩家可见的 ID。

5. 配额和速率限制

以下核对清单任务适用于管理游戏中的配额和速率限制。要了解如何管理游戏的配额以及如何检测是否超出速率限制,请参阅管理配额和速率限制

ID 重要性 说明
5.1 最佳实践 使用客户端库。

移动客户端库采用多种策略来减少您对服务的调用次数。例如,成就和排行榜的数据会缓存起来,这样玩家就可以根据需要多次查看他们的成就,而无需服务进行多次调用。

如果您的分数不如最近提交的分数好,Android 客户端库将不会向服务器发送玩家的分数。当检测到您受到速率限制时,Android 库还会自动合并频繁的成就递增调用。

5.2 建议 合并对增量成就的频繁调用。

如果您正在制作一款格斗游戏,并且有一个“投掷 5000 次拳击”的成就,请不要在每次有人投掷拳击时都发送一个成就递增调用。等到本回合结束,然后发送一个 increment(xxx) 调用(其中 xxx 是本回合投掷的总拳击次数),或者等待投掷 50 次拳击后再发送一个 increment(50) 调用。

5.3 建议 注意您的使用情况。

注意您对 Google Play 游戏服务的调用次数。即使您避免达到速率限制,频繁的调用也可能导致高网络流量,并导致设备电池更快耗尽。为避免这种情况,您可以使用这些技巧

  • 执行保存游戏时,将频率保持在每隔几分钟一次,而不是每次点击按钮都执行。
  • 等待玩家的游戏结束再提交最高分。
  • 通过访问 Google Cloud Platform 中的项目控制台来查看您的应用每日配额。

6. 已保存游戏

以下核对清单任务适用于在游戏中实现已保存游戏功能。

ID 重要性 说明
6.1 必选 添加元数据以提供已保存游戏的附加上下文。

提交已保存游戏时,您至少必须包含以下元数据

  • 封面图片 - 捕捉游戏进度并提醒玩家离开游戏时的位置的截图。
  • 说明 - 提供封面图片附加上下文的简短说明。
  • 时间戳 - 指示玩家玩此已保存游戏的时长。
6.2 必选 允许玩家加载已保存游戏。

当玩家从Play Games 应用或默认的“已保存游戏”选择界面中进行选择时,加载正确的已保存游戏。