У маленькой игры есть характерная болезнь: разработчик открывает Консоль каждое утро, видит скачок с 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 тянет за собой конверсию в игровую сессию, а та — всё остальное.
Внешняя аналитика
Встроенные метрики отвечают на вопрос «что происходит», но не отвечают на «где именно игрок отвалился». Для воронок и собственных событий документация предлагает подключить счётчик Яндекс Метрики.
Порядок из документации:
- Создать счётчик в Яндекс Метрике.
- Снять отметку в поле «Принимать данные только с указанных адресов» — иначе данные с домена каталога не пойдут.
- Скопировать код счётчика (Настройки → Счётчик → Код счётчика) и вставить его в
index.html. - Обновить версию игры в Консоли — игра заново пройдёт модерацию.
Цели настраиваются через тип условия 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 даёт самый полезный отчёт для маленькой игры — на каком уровне люди перестают играть. Обычно это конкретный уровень, а не «игра в целом скучная».
Как отличить сигнал от шума
Четыре правила, три из которых прямо есть в рекомендациях документации.
- Минимальный период наблюдения — 7 дней. Активность игроков зависит от дня недели, праздников и сезона. Сравнивать вторник с субботой бессмысленно.
- Учитывайте задержку в 2–3 дня. Последние точки на графике всегда занижены — они ещё дособираются.
- Смотрите метрики в комплексе. Рост одного показателя может ухудшать другие: увеличение количества рекламы поднимает доход и снижает возвращаемость. Это прямая формулировка из документации.
- Малые числа не значат ничего. При 30 игроках в день изменение конверсии с 40 % до 50 % — это три человека. Проверять гипотезы на такой аудитории бесполезно; документация советует не вносить изменения вслепую, а использовать A/B-тесты.
И отдельно про единицы: изменение метрики в процентных пунктах и в процентах — разные вещи. Рост с 40 % до 45 % — это 5 процентных пунктов и одновременно рост на 12,5 % относительно прежнего значения. В Консоли под некоторыми метриками показатель «Среднее за неделю» выводится сразу в трёх видах: среднее значение, относительное изменение к прошлой неделе в процентах и абсолютное изменение.
Не собирайте лишнего
Аналитика — это соблазн отправить наружу всё, что под рукой. SDK даёт вам getUniqueID(), имя игрока, ссылку на аватар и платёжный статус — и почти ничего из этого не нужно для ответа на вопрос «на каком уровне отваливаются».
Рабочие принципы:
- Не отправляйте во внешние сервисы имя, аватар и постоянный идентификатор игрока, если без них не обойтись. Для склейки событий одной сессии достаточно случайного идентификатора, который живёт в памяти и умирает вместе со вкладкой.
- Не кладите ничего личного в URL и query-строки. Адреса попадают в логи, реферреры и историю браузера.
- Собирайте события, а не профили. «Уровень 7 провален за 40 секунд» — это данные о геймплее. «Игрок Иван, 34 года, из Казани» — это персональные данные, и обращение с ними регулируется совсем другими нормами.
- Проверьте, что аналитика не тормозит игру. Отправка события не должна происходить в
update(), а батч событий — блокировать переход между уровнями.
Совет
Держите список отправляемых событий и полей в отдельном файле проекта — например, docs/analytics.md, — и держите его коротким. Это и документация для вас через полгода, и готовый контекст для Claude Code: «добавь событие по этой схеме» работает лучше, чем «добавь аналитику».
Что дальше
Мы прошли весь путь: от первой игры до опубликованной, обновляемой и измеряемой. Осталось собрать всё в одном месте — сводный чек-лист перед отправкой на модерацию, где технические требования, SDK, реклама, сохранения, мобильная адаптация, промоматериалы и юридическая часть лежат единым списком с галочками. Это самая практичная глава руководства, и открывать её стоит перед каждой сборкой архива.