使用 Firebase Remote Config 为您的 Unity 游戏实现 A/B 测试

1. 简介

在此 Codelab 中,您将学习如何使用 A/B Testing 为示例游戏 MechaHamster: Level Up with Firebase Edition 创建 Remote Config 实验,该游戏已在使用 Firebase Remote Config 对游戏进行插桩处理中修改。

通过将 A/B Testing 与 Remote Config 结合使用,您可以先面向目标受众群体测试对应用界面、功能或互动广告系列的更改,然后再面向更广泛的受众群体发布这些更改。您还可以将实验结果用于:

  • 确定哪些参数值变体能够提升收入和留存率等关键指标。
  • 了解哪些子群组的用户更喜欢哪些变体。
  • 收集并存储实验数据,以便进一步分析设置不同参数值的影响。

这就是 A/B Testing 的精髓:它可让您为 Remote Config 设置插桩代码,并启动实验,以根据 Remote Config 条件(包括 Google Analytics [分析] 用户属性)、百分比发布、Analytics 转化事件以及这些因素的某种组合控制客户收到的值。

首先,您需要实现一个条件,根据用户操作来设置用户属性,以便控制哪些用户可参与实验。然后,您需要创建一项 A/B Testing 实验,使用 Google Analytics(分析)用户属性来确定将哪些客户纳入实验。最后,您可以利用这些数据更深入地了解自己的受众群体。

学习内容

  • 如何使用插桩的 Remote Config 值设置 A/B Testing
  • 如何将 Google Analytics(分析)用户属性作为准入 A/B 测试的条件之一

前提条件

所需条件

  • 支持 iOS 和/或 Android build 的 Unity 2019.1.0f1 或更高版本

2. 启用调试菜单

调试菜单隐藏在项目中,用于访问此菜单的按钮存在于游戏中,但当前未启用。您必须启用该按钮,才能从 MainMenu 预设件访问该按钮。

  1. 在 Unity 编辑器中,选择 Project 标签页,然后在 Assets 下,展开 Hamster > Prefabs > Menus,然后点击 MainMenu

Unity 编辑器的“Project”标签页,显示\n 资产。仓鼠、预制件、菜单

  1. 在 Prefab 层次结构中,找到名为 DebugMenuButton 的已停用子对象,然后点击该对象,在 Inspector 标签页中将其打开。

Unity 编辑器显示主菜单,\n 并停用 DebugMenu

  1. Inspector 标签页中,勾选左上角包含 DebugMenuButton 的文本字段旁边的复选框,以启用该工具。

DebugMenuButton 的“Inspector”标签页,\n 其中带有复选框

  1. 保存预制件。

现在,如果您在编辑器或设备上运行游戏,应该可以访问该菜单。

3. 启用 Remote Config 子菜单

  1. 在 Unity 编辑器的 Project 标签页中,展开 Assets > Hamster > Prefabs > Menus,然后双击 DebugMenu 对象,以在编辑器的 Hierarchy 标签页中将其打开。

    嵌套在 Assets、\nHamster、Prefabs、Menus 中的 DebugMenu 项
  2. Hierarchy 标签页中,展开层次结构,然后点击 DebugMenu > Panel 下标记为 Remote Config Actions 的子对象。

嵌套在\nCanvas、DebugMenu 下的 Remote Config 操作

  1. 在 Unity 的 Inspector 标签页中,勾选包含对象名称的文本字段左侧的复选框,启用 Remote Config Actions

具有 Remote Config 的 Unity 编辑器,\n 可在 DebugMenu 和 Panel 下启用操作

它有两个名为 Set Bored Of Subtitle 和 Set Enjoys Subtitle 的 GameObject 子元素,它们都配置为调用 DebugMenu.cs 中现有但未实现的方法。

4.将字幕覆盖设置重置为应用内默认值

上一个 Codelab 中,您将参数的默认值替换成了 JSON,并使用条件来提供不同的变体。在此 Codelab 中,您将删除创建的条件并重新引入应用内默认值,并且仅使用 A/B Testing 的结果替换该条件。

如需重新启用应用内默认值,请执行以下操作:

  1. 在 Firebase 控制台中打开“Remote Config”页面,然后点击 subtitle_override 参数旁边的铅笔图标,打开修改参数侧边栏。
  2. 点击条件旁边的 X 图标将其删除。
  3. 在其余的默认值旁边,将使用应用内默认值开关切换为启用状态。

从 Remote\nConfig 参数编辑器中删除条件

  1. 点击保存以保存您所做的更改,然后点击发布更改以发布更改。Remote Config 页面上的\n“发布更改”选项

5. 在调试函数中设置用户属性

现在,您将在 DebugMenu.cs 中为一些预配置但未实现的 Google Analytics(分析)函数编写函数正文(您可以在“Assets”(资源)> Hamster(仓鼠)> Scripts(脚本)>“State”(状态)中找到该函数。

这些函数用于设置用户属性,它们用于描述用户群细分,并用于记录用户对游戏字幕的看法。

实现 SetUserBoredOfSubtitleSetUserEnjoysSubtitle,方法是在 DebugMenu.cs 中查找它们的现有版本,然后按如下方式将其覆盖:

void SetUserBoredOfSubtitle()
{
  Firebase.Analytics.FirebaseAnalytics.SetUserProperty("subtitle_sentiment", "bored");
}
void SetUserEnjoysSubtitle()
{
  Firebase.Analytics.FirebaseAnalytics.SetUserProperty("subtitle_sentiment", "enjoys");
}

如果您的应用已正确配置了 Google Analytics(分析),您可以调用其中一个函数,使媒体资源可供 Remote Config 的条件使用。如需在移动设备上调用 SetUserBoredOfSubtitle,请启动游戏,按主菜单中的 Debug Menu 按钮,然后按 Set Bored of Subtitle

6. 创建自定义维度

接下来,您将为 subtitle_override 设置各种字幕变体,看看哪种字幕效果最佳。但是,在 A/B 测试中,只有当用户对当前副标题(如 subtitle_sentiment 中记录)的感受包含“无聊”一词时,您才能使用这些变体。

您将使用自定义维度来创建和跟踪 Google Analytics(分析)事件的自定义参数。如需了解详情,请参阅自定义维度和指标

若要创建新的自定义维度,请按以下步骤操作:

  1. 打开 Firebase 控制台,展开 Analytics 菜单,然后选择自定义设置
  2. 在“自定义设置”页面中,点击创建自定义维度
  3. 新建自定义维度窗口中,将维度名称设置为“字幕情感”,然后从范围下拉菜单中选择用户
  4. 对于用户属性字段,选择 subtitle_sentiment.

7. 设置 A/B Testing 实验

接下来,创建 A/B Testing 实验,为 subtitle_override 设置不同的值进行相互测试,从而优化两到三天的用户留存率。

  1. 首先,在 Firebase 控制台 Remote Config 页面上的 subtitle_override 参数上选择修改

Remote Config 页面上\n 的 subtitle_override 参数,显示了“Edit”选项。

  1. 在随即显示的修改参数对话框中,点击新增

Remote Config 的“修改”参数\n 页面上的“添加新实验”选项。

  1. 从显示的列表中选择实验

Remote Config 参数页面:添加新\n 实验

  1. 为实验输入名称和说明。

实验名称和说明\n 部分

  1. 接下来,选择定位条件。首先,从下拉菜单中选择您的应用。

A/B Testing 配置的“定位”步骤,\n 其中选择了一个应用

  1. 接下来,点击以添加新的条件,然后选择用户属性并选择 subtitle_sentiment。如果未显示,请手动输入。
  2. 由于您只想为当前字幕情感包含“无聊”的观众设置翻译字幕,因此请选择包含并输入 bored
  3. (可选)选择要向测试中覆盖的符合上述条件的受众群体所占的百分比。选择 100% 可以避免出现您无法轻松控制的随机性。

A/B Testing 定位部分,\n 已选中“subtitle_sentiment”

  1. 接下来,选择该测试会努力尽可能提升的一个目标。选择留存人数(2-3 天)

“A/B Testing 目标”部分

  1. 接下来,设置实验参数并创建不同的字幕变体。这些变体是 A/B Testing 将为subtitle_sentiment中包含“无聊”的用户提供不同的值,而 A/B Testing 将确定哪个变体最有利于最大限度提高留存率。
  2. 为变体 A 输入以下参数值:
    {"text":"A: A game about a mechanical hamster","fontSize":8,"textColor":{"r":0.0,"g":255.0,"b":0.0,"a":255.0}}
    
  3. 为变体 B 输入以下参数值:
    {"text":"B: A game about a mechanical hamster","fontSize":14,"textColor":{"r":255.0,"g":0.0,"b":0.0,"a":255.0}}
    
  4. 使用整数设置变体宽高比,如下所示:
    • 基准:1
    • 变体 A:100
    • 变体 B:100
    这样一来,基准组的总权重为 0.5%,变体 A 的总权重为 49.8%,变体 B 的总权重为 49.8%。变体权重配置\n 部分这些变体会指明,每 201 次,A/B Testing 都会默认传送给对字幕感到无聊的那些人,但 200/201 次,则会提供两个新值中的一个,并替换标题。
  5. 点击启动实验,保存并提交,然后点击弹出式确认窗口中的开始点击“开始”\n 启动实验

8. 运行“设置用户属性”方法并刷新

现在,您已经设置了有关用户的各种属性,这些属性可用于指示游戏的逻辑或呈现方式。

如果您之前未运行过 SetUserProperty 方法或将其设置为 enjoys,那么在打开游戏时应该仍会看到默认字幕。

如果您已将其设置为 bored(在重新获取之前),您应该会看到其中一个新值大约按 50/50 的比例排列。

设备进入 A/B Testing 实验后,从该实验收到的值便不会改变,并且每次安装时这些值都会保持不变。因此,要接收其他某个实验性值,您必须通过以下方式创建新的安装:将游戏重新安装到相同的设备/模拟器上,或将游戏安装到新设备/模拟器上。

在面向您的用户群发布的真实 A/B 测试中,您应该为基准变体提供与其他变体相似的权重。但在这种情况下,您需要指定非常偏离的概率来验证实验是否有效。如果(在 1/201 案例中),您仍然收到默认值,请尝试将游戏重新安装到您的设备/模拟器上。

这样做的另一个影响是,将用户属性切换回 enjoys 并不会将值改回基准,但同样,您可以通过切换到 enjoys 并重新安装来实现此目的。

9. 恭喜!

您使用 Remote Config A/B Testing 对不同的 Remote Config 值进行了实验,并确定了每个值对 Analytics 指标的影响。

所学内容

  • 如何使用插桩的 Remote Config 值设置 A/B Testing
  • 如何将 Google Analytics(分析)用户属性作为参与 A/B Testing 实验的条件之一

后续步骤

实验结束后,您可以从项目中的实验列表中选择一个来决定要对该实验执行什么操作。您是想选出一位获奖者作为“优胜者”,还是希望开展更多实验?