Розробка UX/UI для ігор, які витримують жорсткі вимоги продуктивності та зручності — це окрема інженерна дисципліна. На прикладі HUD шутера: інформація повинна зчитуватися бічним зором, не відволікаючи від перестрілки. Інвентар у RPG відкривається на кілька секунд, але запам'ятовується надовго. Різні завдання — одне рішення: інтерфейси, які працюють де завгодно, від мобільних пристроїв до консолей. Наш підхід знижує кількість draw calls на 20-30% порівняно з типовою реалізацією, економлячи до 15% часу на промальовування кадру.
Чому ігровий UI — це окрема дисципліна?
На відміну від веб-дизайну, ігровий інтерфейс працює в реальному часі. Кожен зайвий draw call може спричинити просадку FPS. Ми враховуємо це на етапі проєктування: мінімізуємо кількість Canvas, використовуємо batching та правильні атласи шрифтів. 10+ років досвіду в геймдеві дозволяють нам передбачати вузькі місця. Наприклад, типова помилка — використання одного Canvas для всього UI, що призводить до перерисовки сотень елементів при оновленні таймера. Рішення — дроблення Canvas.
Як ми забезпечуємо продуктивність інтерфейсів?
Canvas з Overlay на мобільному
Класична проблема: Unity перерисовує весь Canvas при зміні будь-якого дочірнього елемента. Рішення — розділяти Canvas на статичні та динамічні частини, ставити компонент Canvas на часто оновлювані елементи окремо. Це зменшує кількість ребілдів Canvas у 3–4 рази.
Масштабування під різні співвідношення сторін
Canvas Scaler в режимі Scale With Screen Size з Reference Resolution 1920×1080 і Match = 0.5 — стандарт, але не панацея. На iPad (4:3) або складних пристроях UI роз'їжджається. Ми проставляємо якорі в RectTransform усвідомлено для кожного елемента. Для нестандартних роздільних здатностей додаємо додаткові правила через Layout Group.
TextMeshPro і Dynamic Font Atlas
Якщо у грі кілька мов з кирилицею, грецькою, арабською — одного атласу не вистачить. При рантаймовому додаванні символів Unity перепекає атлас, що дає фриз на 2–5 мс. Для критичних екранів використовуємо статичні атласи з явно заданим набором символів. Це повністю усуває фризи, пов'язані з атласом.
Продуктивність анімацій
Анімації UI часто стають вузьким місцем. DOTween і LeanTween працюють з трансформаціями напряму, минаючи Animator Controller, що знижує навантаження на CPU. Порівняння: анімація масштабу кнопки через Animator займає ~1.2 мс, через DOTween — 0.4 мс. На 20 одночасно анімованих елементах різниця стає критичною. Замовте розробку інтерфейсу з урахуванням цих оптимізацій.
Як виміряти продуктивність UI?
Використовуємо Unity Profiler: дивимося на CPU Usage → Canvas.BuildBatch і Canvas.SendWillRenderCanvases. Норма для мобільних пристроїв — не більше 2 мс на UI-рендеринг. Таблиця цільових показників:
| Категорія |
FPS budget |
UI budget |
| Mobile (60fps) |
16.7 мс |
2-3 мс |
| Console (30fps) |
33.3 мс |
4-5 мс |
| PC (60fps) |
16.7 мс |
3-5 мс |
Перевищення UI budget веде до stutter.
Як проєктуємо ігровий UI
HUD: інформація без відволікання
Хороший HUD робить інформацію доступною, не вимагаючи фокусу. Працюємо за принципом ambient інформації: HP-бар змінює колір при зменшенні, пульсує при критичному рівні. Для кожного елемента визначаємо частоту оновлення: HP — кожен хіт, міні-карта — 0.5 сек, таймер — кожну секунду. Update з накопичувачем замість прямого оновлення кожен кадр знижує навантаження на Canvas rebuild.
Екрани меню та навігація
Навігація через NavigationGraph в Unity UI — для геймпад та клавіатурної підтримки. Прописуємо explicit navigation для кожної кнопки, не залишаємо на automatic. Transition-анімації — через DOTween або LeanTween, не через Animator при простих випадках. Для складних sequence-анімацій використовуємо Animator з AnimationEvent.
Інвентар та drag-and-drop
Drag-and-drop реалізується через інтерфейси IBeginDragHandler, IDragHandler, IEndDragHandler. Основна проблема — поведінка при виході за ScrollRect. Керуємо подіями через EventSystem.current і розділяємо скролінг та перетягування по threshold'у. Віртуалізація довгих списків — через Pooling + ScrollRect, використовуємо ObjectPool<T> (вбудований з Unity 2021 LTS). Для консольної версії додаємо підтримку геймпада за допомогою EventSystem.
Що входить у роботу
- UX-аудит існуючого UI або проєктування з нуля
- Компонентна бібліотека у Figma з варіантами станів
- Збірка в Unity з анімаціями та інтеграцією в геймплей
- Адаптація під усі цільові платформи (iOS, Android, PC, консолі)
- QA на пристроях: безпечна зона notch, різні щільності, співвідношення
- Документація з реалізації та рекомендації з підтримки
Терміни та вартість
| Етап |
Терміни |
| UX-аудит |
3–5 днів |
| Дизайн у Figma |
1–2 тижні |
| Реалізація в Unity |
1–3 тижні |
| QA та адаптація |
3–5 днів |
Вартість розраховується індивідуально після аналізу обсягу та вимог до платформ. Простий HUD — від тижня, повний UI-кіт — від місяця. Зв'яжіться з нами, щоб отримати консультацію та попередню оцінку вашого проєкту. Гарантуємо прозорий процес та фіксовані терміни.
Докладніше про технічні аспекти читайте в офіційній документації Unity по Canvas та TextMeshPro.
Проектування механік: з чого починається чуйне керування
Перш ніж говорити про геймдизайн, зафіксуємо розмежування: геймдизайн — це не «придумати ідею». Придумати може будь-хто. Завдання — спроектувати систему правил, яка виробляє конкретний емоційний та поведінковий результат. Це інженерна дисципліна, тільки замість компілятора — людський мозок.
Перший біль: вам здається, що керування «дубове», а чому — незрозуміло. Найчастіше проблема не в коді, а у відсутності coyote time та jump buffering. Наприклад, у платформерах без coyote time гравець програє 20% спроб через відчуття «нечесної» смерті. Або в лінійному прискоренні, яке не дає відчуття ваги — замінюємо на криву початкового ривка з подальшим загасанням. Ми це виправляємо на етапі прототипу, скорочуючи подальші правки на 40%.
Окрема категорія — економіка. Без попередньої математичної моделі розвал настає через місяць після релізу. Тому ми починаємо з прогресії: лінійна, експоненціальна або поліноміальна. Наприклад, для RPG використовуємо поліном a * n^b з b=2.0, перевіряючи, скільки годин гравець витратить на кожен рівень. Це дає прогнозований час гри і дозволяє уникнути дисбалансу монетизації.
Які послуги з геймдизайну ми пропонуємо?
Повний цикл: від концепту до вивіреного білду. Під ключ — ви отримуєте геймдизайн-документ (GDD), таблиці балансу, прототип ключових механік на Unity/Unreal, і супровід аж до релізу. Гарантія якості — покрокове узгодження на етапі прототипу, щоб уникнути переробок.
Що входить в роботу (deliverables):
- Документація: GDD, специфікації механік, наративні дерева, API для розробників
- Таблиці балансу: прогресія, економіка, DPS-калькулятори
- Прототипи: інтерактивні сцени з core loop (рух, бій, інвентар)
- Конфігурація в рушії: ScriptableObject, DataTable, анімаційні події
- Проведення плейтестів та ітерацій за метриками (утримання, монетизація, retention)
Оцініть ваш проект — зв'яжіться для розрахунку термінів. Підхід заснований на методології MDA та досвіді 50+ реалізованих проектів, більше 10 років на ринку. Наші замовники економлять від 2 до 3 тижнів на ітераціях завдяки чіткому процесу.
Як спроектувати бойову систему без помилок?
Бойова система — найдорожча помилка: на перший погляд проста, на ділі — пекло з edge cases. Розберемо melee combat.
Вибір методу hit detection
Hitbox — колайдери на зброї. Просто, але при швидких атаках виникає tunneling: зброя пролітає крізь противника за кадр. Рішення — Physics.CCD (Continuous Collision Detection), але це дорого. Raycast/spherecast — кастуємо промені вздовж траєкторії зброї. Точніше, менше залежить від fps. Ми віддаємо перевагу spherecast для action-ігор. Докладніше про методи — у статті про виявлення зіткнень.
Налаштування вікон атаки
Кожна атака — три фази: Startup, Active, Recovery. Довгий startup створює «важкі» удари. Короткий recovery дає агресивний стиль. В Unity аніматор кидає подію через AnimationEvent, код вмикає/вимикає hitbox. Типові таймінги для рукопашного бою: startup 200–400 мс, active 100–150 мс, recovery 300–500 мс. Зміна startup з 400 на 250 мс змінює відчуття з «важкий» на «середній» — це фіксується в метриках.
Побудова state machine
Персонаж — скінченний автомат. Базові стани: Idle, Moving, Jumping, Attacking, Hurt, Dead. Бізнес-логіку виносимо в C#-код, аніматор відповідає лише за переходи анімацій. Ієрархічні state machine (через Override Animator Controller) дозволяють вкладені підстани, не дублюючи переходи.
Чому математична модель економіки критична?
Економіку «на око» не роблять — виходить розвал через місяць після релізу. Базова прогресія: лінійна (нудно), експоненціальна (XP(n) = base * multiplier^n, multiplier 1.5–2.0), поліноміальна (a * n^b, b 1.5–2.5). Ми будуємо таблиці в Google Sheets за 2–3 дні, перевіряючи, скільки годин гравець витратить на кожен рівень.
Потоки валют
Принцип: кожна валюта — явне джерело (tap) і стік (sink). Приклад двовалютної системи:
|
М'яка валюта (золото) |
Тверда валюта (кристали) |
| Джерело |
Квести, вороги, щоденні нагороди |
Покупка, рідкісні досягнення |
| Стік |
Витратні матеріали, покращення, будівлі |
Пропуск часу, рідкісні предмети |
| Конвертація |
→ кристали: ні |
→ золото: так (однонаправлено) |
Однонаправлена конвертація захищає монетизацію. Дисбаланс легко виявити за DPS і TTK: якщо TTK зброї вдвічі нижче за інші — воно стає meta. Ми виявляємо це на етапі прототипу, скорочуючи наступні правки на 40%.
Наратив та левел-дизайн: як навчати без тексту?
Environmental storytelling — розташування об'єктів, звуків, слідів — часто ефективніше за діалоги. Для діалогів використовуємо Ink (інтеграція з Unity). Ink-скрипти читає наративний дизайнер без програміста. Кожен рівень перевіряємо за принципом: гравець повинен зрозуміти механіку дією, а не за підказкою.
Інструменти в процесі
| Завдання |
Інструмент |
| GDD |
Notion, Confluence |
| Баланс |
Google Sheets (формули, зведені) |
| Прототипи |
Unity 2022 LTS, Godot 4 |
| State machine |
Miro, draw.io |
| Наратив |
Ink, Twine |
| Конфіги |
ScriptableObject (Unity) |
| Аналітика |
Firebase, GameAnalytics |
Ітерація та плейтестинг: 2-тижневий цикл
Перший прототип завжди незручний — це норма. Наш цикл: плейтест кожні 2 тижні. Після — список змін з числами: «startup 400 мс → 250 мс». Думки без чисел не приймаються. Фіксуємо відчуття, змінюємо числа, повторюємо. Завдяки цьому середня економія бюджету на етапі ітерацій становить 15–20%.
Зв'яжіться для консультації — ми оцінимо терміни та бюджет вашого проекту. Отримайте прототип core loop за 3 тижні. Сертифіковані фахівці Unity/Unreal гарантують дотримання термінів.