尚未检测到更新。GitHub 发布版本后会显示在这里。
Unofficial playable ad concept for Stack Ball (Azur Games), built with Claude Code: save the kitty
翻译准备中
正在加载完整 README。
查看完整 README ↗Играть: https://spisusha.github.io/stackball-save-the-kitty/play/ Варианты для A/B-теста и живая воронка: https://spisusha.github.io/stackball-save-the-kitty/demo/ Research: https://spisusha.github.io/stackball-save-the-kitty/research/
Неофициальный концепт playable-рекламы для игры Stack Ball (Azur Games), сделанный к собеседованию на позицию AI Game Designer. Это не реклама Azur Games; Stack Ball и все права на игру принадлежат Azur Games.
English summary: an unofficial playable ad concept for Azur Games' Stack Ball, built with Claude Code. Hold to smash through the tower, save the kitty before the spikes come down. One self-contained HTML file (~0.5 MB, no external requests), MRAID / Meta / Google CTA, A/B variants and funnel events.
Механика Stack Ball (держи палец — шар пробивает кольца, отпусти перед чёрным сектором) плюс крючок, которого нет в текущей рекламе игры: внизу котик в клетке, сверху опускаются шипы. Успел пробиться вниз — котик спасён, дальше экран с кнопкой в магазин. Проиграл — «So close! 83%» и одна попытка ещё.
Базовый процесс создания плейбла: анализ рекламы, выбор игры и гипотезы, сборка, варианты для теста, метрики.
Research. Разобрал активную рекламу Azur в Meta Ad Library (около 330 объявлений; Stack Ball — 5 из 26 самых показываемых, запуск 28.09.2026) и конкурента Helix Jump (его лучшие объявления крутятся почти год — признак окупаемого креатива). Нашёл кейс ironSource: первый плейбл Stack Ball проигрывал видео и выиграл только после доработки подсказок. Собрал требования сетей и метрики (IPM, CTR, доля начавших, доля дошедших до конца, удержание D1). Подробно — research и docs/RESEARCH.md.
Выбор игры и гипотеза. Stack Ball: живой хит Azur, механика в одно касание укладывается в 25 секунд. Гипотеза: эмоция и давление («спаси котика, пока опускаются шипы») поднимут IPM по сравнению с чистым геймплеем. Почему не копия: тот же геймплей, но новый крючок, который можно проверить в тесте (docs/DECISIONS.md).
Плейбл. Интро с котиком крупным планом, подсказка «держи», игра, режим огня, победа или проигрыш «почти получилось», end card с кнопкой в магазин. Баланс проверен автоматическим ботом за игроков разной скорости: средний игрок спасает котика за 7–15 секунд, медленный получает «так близко».
Варианты для A/B-теста. В каждом меняется одна вещь, чтобы было понятно, что сработало:
| Вариант | Что меняется | Гипотеза |
|---|---|---|
| A. Классика | Только механика | Контроль |
| B. Спаси котика | + котик и шипы | Эмоция и давление поднимут IPM |
| C. Выбери шар | B + выбор: метеорит (бьёт 2 кольца), ракета (в 1,7 раза быстрее), огненный (огонь через 6 колец) | Выбор в первые секунды увеличит долю начавших играть |
| + Показ | Первые 3 секунды игра играет сама, потом «Теперь ты!» | Меньше людей растеряется на старте |
Метрики. Плейбл отправляет события воронки: загрузка, первое касание (и время до него), 10 колец, режим огня, проигрыш (где и на скольких процентах), повтор, победа, показ end card, клик «Играть». На странице вариантов они видны в реальном времени (docs/SPEC.md).
Чем сделано. Весь код написан с Claude Code. Three.js — 3D, всё собрано из простых фигур в коде (без моделей и Blender). Звуки синтезированы в браузере (WebAudio), файлов нет. Vite + vite-plugin-singlefile собирают всё в один HTML.
Каждый вариант сравниваем с A. Главная метрика — IPM (установки на 1000 показов), за ней удержание D1 и окупаемость (ROAS). Решаем только когда разница значимая: рекламные сети показывают это в отчёте. Воронка событий нужна, чтобы понять причину.
| Результат | Что это значит | Что делаем дальше |
|---|---|---|
| B выше A по IPM, D1 не хуже | Котик и шипы приводят больше людей, и это те же игроки | B в основную ротацию. Следующий тест — сам крючок: другой питомец, скорость шипов, длина интро |
| B выше A по IPM, но D1 ниже | Котик привлекает тех, кто ждёт игру про котика, а в Stack Ball его нет | Смотрим окупаемость, а не только IPM. Пробуем финал, где после спасения показана настоящая игра, или крючок ближе к игре |
| B на уровне A | Эмоция не сработала, причину ищем в воронке | Мало начавших — длинный старт: тест с показом или короче интро. Много проигрышей на шипах — давление слишком сильное, шипы медленнее |
| C: начавших больше, IPM тот же | Выбор шара вовлекает, но не продаёт | Оставляем выбор, только если вырос и CTR на end card. Иначе убираем: это лишний шаг до игры |
| Показ: касаются раньше, начавших больше | Меньше людей теряется на старте | Включаем показ по умолчанию в победившем варианте |
| Показ: начавших меньше | Люди смотрят и уходят, не дождавшись своей очереди | Убираем показ или сокращаем до 1–2 секунд |
Где искать причину в воронке
| Где теряем людей | Что это значит | Что пробуем |
|---|---|---|
| Загрузился → Начал играть | На старте непонятно, что делать, или интро слишком длинное | Заметнее подсказка, показ, интро короче |
| Начал играть → Пробил 10 колец | Проигрывают на первых чёрных секторах | Чёрные сектора позже и реже в начале башни |
| Проиграл: на скольких процентах | Проигрыш у самого котика — «почти получилось» работает. Проигрыш в начале — просто сложно | Если проигрывают рано, облегчаем начало. Если у котика и потом кликают «Играть», баланс не трогаем |
| Увидел end card → Нажал «Играть» | Финальный экран не убеждает | Отдельный тест end card: текст, кнопка, обещание награды |
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗