使用 Firebase Remote Config 为 Unity 游戏实施 A/B 测试

1. 简介

在此 Codelab 中,您将学习如何使用 A/B 测试为示例游戏 MechaHamster: Level Up with Firebase edition 创建 Remote Config 实验,该游戏是您在使用 Firebase Remote Config 检测游戏中修改的。

借助 Remote Config 进行 A/B Testing,您可以在面向更广泛的受众群体发布之前,先针对目标受众群体测试对应用界面、功能或互动广告系列所做的更改。您还可以使用实验结果来:

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

这正是 A/B Testing 的精髓:它使您能够使用为 Remote Config 植入的代码启动实验,根据 Remote Config 条件(包括 Google Analytics 用户属性)、百分比发布、Analytics 转化事件以及这些条件的某种组合来控制客户端收到的值。

首先,您将实现一个条件,通过根据用户操作设置用户属性来限制哪些用户会纳入实验。然后,您将创建一个 A/B Testing 实验,该实验使用 Google Analytics 用户属性来确定哪些客户纳入实验范围。最后,您将使用这些数据来进一步了解受众群体。

学习内容

  • 如何使用插桩的 Remote Config 值设置 A/B Testing
  • 如何使用 Google Analytics 用户属性作为纳入 A/B 测试的条件

前提条件

您需要满足的条件

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

2. 启用调试菜单

项目中隐藏了一个调试菜单,并且游戏中存在用于访问此菜单的按钮,但该按钮目前处于未启用状态。您必须启用该按钮,才能从 MainMenu 预制件访问它。

  1. 在 Unity 编辑器中,选择 Project(项目)标签页,然后在 Assets(资源)下,依次展开 Hamster > Prefabs > Menus,然后点击 MainMenu

Unity 编辑器中的“项目”标签页,显示了资源。仓鼠、预制品、菜单

  1. 在预制件层次结构中,找到名为 DebugMenuButton 的已停用子对象,然后点击该子对象以在检查器标签页中打开它。

Unity 编辑器显示主菜单,其中 DebugMenu 已停用

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

带有复选框的 DebugMenuButton 的“检查器”标签页

  1. 保存预制件。

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

3. 启用 Remote Config 子菜单

  1. 在 Unity 编辑器的 Project(项目)标签页中,依次展开 Assets(资源)> Hamster > Prefabs(预制件)> Menus(菜单),然后双击 DebugMenu 对象,以在编辑器的 Hierarchy(层次结构)标签页中将其打开。

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

嵌套在 Canvas、DebugMenu 下的 Remote Config 操作

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

Unity 编辑器,其中“DebugMenu”面板下启用了“Remote Config”操作

该对象有两个名为“Set Bored Of Subtitle”和“Set Enjoys Subtitle”的 GameObject 子对象,这两个子对象均配置为调用 DebugMenu.cs 中现有的但未实现的方法。

4. 将字幕替换重置为应用内默认值

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

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

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

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

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

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

现在,您将为 DebugMenu.cs 中一些已预配置但未实现的 Google Analytics 函数(可在 Assets > Hamster > Scripts > States 中找到)编写函数正文。

这些函数用于设置用户属性,用户属性可用于描述用户群的细分情况,并用于记录用户对游戏字幕的感受。

通过在 DebugMenu.cs 中找到 SetUserBoredOfSubtitleSetUserEnjoysSubtitle 的现有版本并按如下方式覆盖它们,来实现 SetUserBoredOfSubtitleSetUserEnjoysSubtitle

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 测试实验

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

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

Remote Config 页面上的 subtitle_override 参数,显示“修改”选项。

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

“Remote Config 编辑参数”页面上的“添加新实验”选项。

  1. 在随即显示的列表中,选择实验

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

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

“实验名称和说明”部分

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

A/B 测试配置的“定位”步骤,其中已选择应用

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

“A/B 测试定位”部分,其中选择了“subtitle_sentiment”

  1. 接下来,选择测试将尝试尽可能提升的目标。选择留存人数(2-3 天)

“A/B 测试目标”部分

  1. 接下来,设置实验的参数并创建不同的字幕变体。这些变体是 A/B 测试将向 subtitle_sentiment 包含“无聊”的用户提供的不同值,A/B 测试将确定哪个变体最适合最大限度地提高用户留存率。
  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%。变体权重配置部分这些变体指定,在 201 次中,A/B Testing 会向厌烦字幕的用户提供默认值,但在 201 次中,它会提供两个新值中的一个,并替换标题画面。
  5. 点击启动实验,然后点击确认弹出式窗口中的启动,即可保存并提交。点击“开始”以开始实验

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

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

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

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

设备进入 A/B 测试实验后,从该实验接收的值不会发生变化,并且每次安装时都会保持不变。因此,如需接收其他实验值,您必须通过以下方式创建新安装:将游戏重新安装到同一设备/模拟器,或将游戏安装到新设备/模拟器。

在面向整个用户群推出的实际 A/B 测试中,您应为基准变体赋予与其他变体类似的权重。不过,在这种情况下,您会分配非常倾斜的概率,以验证实验是否正常运行。如果(在 1/201 的情况下)您仍然收到默认值,请尝试将游戏重新安装到设备/模拟器。

此设置的另一个影响是,将用户属性切换回 enjoys 不会将值更改回基准值,但您可以切换到 enjoys 并重新安装来达到此目的。

9. 恭喜!

您已使用 Remote Config A/B 测试来实验不同的 Remote Config 值,并确定每个值对 Google Analytics 指标的影响。

所学内容

  • 如何使用插桩的 Remote Config 值设置 A/B Testing
  • 如何使用 Google Analytics 用户属性作为纳入 A/B 测试实验的条件

后续步骤

实验结束后,您可以从项目中的实验列表中选择一个实验,以决定如何处理该实验。您是想选择其中一个作为“胜出”组合,还是想进行更多实验?