Розробка мобільної гри Tower Defense
Клієнт приходить з готовою ідеєю: "Хочу TD, як Fieldrunners, але з котами та лазерами". Перша проблема — продуктивність. На старому Android з 50+ ворогами нативна A* в Unity кладе кадр у 200 мс. Друга — вежі повинні не просто стріляти, а взаємодіяти через систему апгрейдів та синергій. Розповідаємо, як вирішуємо ці задачі під ключ.
Чому Tower Defense — складний жанр для розробки?
TD вимагає одночасної роботи десятків ворогів, кожної вежі, анімацій та ефектів без гальм. Ще складніше — баланс. Одна недооцінена вежа — і рівень стає прохідним за 10 секунд замість 3 хвилин. Але головний технічний біль — пошук шляху. Мова не просто про A* — для мобільних пристроїв з обмеженим CPU кожна мілісекунда на рахунку. Ми перепробували всі методи: від NavMesh з Crowd до Flow Field. І останній показав стабільні 0.3 мс на 200 агентів — у 20 разів швидше за A*.
Pathfinding: порівняння підходів
| Метод | Швидкість (100 ворогів) | Масштабованість | Складність реалізації |
|---|---|---|---|
| A* на кожного агента | 6–8 ms | Падає з числом агентів | Низька |
| NavMesh + Crowd | 2–4 ms | Середня | Середня |
| Flow Field Pathfinding | 0.3 ms | Лінійна | Висока |
Ми використовуємо Flow Field Pathfinding у продакшені вже 5 років. Обчислюємо одне поле напрямків один раз при зміні маршруту (наприклад, поставили вежу, що перекрила прохід). Кожен агент читає свій напрямок з NativeArray<float2> — жодного запиту до навігаційної сітки в рантаймі. В Unity це реалізується через Job System. Для агентів — DOTS Entities.
Data-driven дизайн веж
Вежі — ScriptableObject TowerDefinition. Поля: attackRange, attackSpeed, damage, targetingStrategy (First, Last, Strongest, Closest). Strategy Pattern: ITargetingStrategy з єдиним методом FindTarget(List<Enemy> inRange). Хочете новий режим — пишете один клас. Апгрейди — масив TowerUpgrade[] в тому ж SO: кожен рівень містить delta до параметрів. Дизайнер бачить все в інспекторі.
Візуальний зворотний зв'язок критичний: при наведенні або розміщенні показуємо зону ураження через LineRenderer у формі кола. При встановленні вежі перевіряємо, чи не блокує вона шлях повністю, через Physics2D.OverlapCircleAll. Це запобігає багам, коли вороги не можуть дійти до фінішу.
Як ми оптимізуємо продуктивність?
Крім Flow Field ми використовуємо ряд технік. Для ворогів — DOTS Entities та пулінг. Кожен ворог — компонент з NavAgent та Health. Ми не створюємо і не знищуємо об'єкти — тільки вмикаємо/вимикаємо. Це позбавляє від GC. Для ефектів — VFX Graph з буферизацією частинок. На сцені одночасно до 500 ворогів при 60 FPS на середніх пристроях.
Для UI використовуємо растровий кеш та уникаємо перемальовування. Всі дані рівня зберігаються в ScriptableObject, завантажуються асинхронно. Покупки та реклама ініціалізуються на екрані завантаження.
Як ми будуємо процес
- Аналіз — розбираємо механіку ігор-аналогів, досвід команди (понад 10 реалізованих мобільних проєктів)
- Прототип — MVP на Unity з 2 вежами та 1 карткою
- Пайплайн контенту — таблиці балансу, конфіги веж, завантаження спрайтів
- Реалізація — повний цикл: UI, магазин, прогресія, StoreKit 2 / Billing 6
- Тестування — TestFlight + Firebase App Distribution
- Реліз — публікація в App Store та Google Play
Варіанти монетизації
| Тип монетизації | Опис | Інструменти |
|---|---|---|
| In-App Purchases | Купівля веж, скінів, валюти | StoreKit 2 (iOS), Billing 6 (Android) |
| Реклама | Банери, винагороджувані відео | AdMob, Appodeal |
| Підписка | Premium-доступ без реклами | Вбудовані SDK |
Кожен варіант налаштовується індивідуально. Ми також реалізуємо A/B-тестування балансу монетизації.
Що входить у розробку?
- Дизайн-документ з геймплейною механікою
- Вихідний код на C# з архітектурою ECS (DOTS)
- Інструмент дизайнера (ScriptableObject + кастомний редактор)
- Інтеграція покупок (StoreKit 2 / Billing 6) та реклами (AdMob)
- Приймальні тести на 5+ реальних пристроях
- Гайд з балансу та конфігурації
Строки: від 3 до 5 місяців залежно від кількості типів веж та рівнів.
Гарантія та підтримка
Наша команда має 5-річний досвід розробки ігор в Unity. Ми гарантуємо стабільну роботу під навантаженням до 500 агентів на екрані. Після релізу — 3 місяці безкоштовної підтримки з виправлення багів та доналаштування балансу.
Якщо ви шукаєте команду для своєї Tower Defense, зв'яжіться з нами — оцінимо проєкт за 1 день. Отримайте консультацію по вашому проєкту прямо зараз.







