Условие
В вашей F2P онлайн-игре есть механика ежедневных заданий: игроки получают опыт (один из основных способов получения exp) и игровую валюту. Для выполнения нужно совершить игровую активность в рамках core-механики.
Особенности:
- Задания генерируются после завершения предыдущих или при отказе игрока (за игровую валюту).
- В день можно выполнить неограниченное число заданий.
- Задания различаются по сложности (есть указание в карточке) и наградам.
- С ростом игрового уровня задания усложняются и приносят больше наград.
- Все игровые действия логируются.
Ваша задача: исследовать механику и найти узкие места или точки роста.
Опишите подробно:
- Какие гипотезы будете проверять и как.
- В каких срезах и какие метрики будете изучать.
- Какие графики и таблицы используете для иллюстрации.
Решение
Подход
Daily Quests — это типичная engagement loop: задание → активность в core → reward → желание сделать ещё. Узкие места ищем по принципу:
- Воронка квеста: получение → принятие → завершение → получение награды.
- Воронка между квестами: завершил → взял следующий или ушёл.
- Экономика: что игроки делают с реварды? Тратят ли?
- Ретеншн через квесты: возвращаются ли в следующий день из-за квестов?
Гипотезы
| # | Гипотеза | Как проверить |
|---|---|---|
| H1 | Часть квестов слишком сложна — на них юзеры массово отказываются | Distribution отказов по difficulty; CR завершения по difficulty |
| H2 | Часть квестов слишком лёгкая — юзеры выполняют, но не вовлекаются | Time-to-completion по difficulty; повторные сессии после лёгких квестов |
| H3 | Cost отказа в валюте слишком высокий — юзеры терпят неинтересный квест | % отказов от % завершений по difficulty; падение DAU при «провисании» квестов |
| H4 | Награда за quest обесценивается на high-level (инфляция игровой валюты) | Сравнение спенда валюты в разных уровнях |
| H5 | Игроки, выполняющие 3+ квеста в день, имеют выше D7 retention | Cohort retention by daily-quest-count |
| H6 | Первый квест после релога — критичен. Если он сложен, юзер уходит | CR первой сессии по difficulty первого квеста |
| H7 | Награда не покрывает стоимость core-активности (energy / time) | Net economy per quest type |
Метрики и срезы
Метрики
| Метрика | Что показывает |
|---|---|
| Quest funnel CR | получено → принято → завершено |
| Skip rate | % отказов на каждой сложности |
| Median time to complete | сложность правильная? |
| Quests per DAU | вовлечённость в механику |
| Quest completion → next quest | retention внутри сессии |
| D1/D7 retention by quest behavior | связь с long-term retention |
| ARPDAU by quest behavior | монетизация |
| % sessions with quest | привычка |
| Currency net flow per quest | экономика |
Срезы
- Уровень игрока: новички (1–10) / средние (11–30) / high-level (31+). Эффекты разные.
- Тип квеста (если категории есть): «убей X врагов», «зайди в режим Y», «крафт Z».
- Сложность: easy / medium / hard.
- Платящий / не платящий: киты часто реагируют иначе.
- Часть дня: квесты могут «теряться» в нечётное время.
- Платформа: mobile vs PC, если кросс-платформа.
Графики и таблицы
- Воронка квеста: bar-chart с долями {received → accepted → completed → reward_claimed} с группировкой по difficulty.
- Skip rate by difficulty: stacked bar — на каждом уровне difficulty доля {skipped, completed, abandoned}.
- Time-to-completion distribution (boxplot или violin) по difficulty и уровню игрока. Видно outliers — задания, которые либо «слишком долгие», либо «мгновенные».
- Cohort retention table: DAU день 1 → день 7. Когорты — по
quest_completed_d1 = {0, 1-2, 3-5, 6+}. Видна связь «больше квестов → выше retention». - Time series: % DAU, выполнивших ≥ 1 квест по дням; средний skip rate. Подсвечивают системные сдвиги (после патча).
- Heatmap «quest type × outcome»: какие типы квестов чаще скипают.
- Currency-flow Sankey: откуда приходит валюта (quest reward, store, etc.) и куда тратится.
Реализация — типовые SQL/Python
-- Воронка квеста
SELECT
difficulty,
COUNT(DISTINCT CASE WHEN event = 'received' THEN quest_id END) AS received,
COUNT(DISTINCT CASE WHEN event = 'accepted' THEN quest_id END) AS accepted,
COUNT(DISTINCT CASE WHEN event = 'completed' THEN quest_id END) AS completed,
COUNT(DISTINCT CASE WHEN event = 'rewarded' THEN quest_id END) AS rewarded
FROM quest_events
WHERE dt = CURRENT_DATE - INTERVAL '7 days'
GROUP BY difficulty;# Связь активности в квестах и retention
import pandas as pd
events = pd.read_sql("...quest events...", conn)
users = pd.read_sql("...registrations + sessions...", conn)
quest_d1 = (events.query("days_since_install == 0")
.groupby("user_id")["quest_id"].nunique()
.rename("quests_d1"))
users = users.join(quest_d1, on="user_id").fillna(0)
users["quests_d1_bucket"] = pd.cut(users["quests_d1"],
bins=[-1, 0, 2, 5, 100],
labels=["0", "1-2", "3-5", "6+"])
# D7 retention by bucket
ret = (users.groupby("quests_d1_bucket")
.apply(lambda d: d["d7_returned"].mean()))Анализ / интерпретация
Возможные находки:
- Найдено: на «hard» квестах skip rate 60% при низкой стоимости отказа → упрощать или уменьшать награду за лёгкие, чтобы юзеры брали hard.
- Найдено: D7 retention для 6+ квестов в первый день вдвое выше, чем для 0 → daily quests критичны для retention, нужно повышать активацию в механике.
- Найдено: на high-level (31+) награда в валюте не успевает за инфляцией → нужно scaling rewards быстрее.
- Точки роста: добавить «пропустить за реквест в группу» (соц-механика); вариативность типов квестов; chains (3 квеста подряд → bonus).
Подводные камни
- Survivor bias. Анализируем активных, не учитываем тех, кто уже ушёл из-за квестов.
- Causality vs correlation. «Юзеры, делающие 6+ квестов, имеют выше retention» — может быть, что они и так engagement-ные, а квесты ни при чём. Проверяйте через A/B (отключите квесты у части юзеров).
- Too many segments. Слишком детальные срезы → мало данных, шум. Балансируйте.
- Не учесть стоимость отказа. «60% skip rate» может быть связано не со сложностью, а с дешёвым skip-cost.
- Игнорировать неравный baseline на разных уровнях. На low-level игрок может выполнять 10 квестов в час, на high-level — 1 в час. Сравнивать «среднее по уровню».
- «Логи квестов» — исследуйте логи на полноту. Часто
event = 'received'логируется, а'rewarded'— нет. Воронка ломается.
Эталонный ответ
Структура исследования:
- 7 гипотез, каждая привязана к измеримой метрике.
- Воронка квеста + skip rate by difficulty — главный визуал.
- Cohort retention by quest activity — связь с долгосрочным retention.
- Currency net flow — экономика.
- Срезы: уровень игрока, тип квеста, платящий/не, время суток.
- Точки роста: соц-механики, chains, scaling rewards с уровнем.
Главное — связать поведение в механике с долгосрочными метриками (retention, ARPDAU), а не только описать «как игроки нажимают кнопки».