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

游戏质量会影响您的游戏能否在安装量、玩家评分和评价、互动度和玩家留存率等方面取得长期成功。在发布游戏之前,请务必确保您的游戏具有吸引玩家的功能和精心设计的直观界面,以此来满足游戏玩家的基本预期。

本文档可帮助您重点关注质量、功能集和界面这几个主要方面,它们会在很大程度上影响您的游戏能否取得成功。对于每个关注领域,我们都提供了基本要求、最佳实践和建议优化措施的核对清单。为了给玩家提供最好的产品,建议您尽可能采用核对清单中的建议做法。

1. 登录

以下核对清单任务适用于在您的游戏中实现玩家登录功能。如需详细了解登录功能的运作方式以及如何实现该功能,请参阅登录概念。有关如何在移动游戏上实现登录的代码示例,请参阅在 Android 设备上实现登录一文。

ID 重要性 说明
1.1 强制要求 让玩家通过 Google Play 游戏服务登录。
1.1.1. 在游戏启动时让玩家自动登录;将手动登录作为备用方式

游戏应实现静默登录,以帮助玩家快速通过身份验证并有权使用 Google Play 游戏服务提供的全套功能。如果静默登录失败,您的应用应提示玩家以交互方式登录。 通过使用 Interactive Sign-In,玩家可以选择登录游戏,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 游戏服务徽标的简短动画。

屏幕截图上显示“正在连接”弹出式窗口。
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 最佳实践 为成就设计不同的难易程度

建议您设置一些简单的成就(即玩家通过休闲玩法就能达成的成就),多项中等难度的成就(需要玩家使用更多技能或投入更多精力才能达成的成就),以及一两项难度相当高的成就(供投入大量精力的玩家挑战)。

例如,下面的屏幕截图显示了一项很难达成的成就,该成就有助于激励和留住该游戏的粉丝。

很难达成的成就 - 赚取 5K 宝石
2.5 建议 请勿在前期设置过多成就

尽量不要在游戏过程的前 5 分钟内设置多项成就,因为初次接触您游戏的玩家一般不会投入太多精力。

不要定义您的成就,以免无意地在游戏过程中过早地授予这些成就。例如,要留意在游戏开始时可能很容易获得的成就,例如“在不遭受攻击的情况下完成一关”。

2.6 建议 围绕有吸引力的游戏内活动定义成就

在构建成就时,应选择更能吸引玩家反复玩游戏的指标,例如“杀死的僵尸数量”这个指标要比“角色行走的英里数”更有意思。

2.7 建议 使用彩色成就图标

Google Play 游戏服务使用灰度版本的成就图标来显示是否获得了这些成就。如果您只能使用全黑(或全白)成就图标,请为这些图标加上彩色背景。

2.8 建议 尽可能减少使用隐藏成就

隐藏成就只能用于保留游戏中的悬念,而不应普遍使用。

2.9 建议 避免使用过于依赖运气的成就

相对于“寻找一件有 1% 的几率出现在宝箱中的物品”,“找到 100 个宝箱”这项成就更有意义。

2.10 建议 像“Achievement Hunter”一样来构思成就

有些玩家会尝试获得您创建的每项成就。尽量提供迎合这类玩家需求的成就。请确保这些成就不会过多依赖玩家无法掌控的因素,也不要让玩家在游戏中作出某种决定后便无法获得某些成就。

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

在 Android 消息框中显示成就图标时,该图标会与圆形叠加在一起,并且其外角会被盖住。请确保您的图标在此类情况下仍能正常显示。

3. 排行榜

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

ID 重要性 说明
3.1 最佳实践 让排行榜显示在主菜单中以及关键的过渡之后

在加载游戏时应该可以随时访问排行榜。在游戏中的关键过渡(例如,在关卡结束时或玩家角色牺牲时)之后,玩家应立即看到指向相关排行榜的链接。

3.2 最佳实践 设定可提交的得分上限

如有可能,请在定义排行榜时添加限制,以便排除明显虚假的得分。

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

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

3.4 最佳实践 确保按适当的频率提交得分

在游戏中的关键过渡(例如,在关卡结束时或玩家的游戏角色牺牲时)之后提交得分。对于没有关键过渡的游戏(例如,“跑酷”类游戏),请运用合理的判断来决定提交得分的频率。不应连续提交或每秒提交一次得分。

3.5 建议 充分利用得分标记

得分标记是可以随提交的得分一起发送的额外数据。例如,您可以将得分标记作为普通标记来实现,以确认玩家提交的得分是否有效。

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

3.6 建议 以富有创意的方式设计自己的排行榜界面

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

3.7 建议 向玩家展示他们如何与竞争对手一较高下

排行榜 API 支持显示得分窗口(例如,玩家在 +/-10 个位置内的排名)。如果您要创建自定义视图,这就可以成为激励互动的一种有效方式。它可以在游戏中的关键过渡(例如,在关卡结束时或玩家的游戏角色牺牲时)之后立即显示。避免让玩家无谓地点击他们的排名信息。

4. 好友

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

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

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

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

5. 配额和调用频率限制

以下核对清单任务适用于管理您的游戏的配额和调用频率限制。要了解如何管理您游戏的配额并检测何时超出其调用频率限制,请参阅管理配额和调用频率限制一文。

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

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

如果您的得分不如您最近提交的得分高,Android 客户端库便不会将玩家的得分发送到服务器。此外,Android 库还会在检测到您受到调用频率限制时,自动合并对成就增量的频繁调用。

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

如果您要制作一款格斗游戏并且设定了一项“出拳 5,000 次”的成就,请不要在玩家每次出拳时都发送成就增量调用。请等到当前回合结束后,发送一个 increment(xxx) 调用(其中 xxx 是该回合的总出拳次数),或者等待出拳 50 次后再发送一个 increment(50) 调用。

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

请注意您对 Google Play 游戏服务的调用次数。即使您能避免超出调用频率上限,频繁的调用也可能会导致消耗过多网络流量,并且会导致设备电池的耗电速度加快。为避免这种情况,您可以使用以下方法:

  • 将游戏存档的执行频率控制为每几分钟一次,而不是每次点击按钮时都会存档。
  • 等待玩家的游戏结束后再提交最高得分。
  • 转到 Google Cloud Platform 内的项目信息中心,查看您应用的每日配额。

6. 游戏存档

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

ID 重要性 说明
6.1 强制要求 添加元数据以便为游戏存档提供额外的上下文信息

您在提交游戏存档时必须至少包含以下元数据:

  • 封底图片 - 可获取游戏进度并提醒玩家游戏进度的屏幕截图。
  • 说明 - 为封底图片提供额外上下文内容的简短说明。
  • 时间戳 - 指明玩家玩这个已存档游戏的时长。
6.2 强制要求 允许玩家加载游戏存档

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