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

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

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

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

Посетить персонализированный сайт
Показано 1 из 1Все 242 услуг
Разработка систем прогрессии в играх: XP, навыки, метапрогрессия
Сложный
от 1 недели до 1 месяца
Часто задаваемые вопросы

Наши компетенции

Какие этапы разработки игры?

Последние работы

  • image_games_mortal_motors_495_0.webp
    Разработка игры для компании Mortal Motors
    1434
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Пошаговая стратегия в фэнтези сеттинге With Fire And Sword
    972
  • image_games_second_team_604_0.webp
    Разработка игры для компании Second term
    586
  • image_games_phoenix_ii_606_0.webp
    3D-анимация — тизер для игры phoenix 2.
    651
  • image_training-quizzes_kids_shopping_quiz_614_0.webp
    Обучающая викторина для детей «Покупки в магазине»
    13

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

Наша команда — геймдев-инженеры с 8-летним опытом, реализовавшие более 20 проектов с прогрессией для мобильных и PC платформ. Грамотная архитектура прогрессии позволяет сэкономить бюджет на последующие итерации и ускорить запуск. С увеличением retention на 30% окупаемость наступает за 3-6 месяцев. Оцените ваш проект — напишите нам.

Как избежать «стены» в кривой опыта

Кривая опыта без математического обоснования

Формула 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(), а не хранится. Это автоматически обрабатывает добавление и снятие модификаторов. Для active навыков используем 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 месяца после релиза

Свяжитесь с нами для оценки вашего проекта. Мы подберём оптимальное решение под ваш бюджет и сроки. Получите консультацию — проанализируем вашу текущую систему и предложим план улучшений.

Проектирование механик: с чего начинается отзывчивое управление

Прежде чем говорить о геймдизайне, зафиксируем разграничение: геймдизайн — это не «придумать идею». Придумать может любой. Задача — спроектировать систему правил, которая производит конкретный эмоциональный и поведенческий результат. Это инженерная дисциплина, только вместо компилятора — человеческий мозг.

Первая боль: вам кажется, что управление «дубовое», а почему — непонятно. Чаще всего проблема не в коде, а в отсутствии coyote time и jump buffering. Или в линейном ускорении, которое не даёт ощущения веса. Мы это чиним на этапе прототипа.

Какие услуги геймдизайна мы предлагаем

Полный цикл: от концепта до выверенного билда. Под ключ — вы получаете геймдизайн-документ (GDD), таблицы баланса, прототип ключевых механик на Unity/Unreal, и сопровождение вплоть до релиза.

Что входит в работу:

  • Документация: GDD, спецификации механик, нарративные деревья, API для разработчиков
  • Таблицы баланса: прогрессия, экономика, DPS-калькуляторы
  • Прототипы: интерактивные сцены с core loop (движение, бой, инвентарь)
  • Конфигурация в движке: ScriptableObject, DataTable, анимационные событий
  • Проведение плейтестов и итераций по метрикам (удержание, монетизация, retention)

Оцените ваш проект — свяжитесь для расчёта сроков. Подход основан на методологии MDA и опыте 50+ реализованных проектов с 2012 года.

Как проектировать боевую систему: глубокий разбор

Боевая система — самая дорогая ошибка: на первый взгляд простая, на деле — ад из edge cases. Разберём melee combat.

1. Выбор метода hit detection

Hitbox — коллайдеры на оружии. Просто, но при быстрых атаках возникает tunneling: оружие пролетает сквозь противника за кадр. Решение — Physics.CCD (Continuous Collision Detection), но это дорого. Raycast/spherecast — кастуем лучи вдоль траектории оружия. Точнее, меньше зависит от fps. Мы предпочитаем spherecast для action-игр. Подробнее о методах — в Wikipedia.

2. Настройка окон атаки

Каждая атака — три фазы: Startup, Active, Recovery. Длинный startup создаёт «тяжёлые» удары. Короткий recovery даёт агрессивный стиль. В Unity аниматор кидает событие через AnimationEvent, код включает/выключает hitbox. Типичные тайминги для рукопашного боя: startup 200–400 мс, active 100–150 мс, recovery 300–500 мс.

3. Построение 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 мс». Мнения без цифр не принимаются. Фиксируем ощущения, меняем цифры, повторяем.

Свяжитесь для консультации — мы оценим сроки и бюджет вашего проекта. Наши заказчики экономят от 2 до 3 недель на итерациях за счёт чёткого процесса.