GameDev Guide
Глава 2313 мин чтенияПроверено: 5 сентября 2026 г.

Аналитика: какие цифры смотреть и каким верить

Разберём метрики Консоли разработчика — показы, сессии, удержание, монетизацию, — подключим внешнюю аналитику с учётом CSP и решим, какие события действительно нужны маленькой игре.

Содержание главы

У маленькой игры есть характерная болезнь: разработчик открывает Консоль каждое утро, видит скачок с 40 игроков до 55 и делает вывод, что вчерашняя правка баланса сработала. На самом деле была суббота.

Аналитика в Яндекс Играх устроена так, что часть работы сделана за вас: платформа сама считает продуктовые, денежные и технические метрики, ничего подключать не нужно. Задача разработчика — понимать, что каждая цифра означает, где у неё погрешность и в какой момент стоит добавить свою аналитику поверх встроенной. Все определения ниже — из документации Консоли, сверены в сентябре 2026 года.

Что Консоль считает сама

Шесть инструментов, каждый отвечает на свой вопрос:

ИнструментПро что
Панель управленияОбщее состояние игры: алерты, ключевые цифры, распределение игроков по странам и платформам
МетрикиПодробные графики: продуктовые, денежные, технические
Метрики покупокИнап-покупки: доход, платящие, популярные товары, транзакции
Общий доходСводка по монетизации всех ваших игр сразу
ОтзывыОтзывы игроков и ваши ответы
Яндекс МетрикаВнешняя веб-аналитика для собственных отчётов и воронок

Важно

Данные по большинству метрик обновляются с задержкой 2–3 дня; метрики Рекламной сети Яндекса обновляются день в день. Вчерашний график всегда неполный. Если вы выкатили обновление в понедельник, судить о нём можно не раньше пятницы — и то по неделе целиком, а не по одному дню.

Все виджеты имеют фильтры по периоду, типу устройства (desktop, mobile, tv) и стране, а таблицу со значениями по дням можно скачать кнопкой в правом верхнем углу виджета. Для продуктовых и денежных метрик доступны линии лидеров в вашей категории — их отображение при желании отключается.

Продуктовые метрики: что означают

МетрикаОпределение
РейтингОценка 0–100 на основе времени играния на игрока, дневной аудитории и возвращаемости. Формируется примерно через две недели после публикации; при дневной аудитории меньше 10 игроков не вычисляется
ИгрокиУникальные игроки в день и отдельно — новые игроки в день
Время игранияСуммарное количество минут в день, проведённых в игре всеми игроками
Время играния на игрокаСреднее время в минутах, которое игрок провёл за один день

Пара, на которую смотрят вместе, — «Игроки» и «Время играния на игрока». Рост числа игроков при падении времени на игрока обычно означает, что вам дали трафик, а игра его не удерживает. Обратная картина — маленькая, но вовлечённая аудитория — для алгоритмов рекомендаций сигнал скорее хороший.

Конверсии

МетрикаОпределение
CTR иконки в рекомендацияхКлики к показам иконки в каталоге и подборках, без блока «Мои игры»
CTR обложки в рекомендацияхКлики к показам обложки в каталоге и подборках
CTR иконки в блоке «Мои игры»Клики к показам иконки в блоке «Мои игры»
Конверсия в игровую сессиюДоля игровых сессий, которые длятся более 60 секунд
Конверсия по времени игранияДоля игроков, чьи сессии были дольше 1, 3, 5, 10 и 30 минут

Здесь спрятана самая практичная связка во всей Консоли. Низкий CTR иконки — проблема иконки и обложки, а не игры: до игры человек ещё не дошёл. Низкая конверсия в игровую сессию при нормальном CTR — проблема первой минуты: долгая загрузка, непонятный первый экран, требование авторизации на старте. Документация даёт к этой метрике прямую рекомендацию: сократить размер ресурсов на стадии загрузки и сделать первое взаимодействие легче и приятнее.

Разделение полезно тем, что подсказывает, что чинить. Иконку меняют через A/B-тест креативов, первую минуту — через код.

Возвращаемость

Шесть отдельных метрик: возвращаемость 1-го, 3-го, 7-го и 14-го дня, 2-й недели и 2-го месяца. Считаются как процент игроков, вернувшихся в игру на соответствующий день после первого запуска.

Возвращаемость первого дня — самый честный ответ на вопрос «игра зацепила?». Всё остальное — про то, есть ли в ней содержание на длинную дистанцию.

Метрики монетизации

Доступны владельцу игры и разработчикам с ролью Просмотр дохода.

МетрикаЧто показывает
ДоходДневной доход в рублях по источникам: РСЯ, внешние рекламные сети, инап-покупки
ARPDAUСредний доход из всех источников на одного игрока в день
Доля платящих игроковПроцент платящих от дневной аудитории
Средняя инап-выручка с платящего игрокаВыручка от покупок на одного платящего
Показы sticky / interstitial / rewarded на игрокаСреднее количество показов каждого формата на игрока в день
Количество in-app покупокСуммарное число покупок в день

Отдельный блок — метрики Рекламной сети Яндекса: Вознаграждение, CPMV (стоимость тысячи видимых показов), CTR и Видимые показы. Последнее определение стоит запомнить: видимым считается показ, когда не менее 50 % площади блока находится в видимой зоне экрана не менее 2 секунд. Из этого следует, что sticky-баннер, который вы прячете через две секунды после появления, показов не приносит.

Осторожно

Метрики монетизации в документации сопровождаются явной оговоркой: приведённая информация не включает налогообложение и не является публичной офертой, частью договора или заверением об обстоятельствах. Никакие цифры из чужих скриншотов и статей не переносятся на вашу игру: доход зависит от страны, платформы, категории и сезона. Планируйте разработку так, чтобы она имела смысл и при нулевом доходе.

Технические метрики

Две штуки, и обе про первые секунды: Game Ready — время от запуска до момента, когда игра загрузила ресурсы и готова к взаимодействию, и Time To Interactive (TTI) — время до завершения всех длительных задач с учётом загруженности браузера.

Смотреть их можно не только агрегированно в Консоли, но и точечно — во вкладке Performance в DevTools, где обе приходят метками в строке Timings. Связь с деньгами прямая: Game Ready тянет за собой конверсию в игровую сессию, а та — всё остальное.

Внешняя аналитика

Встроенные метрики отвечают на вопрос «что происходит», но не отвечают на «где именно игрок отвалился». Для воронок и собственных событий документация предлагает подключить счётчик Яндекс Метрики.

Порядок из документации:

  1. Создать счётчик в Яндекс Метрике.
  2. Снять отметку в поле «Принимать данные только с указанных адресов» — иначе данные с домена каталога не пойдут.
  3. Скопировать код счётчика (НастройкиСчётчикКод счётчика) и вставить его в index.html.
  4. Обновить версию игры в Консоли — игра заново пройдёт модерацию.

Цели настраиваются через тип условия JavaScript-событие: задаёте идентификатор цели, вставляете код цели в нужное место игры и снова обновляете версию.

Важно

Любая внешняя аналитика — это запросы на внешний хост, а внешние хосты в Яндекс Играх регулируются CSP. Правила формата: без путей, без портов после двоеточия, без IP-адресов, протокол не указывается (по умолчанию https и wss), незащищённые http и ws не допускаются. Если счётчик молчит, а в консоли видны заблокированные запросы — идти нужно на вкладку CSP в Консоли и добавлять хост с обоснованием.

Отдельное требование к любым сетевым запросам: игра должна корректно сообщать пользователю об ошибке подключения и предлагать решение. Для аналитики это означает простое правило — её падение не должно быть заметно игроку. Никаких await перед стартом уровня и никаких блокирующих запросов.

// analytics.js — тонкая обёртка, которая никогда не ломает игру
export function track(event, params) {
  try {
    if (typeof ym === 'function' && window.YM_ID) {
      ym(window.YM_ID, 'reachGoal', event, params);
    }
  } catch (e) {
    // Счётчик не загрузился, блокировщик, нет сети — игре всё равно.
  }
}

Какие события считать в маленькой игре

Соблазн размечать всё подряд заканчивается сотней событий, в которых невозможно разобраться. Для игры на несколько экранов достаточно 8–12 событий, отвечающих на четыре вопроса.

Дошёл ли игрок до игры:

  • game_ready — ресурсы загружены (дублирует техническую метрику, но в вашей воронке);
  • first_input — первое осмысленное действие игрока.

Проходит ли он обучение и уровни:

  • level_start с номером уровня;
  • level_complete с номером и временем прохождения;
  • level_fail с номером и причиной.

Взаимодействует ли с монетизацией:

  • rewarded_click — нажал кнопку rewarded;
  • rewarded_granted — награда выдана (пришёл onRewarded);
  • shop_open, purchase_success.

Возвращается ли:

  • session_end с длительностью сессии.

Пара соглашений, которые сильно облегчают жизнь через полгода: имена событий в snake_case и на английском; номер уровня — параметр события, а не часть его имени (level_complete с {level: 7}, а не level_7_complete); никаких свободных текстовых полей.

Связка level_start / level_complete / level_fail даёт самый полезный отчёт для маленькой игры — на каком уровне люди перестают играть. Обычно это конкретный уровень, а не «игра в целом скучная».

Как отличить сигнал от шума

Четыре правила, три из которых прямо есть в рекомендациях документации.

  1. Минимальный период наблюдения — 7 дней. Активность игроков зависит от дня недели, праздников и сезона. Сравнивать вторник с субботой бессмысленно.
  2. Учитывайте задержку в 2–3 дня. Последние точки на графике всегда занижены — они ещё дособираются.
  3. Смотрите метрики в комплексе. Рост одного показателя может ухудшать другие: увеличение количества рекламы поднимает доход и снижает возвращаемость. Это прямая формулировка из документации.
  4. Малые числа не значат ничего. При 30 игроках в день изменение конверсии с 40 % до 50 % — это три человека. Проверять гипотезы на такой аудитории бесполезно; документация советует не вносить изменения вслепую, а использовать A/B-тесты.

И отдельно про единицы: изменение метрики в процентных пунктах и в процентах — разные вещи. Рост с 40 % до 45 % — это 5 процентных пунктов и одновременно рост на 12,5 % относительно прежнего значения. В Консоли под некоторыми метриками показатель «Среднее за неделю» выводится сразу в трёх видах: среднее значение, относительное изменение к прошлой неделе в процентах и абсолютное изменение.

Не собирайте лишнего

Аналитика — это соблазн отправить наружу всё, что под рукой. SDK даёт вам getUniqueID(), имя игрока, ссылку на аватар и платёжный статус — и почти ничего из этого не нужно для ответа на вопрос «на каком уровне отваливаются».

Рабочие принципы:

  • Не отправляйте во внешние сервисы имя, аватар и постоянный идентификатор игрока, если без них не обойтись. Для склейки событий одной сессии достаточно случайного идентификатора, который живёт в памяти и умирает вместе со вкладкой.
  • Не кладите ничего личного в URL и query-строки. Адреса попадают в логи, реферреры и историю браузера.
  • Собирайте события, а не профили. «Уровень 7 провален за 40 секунд» — это данные о геймплее. «Игрок Иван, 34 года, из Казани» — это персональные данные, и обращение с ними регулируется совсем другими нормами.
  • Проверьте, что аналитика не тормозит игру. Отправка события не должна происходить в update(), а батч событий — блокировать переход между уровнями.

Совет

Держите список отправляемых событий и полей в отдельном файле проекта — например, docs/analytics.md, — и держите его коротким. Это и документация для вас через полгода, и готовый контекст для Claude Code: «добавь событие по этой схеме» работает лучше, чем «добавь аналитику».

Что дальше

Мы прошли весь путь: от первой игры до опубликованной, обновляемой и измеряемой. Осталось собрать всё в одном месте — сводный чек-лист перед отправкой на модерацию, где технические требования, SDK, реклама, сохранения, мобильная адаптация, промоматериалы и юридическая часть лежат единым списком с галочками. Это самая практичная глава руководства, и открывать её стоит перед каждой сборкой архива.

Источники

Официальная документация платформы — единственный источник истины по её требованиям.

Нужно подробнее?

Полное обучение разбирает те же темы глубже: уроки с примерами, готовые структуры проектов, развёрнутые чек-листы и файл инструкций для Claude Code — он входит в стоимость. Бесплатные главы при этом остаются открытыми и продолжают дополняться.

Что входит в полное обучение