Целью теста было выявить влияние сложности стартовых уровней на
удержание игроков. Сейчас в игре 120 уровней. Было разработано 30 полностью
новых уровней (более динамичных и простых) и проведен A / B тест, в котором
игроки были разделены на 2 когорты:
Когорта А: игроки с четным номером устройства получали старые 120
уровней
Когорта В: игроки с нечетным номером играли в новые 30 уровней, после
которых шли старые уровни (с 31 по 120).
Было необходимо изучить полученные данные, извлечь из них инсайты, позволяющие улучшить игру, и принять обоснованное решение о замене старых 30ти уровней на новые
Исходные данные (Google Sheets)
Итоговая таблица (Google Sheets)
Пояснения по столбцам:
Level started (Uniques) – число уникальных игроков, начавших уровень.
Level started (Totals) – общее число запусков уровня.
Level won (Totals) – общее число выигрышей уровня.
Level failed (Totals) – общее число проигрышей уровня.
Были добавлены следующие столбцы:
CHURN(relative) - относительный отток игроков после уровня
CHURN(absolute) - абсолютный отток игроков после уровня
По этим данным достаточно тяжело сравнивать когорты, поэтому были добавлены следующие столбцы:
CUMULATIVE CHURN(relative) - относительный кумулятивный отток игроков после уровней
CUMULATIVE CHURN(absolute) - абсолютный кумулятивный отток игроков после уровней
Как можно увидеть, новые уровни имеют меньший отток, однако на следующих 90 уровнях разрыв исчезает
Более точно это можно рассмотреть рассчитав кумулятивный отток для последних 90 уровней отдельно
Как можно заметить, за первые 10 уровней когорта Б значительно обгоняет когорту А по уровню оттока и сохраняет лидерство до конца рассматриваемого отрезка
Также были добавлен столбец NOT FINISHED, отражающий количество начатых уровней, не закончившихся победой или поражением. Значения в данном столбце сильно противоречат значениям в exit_to_menu, однако без дополнительной информации о методике сбора информации дальнейшие выводы сделать крайне сложно.
Помимо этого был создан столбец DIFFICULTY, отражающий процент провалов уровней из числа запусков.
Наконец, в данных было обнаружено несколько уровней с большим процентом оттока, практически не имевших при этом провалов. Был сделан вывод, что эти уровни слишком скучные, после чего в качестве эксперимента были созданы столбцы для упрощения выявления скучных уровней.
с - отражает отношение оттока игроков к сложности уровня и имеет следующую формулу
REL_CHURN^churn_power / REL_FAILS
REL_CHURN = (UNIQ_CURR - UNIQ_NEXT + stab_metric) / (UNIQ_CURR)
REL_FAILS = (LVL_FAILS + stab_metric) / (LVL_STARTS), где
REL_CHURN - стабилизированный относительный оттток после уровня
REL_FAILS - стабилизированная относительная доля провалов на уровне
UNIQ_NEXT - число уникальных запусков следующего уровня
UNIQ_CURR - число уникальных запусков текущего уровня
LVL_FAILS - число провалов текущего уровня
LVL_STARTS - число запусков текущего уровня
stab_metric - параметр, используется для стабилизации значений функции при малых количествах провалов/оттока
churn_power - параметр, используется для придания большей значимости оттоку после уровня. При значениях >1 уровни с большим оттоком при одинаковом отношении оттока к доле провалов будут получать большую оценку.
BOREDOM(mean mormalized) - BOREDOM(raw), нормализованная так, чтобы единица соответствовала среднему показателю скучности уровней.
Конкретные значения данной функции не имеют “физического” смысла и должны использоваться только для сравнения уровней между собой.
Как было отмечено выше, новые 30 уровней показывают лучшие показатели оттока, однако различие исчезает довольно быстро после их завершения. Рассмотрим конкретные числа оттока и рассчитаем статистическую значимость полученных результатов.
Относительный кумулятивный отток на 30м уровне(Когорта А) - 74,17%
Относительный кумулятивный отток на 30м уровне(Когорта Б) - 68,11%
Для подсчета статистической значимости за нулевую гипотезу примем то, что различий между наборами уровней нет
Теперь рассчитаем среднеквадратическое отклонение для обеих когорт как для распределения Бернулли
СКО(А30) = (0,7417*(1-0,7417)/1784)^½ = 0.011034
СКО(Б30) = (0,6811*(1-0,6811)/1750)^½ = 0.010463
Теперь рассчитаем стандартную ошибку разности
СОР(30) = (СКО(А30)^2 + СКО(Б30)2)½ = 0.015206
Наконец рассчитаем z-score и соответствующий ей p-value
z-score = (СКО(Б30)-СКО(A30)) = 3.9892
p-value = 0.000033, что соответствует практически 100% уверенности, в превосходстве новых уровней
Повторим расчет для последнего уровня
Относительный кумулятивный отток на 119м уровне(Когорта А) - 93,80%
Относительный кумулятивный отток на 119м уровне(Когорта Б) - 94,62%
СКО(А119) = 0.005307
СКО(Б119) = 0.005342
СОР(119) = 0.007531
z-score = 0.2406
p-value = 0.4049
Полученные результаты не позволяют говорить о каком-либо статистически значимом различии на 119м уровне.
Таким образом, при низкой трудоемкости внедрения новых уровней его можно считать оправданным, однако из-за исчезновения эффекта в долгосрочной перспективе выигрыш по удержанию и другим KPI, вероятно будет незначительным.
Имеет смысл создать набор уровней 31-60 в стиле новых 30 для определения причины резкого падения удержания после 30 уровня: несоответствие ожиданий после новых уровней старым уровням, идущим следом, либо существование некоторого предела удержания отдельных категорий игроков с помощью более динамичных уровней.