Розробка внутрішньоігрової прогресії

Наша компанія з розробки відеоігор веде незалежні проекти, спільно з клієнтом створює ігри та надає додаткові операційні послуги. Досвід нашої команди дозволяє нам охопити всі ігрові платформи та розробити приголомшливий продукт, що відповідає баченню клієнта та перевагам гравців.

Від імерсивних застосунків до ігрових світів і 3D-сцен

Наша виділена команда для VR/AR/MR-розробки, Unity-продакшну і 3D-моделювання та анімації — з власними кейсами і презентаціями.

Відвідати персоналізований сайт
Показано 1 з 1 послугУсі 242 послуг
Розробка внутрішньоігрової прогресії
Складна
від 1 тижня до 1 місяця
Часті питання

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

Які етапи розробки гри?

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

  • image_games_mortal_motors_495_0.webp
    Розробка гри для компанії Mortal Motors
    683
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    862
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    491
  • image_games_phoenix_ii_606_0.webp
    3D-анімація – тизер для гри phoenix 2.
    533

Розробка внутрішньоігрової прогресії

Прогресія — це відчуття зростання. Гравець повинен відчувати, що став сильніше, розумніше, ближче до цілі. Якщо це відчуття пропадає — сесія закінчується. Технічно прогресія — це набір взаємозв'язаних систем: досвід, рівні, навички, розблокування, досягнення, метапрогресія. Кожна потребує власної архітектури.

Як зламати прогресію технічно

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

Формула requiredXP = baseXP * level^exponent на перший погляд працює. Але без моделювання реальних сесій отримуємо або "стіну" — рівень, де гравець застряває на кілька годин — або "провал" — відрізок, який пролітається за 10 хвилин та втрачає цінність.

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

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

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

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

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

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

Архітектура системи прогресії

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

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

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

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

Таке розділення дозволяє тестувати логіку прогресії unit-тестами без запуску Unity.

Skill tree та дерево навичок

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

Passive навички (бонуси до урану, швидкості) зручно реалізувати через систему Stat Modifiers: кожна навичка додає StatModifier з типом (flat, percent additive, percent multiplicative) до потрібного стату. Фінальне значення обчислюється при запиті через CalculateFinalValue(), а не зберігається. Це автоматично обробляє додавання та зняття модифікаторів.

Active навички (здібності) — через Command Pattern: кожна навичка — об'єкт з методами Execute(), CanExecute(), GetCooldownProgress(). Cooldown керується централізовано через AbilitySystem, який оновлюється в Update().

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

Постійний прогрес між ранами — окремий шар даних. Розблокування між ранами (стартові бонуси, нові персонажі, ігрові режими) зберігаються окремо від прогресу всередині раніи, який скидається при смерті.

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

Аналітика прогресії

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

  • Level Distribution — скільки гравців на кожному рівні в момент часу. Якщо 60% застрягли на рівні 15 — там стіна.
  • Time per level — середній час між level-up. Повинна зростати плавно, без скачків.
  • Skill usage rate — які навички вибирають гравці. Якщо один навичка беруть 80% гравців — дерево несбалансоване.
  • Churn by level — відток гравців у розрізі рівнів. Різкий ріст відтоку на конкретному рівні = проблема саме там.

Збираємо через Firebase Analytics з custom events: level_up, skill_unlocked, achievement_completed. Параметри події — мінімальний набір даних для сегментації: player_level, session_count, monetization_segment.

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

Проектування економіки прогресії (3-7 днів). Таблиця цільових сесій, формули XP, структура наград. Обов'язково узгоджується з монетизаційною моделлю.

Архітектура та бекенд (1-2 тижні). Схема даних, API endpoints або PlayFab настройка, стратегія міграції.

Реалізація клієнта (1-3 тижні). ProgressionManager, UI (XP-бар, level-up анімація, skill tree екран), інтеграція з геймплейними системами.

Балансування (ongoing). Перша ітерація після плейтестів — майже гарантовано потребує корректування формул. Закладаємо в план.

Тип системи Орієнтовні терміни
Прості рівні + XP 3-7 днів
XP + дерево навичок 2-4 тижні
Повна мета-прогресія (roguelike) 3-6 тижнів
LiveOps прогресія + сезони 1-2 місяці

Вартість розраховується індивідуально після аналізу ігрової механіки та цільових платформ.