Розробка систем прогресування в іграх: XP, навички, метапрогресування

Ми розробляємо системи внутрішньоігрового прогресування під ключ — від простих рівнів до складних метапрогресувань з сезонами. Один із наших проєктів — RPG з деревом навичок на 50 вузлів — спочатку показав відтік гравців 40% на 15-му рівні. Аналіз показав: експоненціальна крива XP не була збалансова

Наші компетенції

Інші послуги студії

VR/AR/MR застосунки на замовлення

Вражайте клієнтів і навчайте команду у віртуальній реальності

Розробка ігор на Unity

Від ідеї до релізу — ігри, які запам'ятовуються

3D-моделювання та анімація

Оживимо ваш продукт в об'ємній графіці та анімації

VR-тренажери промислового обладнання

Тренуємо операторів на техніці без ризику і простою

AR-інструкції для виробництва

Покрокові підказки прямо на обладнанні — без паперу

Safety-тренажери

Відпрацювання НС і техніки безпеки без виходу на об'єкт

VR/AR-тренінги

Навчаємо персонал сервісу, адаптації та soft skills у VR

Навчальні вікторини

Перевірка знань у форматі гри — легко і без стресу

Корпоративні відеоінструкції

Зрозумілі ролики для навчання співробітників і клієнтів

Гейміфікація бізнес-процесів

Мотивуємо команду через ігрові механіки в KPI та HR

Застосунки для інфокіосків

Інтерактивні екрани для магазинів, стендів і офісів

VR/AR-інсталяції

Wow-ефект для брендів на виставках, івентах і в шоу-румах

Віртуальні виставки та музеї

Ваша експозиція доступна з будь-якої точки світу — 24/7

Event-квести та брендовані ігри

Незабутні ігри для конференцій та клієнтських івентів

Часті запитання

Останні роботи

  • image_games_mortal_motors_495_0.webp
    Розробка гри для компанії Mortal Motors
    1515
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    1017
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    648
  • image_games_phoenix_ii_606_0.webp
    3D-анімація – тизер для гри phoenix 2.
    729
  • image_training-quizzes_kids_shopping_quiz_614_0.webp
    Навчальна вікторина для дітей «Покупки в магазині»
    117

Ми розробляємо системи внутрішньоігрового прогресування під ключ — від простих рівнів до складних метапрогресувань з сезонами. Один із наших проєктів — RPG з деревом навичок на 50 вузлів — спочатку показав відтік гравців 40% на 15-му рівні. Аналіз показав: експоненціальна крива XP не була збалансована під реальні ігрові сесії. Після коригування формули та впровадження мігруючої схеми даних відтік знизився до 12%. При цьому Retention Day 7 зріс з 25% до 38%.

Наша команда — геймдев-інженери з 8-річним досвідом, які реалізували понад 20 проєктів з прогресуванням для мобільних та PC платформ. Грамотна архітектура прогресування дозволяє заощадити бюджет на наступні ітерації та прискорити запуск. Зі збільшенням retention на 30% окупність настає за 3-6 місяців. Вартість реалізації простої системи XP починається від $5,000, а повне метапрогресування може коштувати $20,000–$50,000 залежно від складності. Оцініть ваш проєкт — напишіть нам.

Як уникнути «стіни» в кривій досвіду

Крива досвіду без математичного обґрунтування

Формула requiredXP = baseXP * level^exponent на перший погляд працює. Але без моделювання реальних сесій отримуємо або «стіну» — рівень, де гравець застряє на 3-4 години — або «провал» — відрізок, який пролітається за 10 хвилин і втрачає цінність. В одному проєкті 60% гравців досягли 15-го рівня, але тільки 20% пройшли 16-й — типовий сигнал стіни.

Правильний підхід: спочатку визначаємо target session count per level (скільки ігрових сесій нормально витрачати на перехід між рівнями), потім підбираємо формулу під цей target. Моделюємо в таблиці, не вгадуємо в коді. Наприклад, для casual-гри target становить 3-5 сесій на рівень, для mid-core — 5-8.

Стан прогресування в неправильному місці

Зберігати прогрес в PlayerPrefs — це не архітектура, це тимчасове рішення, яке стає постійним. PlayerPrefs не підтримує версіонування схеми: при зміні структури даних старі збереження ламаються. Коли у гри 50 000 користувачів, це катастрофа — втрачаємо до 30% активної бази.

Правильна схема: ProgressionData як C# клас з явною версією схеми, серіалізація в JSON, зберігання через PlayFab Player Data API або власний API. При завантаженні — перевірка версії та міграція даних через MigrationManager з ланцюжком міграцій v1→v2→v3.

Чому PlayerPrefs не підходить для прогресування?

PlayerPrefs — це не реляційна база, а key-value сховище без транзакцій. Наш підхід до версіонування схеми даних кращий за зберігання в PlayerPrefs в 10 разів: жодного втраченого збереження за 2 роки експлуатації на 300 000 гравців.

Критерій PlayerPrefs PlayFab Cloud Власний бекенд
Версіонування Немає Вбудовано (версія схеми) Реалізується
Атомарність Немає CloudScript послідовно Транзакції SQL
Масштабування Немає Автоматичне Вимагає DevOps

Race conditions в мультиплеєрі

При одночасних запитах на нарахування досвіду (завершення матчу + daily bonus + achievement unlock в один момент) без атомарності отримуємо неконсистентний стейт. PlayFab CloudScript виконує операції послідовно для одного гравця — це вбудований захист. На власному бекенді — транзакції в PostgreSQL з SELECT ... FOR UPDATE. В одному проєкті це скоротило десинки на 90%.

Архітектура системи прогресування

Розділення даних та логіки

ProgressionConfig ScriptableObject містить незмінні дані: формули розрахунку XP, таблиці нагород за рівні, дерево навичок. Це налаштовується геймдизайнером без зміни коду.

ProgressionState — поточний стейт гравця: поточний рівень, накопичений XP, розблоковані навички, виконані досягнення. Тільки серіалізовані дані, жодних посилань на Unity-об'єкти.

ProgressionManager — сервіс-посередник: приймає події з геймплею (вбив ворога, виконав квест, знайшов предмет), обчислює зміни стейту, генерує події для UI (level up!, навичка розблокована).

Таке розділення дозволяє тестувати логіку прогресування unit-тестами без запуску Unity. В одному проєкті покриття тестами склало 85%, що скоротило час QA на 40%.

Як побудувати дерево навичок без головного болю?

Дерево навичок — це граф з направленими ребрами. Вузол — SkillNode, ребро — залежність (prerequisites). Реалізуємо як Dictionary<string, SkillNode> з явними списками залежностей.

Система Stat Modifier: кожна навичка додає модифікатор з типом (flat, percent additive, percent multiplicative) до потрібного стату. Фінальне значення обчислюється при запиті через CalculateFinalValue(), а не зберігається. Це автоматично обробляє додавання та зняття модифікаторів. Для активних навичок використовуємо Command Pattern: кожна навичка — об'єкт з методами Execute(), CanExecute(), GetCooldownProgress(). Cooldown керується централізовано через AbilitySystem.

Метапрогресування (roguelike-патерн)

Постійний прогрес між ранами — окремий шар даних. Розблокування між ранами (стартові бонуси, нові персонажі, ігрові режими) зберігаються окремо від прогресу всередині рани, який скидається при смерті. Реалізація: дві структури даних — MetaProgressionState (постійний, CloudSave) і RunState (тимчасовий, LocalSave/InMemory). RunState ініціалізується з MetaProgressionState при старті рани + застосовуються ран-специфічні модифікатори від вибраних перків.

Аналітика прогресування

Без даних не можна балансувати прогресування. Обов'язкові метрики та їх типові цільові значення:

Метрика Цільове значення Індикатор проблеми
Level Distribution <30% гравців на одному рівні Стіна
Time per level Зростання ≤15% між рівнями Скачок >50%
Skill usage rate Жодна навичка >40% вибору Дисбаланс дерева
Churn by level <5% на рівні Рівень-вбивця

Збираємо через Firebase Analytics з custom events: level_up, skill_unlocked, achievement_completed. Параметри події — мінімальний набір даних для сегментації: player_level, session_count, monetization_segment. В одному проєкті аналітика виявила, що 70% відтоку відбувається на 12-му рівні через неправильно налаштовану криву XP — після коригування retention виріс на 22%.

Процес роботи

Як ми впроваджуємо прогресування за 5 кроків

  1. Аналіз цільової аудиторії та ігрових механік (2-3 дні) — визначаємо, які метрики утримання критичні.
  2. Проектування економіки прогресування (3-7 днів) — таблиця цільових сесій, формули XP, структура нагород. Обов'язково узгоджується з монетизаційною моделлю.
  3. Архітектура та бекенд (1-2 тижні) — схема даних, API endpoints або PlayFab налаштування, міграційна стратегія.
  4. Реалізація клієнта (1-3 тижні) — ProgressionManager, UI (XP-бар, level-up анімація, skill tree екран), інтеграція з геймплейними системами.
  5. Балансування (ongoing) — перша ітерація після плейтестів майже гарантовано потребує коригування формул. Закладаємо в план 2-3 ітерації.
Тип системи Приблизні терміни
Прості рівні + XP 3-7 днів
XP + дерево навичок 2-4 тижні
Повна мета-прогресування (roguelike) 3-6 тижнів
LiveOps прогресування + сезони 1-2 місяці
Чек-лист типових помилок
  • Крива XP не прив'язана до цільових сесій — перерахуйте формулу.
  • PlayerPrefs для збереження — замініть на версіонований JSON у хмарі.
  • Немає перевірки атомарності в мультиплеєрі — додайте транзакції.
  • Дерево навичок без бафів через StatModifiers — реалізуйте систему модифікаторів.
  • Метапрогресування та прогресування рани змішані — розділіть структури даних.

Що входить в роботу

  • Архітектурна документація та схеми даних
  • Робочий код ProgressionManager, SkillTree, MetaProgression
  • Unit-тести всіх ключових сценаріїв
  • Інтеграція з аналітикою (Firebase, Unity Analytics)
  • Інтеграція з бекендом (PlayFab, власний сервер)
  • UI-компоненти (XP bar, skill tree, level-up ефекти)
  • Навчання команди замовника
  • Підтримка 2 місяці після релізу

Порівняно з типовими рішеннями, наша система прогресування в 3 рази ефективніша за стандартні криві XP і на 40% швидше впроваджується. Зв'яжіться з нами для оцінки вашого проєкту. Ми підберемо оптимальне рішення під ваш бюджет та терміни. Отримайте консультацію — проаналізуємо вашу поточну систему та запропонуємо план покращень.