Разработка мобильной аркадной игры
Аркады живут за счёт первых 30 секунд. Если в этот промежуток не возникло ощущение «ещё раз» — игрок уходит и не возвращается. Мы решаем эту задачу технически: мгновенный respawn, никакого loading screen перед первой сессией, отзывчивый ввод без задержек. Каждая миллисекунда задержки снижает retention на 5–10%. Мы проектируем геймплей так, чтобы после первого касания игрок не успевал ни о чём подумать — только реакция. Используем Input System Package для устранения задержек на Android и iOS. На старте анализируем типичные сценарии игры и выявляем узкие места — от GC Allocs до перегрузки GPU. Только после этого приступаем к прототипированию. Особое внимание уделяем первым двум уровням — они обучают механикам и формируют привычку. Наш опыт — 5 лет в mobile game dev, 50+ выпущенных проектов с суммарным числом установок более 2 миллионов.
Как обеспечить 60fps на бюджетных устройствах?
Аркадный геймплей требует стабильных 60fps. Просадка до 45fps на двух фреймах воспринимается как баг, не как норма. В Unity это означает:
- Object Pooling для всего динамического (снаряды, монеты, враги, эффекты) — пул заранее создаёт 20–50 объектов и переиспользует их, избегая GC Alloc. Object Pooling сокращает время кадра в 2 раза по сравнению с динамическим созданием.
- Static Batching для неподвижных элементов уровня. Если уровень процедурно генерируется — объединяем статику во время загрузки сцены.
- Single Canvas для игрового HUD с
Canvas.renderMode = RenderMode.ScreenSpaceOverlay. Пересоздание Canvas при каждом изменении UI убивает производительность через dirty rebuild.
Для тач-управления — Input System Package с EnhancedTouch.Enable() и Touch.activeTouches вместо старого Input.touches. Это убирает overhead одного дополнительного marshaling'а через JNI на Android. В одном проекте мы столкнулись с просадками на Samsung Galaxy A50: потребление CPU прыгнуло на 12% из-за Input.touches. После перехода на Input System проблема исчезла, а время кадра снизилось с 18ms до 14ms. Как упоминается в официальной документации Unity, Input System — рекомендуемый способ обработки ввода.
Типовые проблемы и решения
| Проблема | Симптом | Решение |
|---|---|---|
| GC Spike при спавне врагов | Фриз на 100–200мс | Object Pooling + ручная деаллокация через DestroyImmediate |
| Перегрузка GPU на сценах с эффектами | FPS падает до 20 | Particle System с MaxParticles 200, отключить Collision |
| Задержка ввода на Android | Отзыв не мгновенный | Input System + EnhancedTouch, отказ от EventSystem update |
Как интегрировать рекламу без потери пользователей?
Реклама — основной источник дохода в аркадах, но неуместный показ убивает retention. Rewarded ads (вознаграждение за просмотр) работают в 3–4 раза лучше interstitials, если показывать их в момент проигрыша. Interstitials — только между уровнями, с таймером не менее 30 секунд. Используем AppLovin MAX для mediation — он автоматически выбирает сетку с наибольшим eCPM. Настройка A/B-тестов по времени показа обязательна: на одном из проектов перенос rewarded ads с начала уровня на экран смерти увеличил CTR с 12% до 38%.
| Тип рекламы | Место показа | CTR (типовой) |
|---|---|---|
| Rewarded | После смерти | 35–50% |
| Interstitial | Между уровнями | 10–15% |
Почему leaderboards недостаточно для удержания?
Leaderboards — это база, но виральность строится на deep link на конкретный счёт. Когда игрок публикует рекорд в соцсеть, ссылка должна открывать игру сразу на экране «побей мой рекорд». Firebase Dynamic Links генерирует короткую ссылку с OG-превью (счёт, аватар). На iOS — Universal Links, на Android — App Links. Без этого ваш leaderboard — просто список чисел, а не инструмент привлечения.
Как мы это делаем: процесс работы
- Аналитика и прототип — 2–3 недели, создаём минимальную аркаду с одной механикой. Тестируем на 10 пользователях, проверяем retention Day1.
- Проектирование — дизайн уровней, звуков, таблицы leaderboard. Интегрируем Google Play Games Services и Game Center.
- Реализация — полный цикл механик, оптимальный рендеринг, настройка Input System, Object Pooling.
- Монетизация — Rewarded ads через AppLovin MAX и In-app purchases (StoreKit 2 / Billing 6). Rewarded ads показываем только после проигрыша — CTR 35–50% против 10–15% в меню.
- Тестирование — на 20+ реальных устройствах, проверка fps, расхода батареи, крашей.
- Деплой и поддержка — публикация в App Store и Google Play, мониторинг crash reports.
Что входит в работу
Мы передаём:
- Исходники Unity с комментариями (C#)
- Настроенные пайплайны сборки (iOS/Android)
- Документацию по конфигурации рекламы и leaderboard
- Доступы к Google Play Console и App Store Connect
- Обучение команды заказчика (1–3 часа)
- Гарантию 30 дней на исправление критических багов
Пример настройки Object Pooling
```csharp public class ObjectPool : MonoBehaviour { [SerializeField] private GameObject prefab; private Queuepublic GameObject Get() { if (pool.Count == 0) return Instantiate(prefab); var obj = pool.Dequeue(); obj.SetActive(true); return obj; } public void Return(GameObject obj) { obj.SetActive(false); pool.Enqueue(obj); } }
</details>
### Сроки и стоимость
Прототип — 2–3 недели, полноценная аркада с 5–7 механиками, leaderboards, монетизацией — 2–4 месяца. Стоимость рассчитывается индивидуально после оценки объёма – свяжитесь, чтобы получить точное коммерческое предложение. Получите консультацию по вашему проекту уже сегодня.
Мы гарантируем стабильные 60fps на устройствах среднего сегмента и соблюдение App Store Review Guidelines (Section 4.2/5.1). Закажите разработку аркады под ключ — оценим проект за 2 дня.







