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

一、简介

在此 Codelab 中,您将了解如何使用 A/B 测试为示例游戏MechaHamster:使用 Firebase 版本升级 来创建远程配置实验,您已在使用 Firebase 远程配置 检测您的游戏中对其进行了修改。

通过远程配置进行 A/B 测试,您可以在将应用程序的 UI、功能或参与活动推广到更广泛的受众之前,测试对目标受众的更改。您还可以使用实验结果来:

  • 确定哪些参数值变体可以改善收入和保留率等关键指标。
  • 发现哪些用户子群更喜欢哪些变体。
  • 收集并存储实验数据,以对设置不同参数值的效果进行附加分析。

这是 A/B 测试的本质:它使您能够获取用于远程配置的代码,并启动实验来控制客户端接收的值,基于远程配置条件(包括 Google Analytics 用户属性)、百分比部署、Analytics 转换事件、以及这些的一些组合。

首先,您将通过根据用户操作设置用户属性来实现一个条件,以限制谁将包含在实验中。然后,您将创建一个 A/B 测试实验,该实验使用 Google Analytics 用户属性来确定实验中包含哪些客户端。最后,您将使用这些数据来更多地了解您的受众。

你将学到什么

  • 如何使用检测的远程配置值设置 A/B 测试
  • 如何使用 Google Analytics 用户属性作为 A/B 测试准入条件的一部分

先决条件

你需要什么

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

2. 启用调试菜单

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

  1. 在 Unity 编辑器中,选择Project选项卡,然后在Assets下,展开Hamster > Prefabs > Menus并单击MainMenu

The Unity editor Project tab showing\nAssets. Hamster, Prefabs, Menus

  1. 在预制层次结构中,找到名为DebugMenuButton的禁用子对象,然后单击它以在“检查器”选项卡中将其打开。

The Unity editor shows the Main Menu,\nwith DebugMenu disabled

  1. “检查器”选项卡中,选中左上角包含DebugMenuButton 的文本字段旁边的框以启用它。

The Inspector tab for DebugMenuButton\nwith checkbox

  1. 保存预制件。

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

3. 启用远程配置子菜单

  1. 从 Unity 编辑器的“项目”选项卡中,展开“资源” > “Hamster” > “预制件” > “菜单” ,然后双击“调试菜单”对象以在编辑器“层次结构”选项卡中将其打开。

    DebugMenu item nested under Assets,\nHamster, Prefabs, Menus
  2. “层次结构”选项卡中,展开层次结构并单击DebugMenu > Panel下的子对象,该子对象标记为Remote Config Actions

Remote Config Actions nested under\nCanvas, DebugMenu

  1. 在 Unity Inspector选项卡中,通过选中包含对象名称的文本字段左侧的框来启用远程配置操作

Unity editor with Remote Config\nActions enabled under DebugMenu, Panel

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

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

之前的 Codelab中,您将参数的默认值覆盖为 JSON,并使用条件来提供不同的变体。作为此 Codelab 的一部分,您将删除您创建的条件并重新引入应用内默认值,并且您只能使用 A/B 测试的结果覆盖它。

要重新启用应用内默认设置:

  1. 在 Firebase 控制台中打开“远程配置”页面,然后单击subtitle_override参数旁边的铅笔图标以打开“编辑参数”侧面板。
  2. 单击条件旁边的X图标将其删除。
  3. 在剩余的默认值旁边,启用“使用应用内默认值”开关。

Deleting a condition from the Remote\nConfig parameter editor

  1. 单击“保存”保存您的更改,然后单击“发布更改”以发布您的更改。 Publish\nchanges option on the Remote Config page

5. 在调试功能中设置用户属性

现在,您将在DebugMenu.cs中为一些预先配置但未实现的 Google Analytics 函数编写函数体(可以在“资产”>“Hamster”>“脚本”>“状态”中找到)。

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

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

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

如果您的应用程序正确配置了 Google Analytics,您可以调用这些函数之一以使该属性可用于远程配置的条件。要从移动设备调用SetUserBoredOfSubtitle ,请启动游戏并按主菜单中的“调试菜单”按钮,然后按“Set Bored of Subtitle”

6. 创建自定义维度

接下来,您将为subtitle_override设置各种字幕变体,以查看哪种字幕效果最好。但是,在 A/B 测试中,您只会向对当前字幕的感受(如subtitle_sentiment中记录的)包含“无聊”一词的用户提供这些变体。

您将使用自定义维度来创建和跟踪 Analytics 事件的自定义参数。有关详细信息,请参阅自定义维度和指标

要创建新的自定义维度:

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

7. 设置 A/B 测试实验

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

  1. 首先,在 Firebase 控制台远程配置页面上的subtitle_override参数上选择编辑

The subtitle_override parameter on\nthe Remote Config page, showing the Edit option.

  1. 在出现的编辑参数对话框中,单击添加新的

The Add new experiment option on the\nRemote Config Edit parameter page.

  1. 从出现的列表中,选择实验

Remote Config parameter page: Add new\nexperiment

  1. 输入实验的名称和描述。

Experiment name and description\nsection

  1. 接下来,选择定位条件。首先,从下拉列表中选择您的应用程序。

The Targeting step of an A/B Testing\nconfiguration, with an app selected

  1. 接下来,单击And添加新条件,然后选择User Property并选择subtitle_sentiment 。如果没有出现,请手动输入。
  2. 由于您只想为当前字幕情绪包含“bored”的人设置副标题,因此选择contains并输入bored
  3. (可选)选择符合上述标准的受众百分比来接受测试。选择100%以避免您无法轻松控制的随机性。

A/B Testing Targeting section with\nsubtitle_sentiment selected

  1. 接下来,选择测试将尝试最大化的目标。选择保留(2-3 天)

A/B Testing Goals section

  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%。 Variant weights configuration\nsection这些变体指定,201 次中有一次,A/B 测试为那些厌倦了字幕的人提供默认值,但 200/201 次,它将提供两个新值之一并覆盖标题屏幕。
  5. 单击“开始实验”保存并提交,然后在确认弹出窗口中单击“开始”Click Start to start the\nexperiment

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

您现在已经设置了有关用户的各种属性,然后可以使用这些属性来指导游戏的逻辑或表示。

如果您之前没有运行过SetUserProperty方法或将其设置为enjoys ,则打开游戏时您仍然应该看到默认字幕。

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

一旦设备进入 A/B 测试实验,它们从该实验收到的值将不会改变,并且在每次安装时都是持久的。因此,要接收其他实验值之一,您必须通过将游戏重新安装到同一设备/模拟器或将游戏安装到新设备/模拟器来创建新安装。

在跨用户群启动的真实 A/B 测试中,您应该为基线赋予与其他变体类似的权重。但在这种情况下,您分配非常偏态的概率来验证实验是否有效。如果(在 1/201 的情况下)您仍然收到默认值,请尝试将游戏重新安装到您的设备/模拟器上。

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

9. 恭喜!

您已使用远程配置 A/B 测试来试验不同的远程配置值并确定每个值如何影响 Analytics 指标。

我们涵盖的内容

  • 如何使用检测的远程配置值设置 A/B 测试
  • 如何使用 Google Analytics 用户属性作为 A/B 测试实验准入条件的一部分

下一步

实验结束后,您可以从项目中的实验列表中选择一个来决定您想要用它做什么。您想选择一个作为“获胜者”还是进行更多实验?