← Модуль 6/Аналитика
EN
Модуль 6 · Mobile / F2P (2012–2018)

Аналитика: телеметрия, A/B и когорты

Живой игрой управляют не мнения, а данные. Каждое действие логируется, retention и LTV читаются по когортам, утечки ищутся воронками, а каждое решение проверяется A/B-тестом. Это прикладной экспериментальный дизайн — со всеми его ловушками.
~17 мин📊 статистика + 🛠 инфра
Суть за 30 секунд
F2P-игра — это сервис, управляемый телеметрией: каждое событие (старт сессии, прохождение уровня, покупка, отвал) логируется и течёт в реал-тайм-пайплайн. Дальше три инструмента: когорты (retention/LTV по дате установки и источнику — никогда по среднему, иначе свежий приток маскирует отток), воронки (где игроки отваливаются в онбординге/покупке — чини худший шаг), A/B-тесты (раздели трафик, поменяй одну вещь, измерь лифт, выкати победителя — но только при статзначимости). Цикл «инструментируй → наблюдай → гипотеза → A/B → выкати/убей» крутится постоянно; культура — как у Supercell: маленькие автономные «соты», kill-fast (не бьёт по бенчмаркам в soft-launch — закрыли, большинство игр так и не выходят глобально). Ловушки везде: Goodhart (оптимизируешь прокси → тёмные паттерны), peeking/p-hacking, локальные оптимумы. Это тот же тулкит, что в любом data-driven продукте и в оценке ML.

Механизм: от события к решению

Телеметрия — сырьё

Всё начинается с логирования событий: session_start, level_complete(id, time), purchase(sku, $), churn. Поток (часто миллионы событий/мин) течёт через стрим (Kafka-подобный) в хранилище и дашборды. Это сырьё: без инструментирования ты слеп и принимаешь решения вкусовщиной. Правило: логируй щедро заранее — нельзя проанализировать событие, которое не записал.

Когорты — почему среднее лжёт

Метрики смотрят по когортам — группам по дате установки (и источнику UA). «D7 когорты от 1 марта» — правда; «средний DAU» — ложь, потому что свежий приток установок маскирует отток старых: общий DAU может расти, пока каждая когорта гниёт. Только когорта показывает истинную форму кривой удержания и истинный LTV. Разрез по источнику вдобавок ловит «плохой трафик» (дешёвые установки с нулевым retention).

Воронки — где течёт

Воронка — доля, проходящая каждый шаг последовательности. Онбординг-воронка, например:

ШагОсталосьКонверсия шага
Установка1000—
Прошёл туториал60060%
Дошёл до уровня 530050%
Первая покупка3010%

Чинят худший шаг (наибольший отвал относительно ожидания) — здесь обрыв «установка→туториал» (−40%) часто дороже всего, потому что бьёт по D1. Воронка превращает «retention плохой» в «вот где именно теряем».

A/B — проверка причинности

Гипотезу не «обсуждают», а тестируют: случайно делят игроков на контроль и вариант, меняют одну вещь (цвет кнопки, тайминг оффера, кривую сложности), измеряют метрику, выкатывают победителя — но только при статзначимости, иначе выкатишь шум. Ключевая математика — нужный размер выборки растёт как обратный квадрат эффекта:

n∝ σ2 δ2

где δ — детектируемый эффект (MDE), σ — разброс. Хочешь поймать лифт вдвое меньше — нужно вчетверо больше пользователей. Главные ловушки: peeking (подглядывать в идущий тест и останавливать на «значимом» — раздувает ложноположительные с 5% до ~15–30%), множественные сравнения (тестируешь 20 метрик — одна «значима» случайно), novelty-эффект (новое временно бустит) и нужда в guardrail-метриках (не выиграй retention, обрушив выручку).

Цикл и культура kill-fast

Всё это крутится петлёй: инструментируй → наблюдай (когорты/воронки) → гипотеза → A/B → выкати или убей → повтори. Supercell довела это до культуры: маленькие автономные команды-«соты», игры soft-launch в паре стран, и если метрики (D1/D7, ранний LTV) не бьют по порогам — игру убивают быстро, без сантиментов. Большинство их игр умирает в soft-launch и не выходит глобально; выживают единицы (Clash Royale, Brawl Stars). Данные тут — не отчётность, а механизм отбора.

🕹 Что открыть — и что заметить

«Играешь» в приборную панель: данные видны и в публичных отчётах, и в том, как игра инструментирует тебя.

Любая F2P-игра ты и есть данные

С первого запуска ты в воронке и, скорее всего, в A/B-бакете: тайминг первого оффера, длина туториала, первая награда — всё инструментировано и, возможно, тестируется прямо на тебе.

🎮 Заметь: поставь свежую F2P-игру и отследи свой онбординг-воронку — где тебя мягко подталкивают (первая «победа» в первые секунды для D1), когда вылезает первый оффер. Прикинь, что бы ты A/B-тестил, будь продюсером.

GameAnalytics / публичные бенчмарки читай настоящую кривую

Открытые отчёты показывают реальные кривые retention и воронки по жанрам — то, на что команды равняют свои когорты (медиана D1 ~23%, D7 ~4%).

🎮 Посмотри: открой свежий mobile-benchmark отчёт и прочитай когортную кривую и распределение по топ/медиане/худшим 25%. Заметь, как сильно «среднее» отличается от «по когортам» — и почему команды смотрят второе.

Supercell soft-launch kill-fast как механизм

Их игры выходят сначала в избранных странах; данные решают судьбу. Десятки проектов закрыты в soft-launch (Smash Land, Spooky Pop и др.), выжили единицы — это данные как фильтр, а не как отчёт.

🎮 Посмотри: почитай список убитых игр Supercell и пороги, по которым их закрывали. Заметь принцип: лучше убить быстро по ранним когортам, чем тянуть на вкусовщине. Это та же дисциплина, что вертикальный срез в инди-продакшене.

Хардкор · статистика: размер выборки, peeking и множественные сравненияможно пропустить

A/B-тест — это проверка гипотезы, и все классические ловушки статистики тут реальны и дорого стоят.

Размер выборки и мощность

Чтобы надёжно поймать эффект δ при дисперсии σ2, нужно n∝σ2/δ2 на ветку (с константой от выбранных α и мощности). Малые эффекты (а в зрелой игре лифты — доли процента) требуют огромных выборок: вдвое меньший эффект → вчетверо больше пользователей и времени. Поэтому маленькие игры не могут A/B-тестить всё — не хватает трафика на значимость.

Peeking — самая частая ошибка

Подсматривать в идущий тест и останавливать, как только увидел «p<0.05», — раздувает ложноположительные с 5% до ~15–30%: при многократных проверках почти любой шум однажды пересечёт порог. Лечится либо фиксированным заранее размером выборки, либо последовательными тестами (alpha-spending, всегда-валидные доверительные интервалы).

Множественные сравнения и guardrails

Тестируешь 20 метрик — в среднем одна «значима» случайно (нужна поправка Бонферрони / FDR). И обязательны guardrail-метрики: вариант может поднять целевую (например, конверсию оффера), обрушив побочную (retention, рефанды) — без защитных метрик ты «выиграешь» в минус. Локальность: A/B находит инкрементальные улучшения вокруг текущего дизайна, но не качественные скачки — для них нужен не тест, а новая гипотеза.

Хардкор · инфра: пайплайн телеметрии и реал-тайм против батчаможно пропустить

Под аналитикой — конвейер данных: событие на клиенте/сервере → стрим (Kafka/Kinesis) → хранилище (warehouse/lake) → дашборд/ML. Два режима:

  • Реал-тайм (стрим-обработка): живые дашборды, алерты «выручка упала», анти-чит, динамические офферы. Дорого и сложно, нужен под оперативные решения.
  • Батч (ночные джобы): когортные отчёты, LTV-модели, тяжёлая аналитика. Дешевле, не нужен мгновенный отклик.

Ключевые инженерные боли: схема событий (поменял формат — сломал исторические отчёты; нужен versioning), идемпотентность/дедуп (события приходят дважды), дешёвость записи против полноты (логировать всё дорого по трафику и хранению — баланс). Авторитетность серверная: критичные события (покупки) считать на сервере, клиентским числам не верить (анти-чит, см. авторитетный сервер).

Аналогия
Вести живую игру — это врач на непрерывном мониторинге пациента: телеметрия = постоянные анализы и датчики, A/B-тест = сравнение групп «лечение vs плацебо», когорты = чтение показателей по группам пациентов (а не по «среднему пациенту», которого не существует). И главная опасность та же: лечить цифру на мониторе, а не пациента — оптимизировать метрику (конверсию оффера), пока сам опыт игрока тихо гниёт. Прибор бесценен, но он измеряет прокси, а не цель.
Почему это важно
Живая игра — это непрерывный эксперимент, и аналитика — его метод: когорты вместо средних, воронки вместо догадок, A/B вместо споров, kill-fast вместо вкусовщины. Без этого тулкита ты управляешь сервисом вслепую. Но он же опасен: оптимизация измеримого прокси легко уводит в тёмные паттерны и статистические самообманы. Это ровно прикладной экспериментальный дизайн и причинно-следственный вывод — тот же навык, что нужен в любом data-driven продукте и в честной оценке ML-моделей.
🔁 За пределами игр — куда это переносится
Урок — это экспериментальный дизайн и причинность под продуктовой метрикой: A/B, когорты, ловушки значимости.

ML / AI (твой домен): это дословно онлайн-эксперименты и оценка моделей. A/B = выкат модели за флагом и измерение лифта; peeking ⇄ переобучение на валидации (много раз «подсмотрел» в test-set — выбрал шум); множественные сравнения ⇄ выбор модели по многим метрикам (нужна поправка/holdout); Goodhart ⇄ reward hacking (оптимизируешь прокси-метрику — модель ломает дух задачи); guardrail-метрики ⇄ вторичные ограничения, которые нельзя обрушить. Когорты = правильный способ оценивать любой роллаут; kill-fast soft-launch = управление портфелем ресёрч-ставок по ранним сигналам. И сквозная тема курса: метрика — это прокси цели, а не цель; знать, где число вводит в заблуждение (data-driven против суждения), — часть профессионализма.

Продукт / рост: весь growth-стек — funnels, cohort retention, A/B-платформы (Optimizely-подобные), north-star метрика; та же дисциплина значимости и guardrails.

Наука / любой эксперимент: мощность, размер выборки n∝σ2/δ2, p-hacking, предрегистрация против подгонки — те же правила, что в A/B живой игры.

Принцип: измеряй причинно (рандомизация + когорты), уважай статистику (выборка, не подсматривай, защищай побочные метрики) — и помни, что оптимизируешь прокси, а не саму цель.

🔧 Запусти и поковыряй — на домашнем компе
Во что смотреть — выше (🕹). Здесь — потрогать инструменты руками.
🔧 Поковырять (данные) ~40 мин, GameAnalytics free / таблица
Заведи бесплатный GameAnalytics (или симулируй в таблице): сгенерь когортную таблицу retention и онбординг-воронку. Найди худший шаг воронки. Затем спланируй A/B: какую одну вещь меняешь, какая целевая метрика, какие guardrails, и прикинь нужный n для эффекта 1% при базе 25% (увидишь, что нужны десятки тысяч пользователей).
🧪 Потестить (ловушки) ~15 мин
Возьми воображаемый «выигравший» A/B-результат и попробуй его сломать: было ли peeking? сколько метрик смотрели (множественные сравнения)? не упала ли guardrail-метрика? novelty-эффект? Затем Goodhart-аудит: какую метрику можно «выиграть» во вред игроку, и какая защита это поймает?
Чеклист: построил когортную таблицу и воронку; нашёл худший шаг; спланировал A/B с guardrails и оценкой n; разобрал «победу» на peeking/множественность/Goodhart.
Связи
основа
Core loop и удержание — retention/когорты — главное, что измеряет аналитика; D1 как north-star.
основа
Гача и battle pass — цены, шансы и тайминги офферов настраивают A/B-тестами; здесь же риск дрейфа в тёмные паттерны.
контраст
Инди-продакшн — постмортем как ретроспективное обучение vs A/B как проспективный эксперимент; и тот, и другой — циклы калибровки.
дальше
Приватность и GDPR — что произошло, когда регуляция и ATT отрезали данные, на которых всё это держалось.
Вопросы пытливого ума
Почему когорты, а не «средний DAU» — ведь среднее проще?
Потому что среднее скрывает то, что важно. Свежий приток установок (UA) маскирует отток старых: общий DAU может расти, пока каждая когорта на самом деле гниёт — ты видишь «всё хорошо» и узнаёшь правду, только когда перестанешь лить трафик и DAU обвалится. Когорта (группа по дате установки) показывает истинную форму удержания и LTV в изоляции от притока. Разрез по источнику ещё и ловит плохой трафик. «Среднее» — это агрегат, в котором утоплены и причина, и сигнал; когорта — нет.
Что не так с тем, чтобы остановить A/B, как только увидел значимость?
Это peeking — самая дорогая ошибка в A/B. Если многократно подсматривать в идущий тест и останавливаться на первом «p<0.05», ложноположительные раздуваются с 5% до ~15–30%: случайные блуждания метрики рано или поздно пересекут порог, и ты выкатишь шум как «победу». P-значение валидно только для заранее зафиксированного размера выборки. Лечится фиксацией n заранее или последовательными методами (alpha-spending / всегда-валидные интервалы), которые честно учитывают многократный взгляд.
Может ли A/B-тестирование привести к качественному скачку в игре?
Почти нет — и это его фундаментальное ограничение. A/B оптимизирует локально вокруг текущего дизайна: красный или синий, оффер на 3-й минуте или на 5-й. Он находит инкрементальные улучшения и закатывает тебя в локальный оптимум, но не изобретает новую механику и не делает скачок к другому пику — для этого нужна творческая гипотеза, которую неоткуда взять из данных текущей версии. Игры, целиком управляемые A/B, склонны к гомогенизации и «отполированной посредственности». Данные говорят, какая из дверей лучше; они не строят новый дом.
Goodhart: как «хорошая метрика» уводит во вред?
«Когда мера становится целью, она перестаёт быть хорошей мерой». Оптимизируя прокси (конверсия оффера, время в сессии), команда/алгоритм находит способы двигать число, не двигая настоящую цель (здоровье игры): агрессивнее FOMO, тёмные паттерны, выгорание ради engagement. Метрика всегда лишь прокси сложной цели; давление оптимизации эксплуатирует разрыв между прокси и целью. Защита — guardrail-метрики, качественные сигналы (опросы, ревью), и осознанное «здесь число не равно цели». Это та же патология, что reward hacking в ML, — и причина, по которой суждение не заменить дашбордом.
Почему большинство игр Supercell умирает в soft-launch — это провал?
Наоборот, это дизайн процесса. Soft-launch в паре стран даёт ранние когорты по дёшево; если D1/D7 и ранний LTV не бьют по порогам, игру убивают, не вложив годы и глобальный маркетинг. Большинство умирает специально — это фильтр, отбирающий единицы с настоящим retention, а не отчёт о неудачах. То же, что вертикальный срез в инди: дёшево де-рискуй до большой ставки. «Высокая смертность» здесь — признак здоровой дисциплины убивать быстро, а не цепляться за вкусовщину.
Что почитать