Динамические офферы в мобильных играх: как подобрать предложение под конкретного игрока

Один и тот же пак на поражении, на иссушении энергии и на входе в новый этап — это не оффер. Это витрина. Студия видит рост ARPU после скидки и называет это персонализацией. Игрок видит, что игра ждёт, пока ему станет плохо, и потом предлагает купить выход. Разница не в модели. Разница в том, собираете ли вы предложение из сигналов этого игрока или показываете общий каталог в «удачный» момент.
Получить sandboxЭто TOFU/MOFU-разбор основной темы MONE: как подобрать состав, цену и момент показа под конкретного игрока. Для Founder, CEO, Producer и Monetization Lead. Вы уходите с картой четырёх сигналов и трёх выходов, которые можно подписать до SDK. Сроки и пороги ниже — утверждения сайта mone.tools, а не обещание для вашего тайтла. Не считайте безымянные карточки жанров доказанными результатами.
Что на самом деле такое динамический оффер
Динамический оффер — это не «скидка, которая меняется». Это решение из трёх частей, собранное из четырёх сигналов. MONE описывает замкнутый цикл: собрать данные → прочитать поведение на Player Journey Maps (PJM) → выдать оффер и спот внутри правил дизайнера → откалибровать в изолированном A/B-тесте. Слова «оффер и спот» здесь — продукт: состав SKU, цена внутри Hard Limits и момент, который Smart Triggers имеет право использовать.

Если любой из трёх выходов фиксирован навсегда, у вас статический магазин с красивым названием. Если любой из четырёх сигналов не доезжает до решения, модель угадывает по одному срезу — обычно по платежу или по панике.
Публичный пайплайн сайта (утверждение сайта): SandBox за 1–2 часа на шаге аудита, телеметрия за 1–2 дня, запуск персонализации за 2–3 дня, когда есть Hard Limits и когорты. Полное подключение персонализации — меньше недели (утверждение сайта). Эти часы не заменяют встречу, на которой продюсер подписывает, какие сигналы вообще можно использовать.
Минимум для пилота ML-персонализации на сайте: 5,000 уникальных игроков в месяц. Ниже порога всё равно соберите карту сигналов на бумаге. Оффер без трафика лучше витрины, которую вы не умеете объяснить.
Четыре сигнала, без которых «персональный» пак — лотерея
Сигнал — это не «ещё одно событие в Amplitude». Это поле, которое меняет хотя бы один выход: состав, цену или момент. Если поле не меняет выход, это логирование, не персонализация.
| Сигнал | Что читаете | Что ломается без него |
|---|---|---|
| Прогресс | Этап, гейт, Battle Pass, незакрытый апгрейд | Оффер на контент, который игрок ещё не открыл или уже перерос |
| Баланс | Soft / hard / энергия / билеты в момент решения | Пак «ресурса, которого полно» или скидка, когда казна полная |
| История покупок | Первая покупка, повтор, давность, отказ, refund | Один SKU для Engaged Free и Whale; мёртвая вторая покупка |
| Сессия | Фейлы подряд, idle, длина сессии, спот UI | Показ на панике или в момент, когда поверхность оффера закрыта |
Прогресс — не уровень в профиле
Прогресс говорит, какой контент вообще имеет смысл. Игрок на гейте 12 не должен видеть пак гейта 3 «потому что он дешёвый». Игрок, который закрыл ветку, не должен получать ускоритель этой ветки. На сайте споты офферов живут внутри PJM: поражение, иссякание ресурса, завершение улучшения, новый этап. Прогресс решает, какой SKU из белого списка вообще кандидат. Цена — следующий шаг, не первый.
Потребуйте до пилота:
- Словарь этапов и гейтов, которые Event List умеет отдать без правки боя.
- Запрет предлагать SKU закрытого или уже пройденного контента (black list по прогрессу).
- Отдельное правило для Battle Pass: темп сезона ≠ скидка на весь трек.
- Явный «ещё рано»: оффер, который ждёт гейт, а не ломает его.
Если прогресс не в решении, персонализация оптимизирует платёж против дизайна. Это не основная тема MONE. Это конфликт.
Баланс — контекст казны, не триггер распродажи
Баланс отвечает на вопрос «нужен ли этот ресурс сейчас». Игрок с полной энергией не должен получать пак энергии, даже если модель «уверена». Игрок с нулём soft и живым гейтом — кандидат на точечный пак, не на −70% всего магазина.
Зафиксируйте:
- Какие валюты участвуют в решении. Остальные — вне оффера.
- Пороги «мало / достаточно / избыток» по сегменту, не одно число на всех.
- Запрет скидки, когда казна выше порога «достаточно».
- Связку баланс × прогресс: ресурс имеет смысл только на открытом гейте.
Баланс без прогресса даёт аптечку в лобби. Прогресс без баланса даёт сундук, который некуда тратить.
История покупок — чтобы не лечить всех одной ценой
История отделяет первую покупку от второй, Whale от Engaged Free, отказ от «ещё не видел». Без неё динамический оффер схлопывается в витрину с персональным заголовком. Retention-First на сайте должен блокировать показ, который учит ждать распродажу. Правило бессмысленно, пока вы не знаете, покупал ли этот игрок вчера тот же SKU со скидкой.
Зафиксируйте:
- Окна: никогда не платил / платил давно / платил в этом сезоне / платил в этой сессии.
- Потолок скидки разный для первой покупки и для Whale. Один прайс — не персонализация.
- Запрет повторять тот же пак сразу после отказа или refund.
- Отдельную клетку «мёртвая вторая покупка»: первая прошла, повторный магазин тот же.
Не подменяйте историю платежа UA-метой. Мета канала полезна маркетингу. Оффер в сессии читает, что игрок уже сделал в игре.
Сессия — момент, а не «сейчас, пока открыто»
Сессия решает, можно ли показать оффер в этом кадре. Серия фейлов — не автоматическая распродажа. Idle после победы — не тот же спот, что idle на гейте. Impression Caps на игрока и на сессию — часть оффера, не отдельный «антиспам» в чате LiveOps.
Потребуйте:
- Список живых поверхностей UI, которые пилот имеет право использовать. Новых попапов нет.
- Правило паники: N фейлов подряд не открывает скидку выше подписанного потолка.
- Кап на сессию и на сутки. Smart Triggers без капа — спам с скором.
- Fallback: если сессия короткая или телеметрия молчит, игрок видит дефолтный магазин.
Три выхода: состав, цена, момент
Четыре сигнала бесполезны, если вы меняете только один выход. Частый антипаттерн: цена пляшет, состав всегда «стартовый пак», момент всегда «после поражения». Это динамическая скидка, не динамический оффер.

| Выход | Что подписывает студия | Типичная ошибка |
|---|---|---|
| Состав | Белый список SKU × сегмент × прогресс | Косметика на иссушении, бустер на честном гейте |
| Цена | Диапазон и потолок скидки внутри Hard Limits | −70% как единственный рычаг «персонализации» |
| Момент | Спот, кап, запрет паники, Fallback | Показ, потому что модель «уверена», а UI закрыт |
Состав — какой пак, не «какой баннер»
Состав отвечает: какие SKU и в какой связке. Игроку на иссушении энергии нужен ресурс гейта, не новый скин. Whale, который уже купил боевой пак, не должен видеть тот же пак с другой цифрой. White / black list на сайте живут в Management Console именно для этого: модель предлагает из разрешённого, не из всего каталога.
Соберите на одной странице:
- Кандидаты SKU по клеткам PJM, не общий каталог.
- Запрещённые связки (косметика + паника, бустер + честный гейт).
- Максимум позиций в одном оффере. Три SKU «на всякий случай» — это витрина.
- Правило «один оффер — одна работа»: закрыть гейт, восстановить ресурс, ускорить сезон.
Цена — коридор, не характер модели
Dynamic Pricing на сайте — механизм внутри Hard Limits, не право переписать прайс-лист. Цена может двигаться с платёжеспособностью, прогрессом и контекстом сессии. Она не может выйти за пол и потолок, которые экономика подписала как баланс. Скидка без потолка учит ждать. Цена без состава — это купон на случайный товар.
Момент — спот, который уже есть в клиенте
Момент — это не cron. Это спот, который дизайнер уже поставил: поражение, ресурс, апгрейд, новый этап. Пилот, которому нужен новый UI, — это другой проект. Smart Triggers имеют право выбрать спот из подписанного списка и промолчать, если Impression Cap или Retention-First сказали «нет». Молчание — валидный оффер. Пустой показ — нет.
Когда это ещё не персонализация
Назовите антипаттерн вслух, пока его не назвал игрок в сторе.
- Один SKU, три цены, ноль сигналов кроме «платил / не платил».
- Скидка после серии фейлов как единственный Smart Trigger.
- Баннер «для тебя» на общем каталоге.
- Оффер, который нельзя выключить без сборки клиента.
- Прирост конверсии первой покупки при падении D7/D30. На сайте удержание — ограждение, не график тщеславия.
Если любой пункт про ваш текущий магазин, вы ещё на аудите, не на пилоте. Исторический SandBox как раз для этого: шесть месяцев событий могут показать, где витрина не совпадает с сегментом, пока аналитика на сайте стоит 0 $.
Кто владеет решением, а не «модель разберётся»
Цикл умирает, когда оффер «настраивает вендор». Используйте разделение в духе RACI. R = делает работу, A = принимает решение, C = советуются, I = информируют.

| Роль | Сигналы | Состав / цена / момент | Стоп |
|---|---|---|---|
| Продюсер | A: какие сигналы в скоупе | A: Hard Limits, списки, капы | A: выключить оффер за минуты |
| Аналитик | R: качество, окна, сегменты | C: какая метрика должна сдвинуться | R: D7/D30 рядом с ARPU |
| LiveOps / экономика | C: словарь гейтов и валют | R: белый список SKU, полы цен | C: не сломать сезон |
| Разработчик | R: Event List, сессия, Fallback | I: не новый UI на пилот | R: откат без ресабмита |
| Вендор | C: сопоставимые срезы PJM | R: выдача внутри консоли | I, пока студия не расширила |
Чеклист (распечатайте)
- Четыре сигнала названы: прогресс, баланс, история покупок, сессия. Каждый меняет хотя бы один выход.
- Три выхода подписаны отдельно: состав, цена, момент. Нельзя «подвигать только скидку» и назвать это пилотом.
- White / black list SKU и Hard Limits живут в одном месте, которое читает продюсер.
- Impression Caps и запрет паники записаны. Smart Triggers могут промолчать.
- Fallback проверен: при молчании модели игрок видит живой дефолтный магазин.
- Event List отдаёт четыре сигнала без правки ядра боя. Новых попапов в пилоте нет.
- Если будете тестировать, есть пак базовой линии: ARPU/LTV, 1st Pay Conv., D7/D30, окно, знаменатель.
- Трафик не ниже 5,000 уникальных игроков в месяц для ML-пилота либо цикл явно «только карта офферов и аудит».
- Встреча решения на неделе 5 стоит в календаре до запуска недели 1, если подключаетесь.
Главное
- Динамический оффер — состав, цена и момент, собранные из прогресса, баланса, истории покупок и сессии. Витрина с персональным заголовком — не оффер.
- Сигнал, который не меняет выход, можно не логировать для пилота. Выход, который не читает сигнал, — это скидка наугад.
- Hard Limits, списки и капы — часть оффера. Модель предлагает. Студия решает, что можно показать этому игроку сейчас.
- Молчание Smart Triggers — валидный результат. Показ «потому что скор высокий» на закрытой поверхности — нет.
- Карта оффера — вход в один экспериментальный цикл, а не его замена. SandBox может показать, где витрина не совпадает с игроком; масштаб всё равно требует памятки A/B с D7/D30.
Запросите SandBox, а не лицензию
Если у вас примерно шесть месяцев событий и продюсер, который может зафиксировать сигналы и коридор, следующий шаг — исторический аудит: сегменты, PJM, споты офферов и отчёт, который можно держать рядом с текущим стеком. Начните с пути аудита MONE / SandBox или с пайплайна. Консоль студии: dash.mone.tools. Аналитика — бесплатный слой; оплата персонализации, по сайту, начинается только после того, как A/B-тест подтвердит прирост ARPU.
Читайте также
- От аудита до масштаба: персонализация монетизации в одном цикле
- Player Journey Map для мобильных игр: как превратить путь игрока в инструмент монетизации
- Как сохранить контроль над игровой экономикой при использовании ИИ
- Как увеличить доход мобильной игры без повышения базовых цен и агрессивных скидок
