Google Play 游戏服务的质量检查清单

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

本文档可帮助您关注质量、功能集和 UI 的关键方面,这些方面可能会对游戏的成功产生重大影响。每个关注领域都提供了一个包含最低要求、最佳实践和良好增强功能的检查清单。为了向您的玩家提供尽可能好的产品,请尽可能遵循检查清单中的建议。

1. 登录

以下检查清单任务适用于在游戏中实施玩家登录功能。详细了解登录的工作原理以及您应如何在 登录概念 中实施它。有关如何在移动游戏中实施登录的代码示例,请参阅 在 Android 上实施登录

ID 重要性 描述
1.1 必需 使用 Google Play 游戏服务让玩家登录。
1.1.1. 游戏启动时自动登录玩家;使用手动登录作为备份

游戏应实施 静默登录,以帮助玩家快速进行身份验证和授权,从而使用 Google Play 游戏服务提供的全部功能。如果静默登录失败,您的应用应提示玩家 交互式登录。通过使用交互式登录,玩家可以选择登录游戏,并且 Play 游戏确保其个人资料已正确配置以供在您的游戏中使用。结合静默登录和交互式登录可获得最高的登录率,同时最大程度地减少用户摩擦。

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

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

如果您已经在请求非 Play 游戏范围,请从您的 GoogleSignInOptions 构造中删除所有不需要的范围以及您不再使用的任何 API。如果您需要请求其他范围(例如,如果您想查看用户的电子邮件以用于营销目的),请在相关时间进行,而不是作为登录过程的一部分。

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

玩家成功登录您的游戏后,在玩家明确注销之前,在每次游戏启动时自动连接他们。

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

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

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

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

登录后,玩家必须始终可以选择注销。

考虑在应用程序的相关游戏屏幕(例如,玩家设置屏幕)中提供注销按钮。

1.6 最佳实践 记住如果玩家拒绝登录。

如果玩家在游戏最初启动登录流程时拒绝登录(例如,如果他们在登录 UI 中点击了“取消”),您仍然应该允许玩家继续游戏。

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

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

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 吐司 中时,图标会覆盖一个圆圈,其外部角会被隐藏。请确保在这种情况下您的图标仍然看起来不错。

3. 排行榜

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

ID 重要性 描述
3.1 最佳实践 在主菜单和关键过渡后使排行榜可见。

排行榜应该在游戏加载时很容易访问。在游戏的关键过渡之后(例如,在关卡结束时或玩家死亡时),玩家应该立即看到相关排行榜的链接。

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

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

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

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

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

在游戏的关键过渡之后提交分数,例如在关卡结束时或玩家的游戏角色死亡时。对于没有关键过渡的游戏(例如“无尽跑酷”类型游戏),请根据情况判断提交分数的频率。分数不应连续提交或每秒提交。

3.5 锦上添花 利用分数标签。

分数标签是可以与分数提交一起发送的额外数据位。例如,您可以将分数标签实现为一个标志,以确认玩家提交的分数有效。

自定义排行榜也可以读取此标签数据。例如,如果分数标签包含一个指向包含该玩家游戏玩法的 YouTube 视频的 ID,那么您的游戏可以在排行榜中创建指向该视频的链接。

3.6 锦上添花 创造性地设计您自己的排行榜 UI

如果您有资源,可以在社交排行榜数据的基础上构建您自己的自定义排行榜视图。社交排行榜通常比公开排行榜创造更具吸引力的体验。首先检查社交排行榜中是否有任何条目。如果没有,请使用公开排行榜。

3.7 锦上添花 向玩家展示他们在竞争中的位置。

排行榜 API 支持显示分数窗口(例如,玩家在 +/-10 个位置内的排名)。如果您正在创建自定义视图,这可能是激励参与的一种有效方法。这可以在游戏中的关键过渡之后立即显示(例如,在关卡结束时或玩家的游戏角色死亡时)。避免在玩家与其排名信息之间放置不必要的点击。

4. 好友

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

ID 重要性 描述
4.1 必需 当玩家显示在列表中时,在具有 Play 游戏资料的用户旁边显示 Play 游戏图标。

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

4.1.1. Play 游戏图标必须是可点击的。
如果用户按下图标,游戏应调用 getCompareProfileIntent()getCompareProfileIntentWithAlternativeNameHints() 以显示用户可以在其中将自己与其他玩家的资料进行比较的 UI。
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 游戏应用或默认的保存游戏选择 UI 中进行选择时,加载正确的保存游戏。