Реализуйте A/B-тесты для своей игры Unity с помощью Firebase Remote Config.

1. Введение

В этой лаборатории кода вы узнаете, как создать эксперимент с удаленной настройкой с помощью A/B-тестирования для примера игры MechaHamster: Level Up с версией Firebase , которую вы изменили в разделе «Инструментируйте свою игру с помощью Firebase Remote Config» .

A/B-тестирование с помощью Remote Config позволяет тестировать изменения в пользовательском интерфейсе, функциях или кампаниях по вовлечению целевой аудитории, прежде чем распространять их на более широкую аудиторию. Вы также можете использовать результаты эксперимента, чтобы:

  • Определите, какие варианты значений параметров улучшают ключевые показатели, такие как доход и удержание.
  • Узнайте, какие подгруппы пользователей предпочитают какие варианты.
  • Соберите и сохраните данные эксперимента для проведения дополнительного анализа последствий установки различных значений параметров.

В этом суть A/B-тестирования: оно позволяет вам взять код, предназначенный для Remote Config, и запустить эксперименты, которые контролируют значения, которые получают клиенты, на основе условий Remote Config (включая свойства пользователя Google Analytics), процентного развертывания, событий конверсий Analytics и т. д. и некоторая их комбинация.

Сначала вы реализуете условие, определяющее, кто будет включен в эксперимент, путем установки свойств пользователя на основе действий пользователя. Затем вы создадите эксперимент A/B-тестирования, который будет использовать свойства пользователей Google Analytics, чтобы определить, какие клиенты будут включены в эксперимент. И, наконец, вы будете использовать эти данные, чтобы лучше понять свою аудиторию.

Что вы узнаете

  • Как настроить A/B-тестирование с использованием инструментированных значений Remote Config
  • Как использовать свойства пользователя 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. Включите подменю Remote Config.

  1. На вкладке «Проект» в редакторе Unity разверните «Ресурсы» > «Hamster» > «Префабы» > «Меню» и дважды щелкните объект DebugMenu , чтобы открыть его на вкладке «Иерархия» редактора.

    DebugMenu item nested under Assets,\nHamster, Prefabs, Menus
  2. На вкладке «Иерархия» разверните иерархию и щелкните подобъект в разделе «DebugMenu > Panel », который называется «Действия удаленной настройки» .

Remote Config Actions nested under\nCanvas, DebugMenu

  1. На вкладке «Инспектор Unity» включите «Действия удаленной настройки» , установив флажок слева от текстового поля, содержащего имя объекта.

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

У него есть два дочерних элемента GameObject с именами Set Bored Of Subtitle и Set Enjoys Subtitle, которые настроены на вызов существующих, но нереализованных методов в DebugMenu.cs .

4. Сбросьте переопределение субтитров по умолчанию в приложении.

В предыдущей лаборатории кода вы переопределили значение параметра по умолчанию как JSON и использовали условия для обслуживания различных вариантов. В рамках этой лаборатории кода вы удалите созданное вами условие и повторно введете значение по умолчанию в приложении, и вы сможете переопределить его только с помощью результатов 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. Установите свойства пользователя в функциях отладки.

Теперь вы напишете тела функций для некоторых предварительно настроенных, но нереализованных функций Google Analytics в DebugMenu.cs (который можно найти в разделе «Активы» > «Hamster» > «Скрипты» > «Состояния»).

Эти функции устанавливают свойства пользователя , которые представляют собой способы описания сегментов вашей пользовательской базы и используются для записи того, как пользователь относится к субтитрам игры.

Реализуйте SetUserBoredOfSubtitle и SetUserEnjoysSubtitle , найдя существующие их версии в 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 с мобильного устройства, запустите игру и нажмите кнопку «Меню отладки» в главном меню, затем нажмите «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. Сначала выберите «Изменить» в параметре subtitle_override на странице удаленной конфигурации консоли Firebase:

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. Затем нажмите «И» , чтобы добавить новое условие, затем выберите «Свойство пользователя» и выберите subtitle_sentiment . Если он не появляется, введите его вручную.
  2. Поскольку вы хотите установить субтитры только для тех, чье текущее настроение субтитров включает «скучно», выберите «содержит » и введите 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
    • Вариант А : 100
    • Вариант Б : 100
    В результате общий вес составит 0,5% для базового уровня, 49,8% для варианта А и 49,8% для варианта Б. Variant weights configuration\nsection В этих вариантах указано, что в одном из 201 раз A/B-тестирование предоставляет значение по умолчанию тем, кому наскучили субтитры, но в 200/201 раз оно будет предоставлять одно из двух новых значений и переопределять титульный экран.
  5. Сохраните и отправьте, нажав «Начать эксперимент» , затем нажмите «Начать» во всплывающем окне подтверждения. Click Start to start the\nexperiment

8. Запустите метод Set User Property и обновите.

Теперь вы установили различные свойства пользователя, которые затем можно использовать для управления логикой или представлением вашей игры.

Если вы ранее не запускали метод SetUserProperty или не установили для него enjoys , вы все равно должны видеть субтитры по умолчанию при открытии игры.

Если вы установили для него значение « bored (перед повторной загрузкой), вы должны увидеть одно из новых значений в соотношении примерно 50/50.

После того как устройство участвует в эксперименте A/B-тестирования, значения, полученные в результате этого эксперимента, не изменяются и сохраняются для каждой установки . Как следствие, чтобы получить одно из других экспериментальных значений, вам необходимо создать новую установку, либо переустановив игру на то же устройство/симулятор, либо установив игру на новое устройство/симулятор.

В реальном A/B-тесте, запущенном для вашей пользовательской базы, вы должны придать базовому уровню такой же вес, как и другим вариантам. Но в этом случае вы назначаете очень искаженные вероятности, чтобы подтвердить, что эксперимент работает. Если (в случае 1/201) вы по-прежнему получаете значение по умолчанию, попробуйте переустановить игру на свое устройство/симулятор.

Другим эффектом этого является то, что переключение свойства пользователя обратно на enjoys не приведет к возврату значения к базовому значению, но, опять же, вы можете сделать это, переключившись на enjoys и переустановив его.

9. Поздравляем!

Вы использовали A/B-тестирование Remote Config, чтобы поэкспериментировать с различными значениями Remote Config и определить, как каждое из них влияет на показатели Analytics.

Что мы рассмотрели

  • Как настроить A/B-тестирование с использованием инструментированных значений Remote Config
  • Как использовать свойства пользователя Google Analytics как часть условий допуска к экспериментам A/B-тестирования

Следующие шаги

После завершения эксперимента вы можете выбрать один из списка экспериментов вашего проекта и решить, что вы хотите с ним делать. Хотите выбрать одного «победителя» или провести еще эксперименты?