Разработка внутриигровой прогрессии

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

От иммерсивных приложений до игровых миров и 3D-сцен

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

Посетить персонализированный сайт
Показано 1 из 1 услугВсе 242 услуг
Разработка внутриигровой прогрессии
Сложная
от 1 недели до 1 месяца
Часто задаваемые вопросы
Наши компетенции
Какие этапы разработки игры?
Последние работы
  • image_games_mortal_motors_495_0.webp
    Разработка игры для компании Mortal Motors
    671
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Пошаговая стратегия в фэнтези сеттинге With Fire And Sword
    860
  • image_games_second_team_604_0.webp
    Разработка игры для компании Second term
    490
  • 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 месяца

Стоимость рассчитывается индивидуально после анализа игровой механики и целевых платформ.