Видео 11Блок 3 - Gameplay Programmer Thinking

Data-driven Unreal Engine

Как отделить данные от логики, чтобы баланс и настройки не требовали перекомпиляции.

Главная боль

Любой баланс требует перекомпиляции

Главная мысль

Данные отдельно. Логика отдельно.

Data-driven Unreal Engine

Главная боль

Любой баланс требует перекомпиляции.

Зачем это существует?

Gameplay system должна быть стабильной, а данные должны меняться быстро. Если каждое изменение урона, скорости или cooldown требует C++ rebuild, итерация становится слишком дорогой.

Темы

  • USTRUCT
  • DataAsset
  • PrimaryDataAsset
  • BP for data
  • C++ for systems
  • Static vs runtime data

Greybox Arena

  • Weapon configs
  • Projectile configs
  • Gameplay effect configs

Где люди обычно ломаются?

  • Хардкодят баланс прямо в C++ классах
  • Делают Blueprint не только данными, но и местом всей логики
  • Не различают immutable config и runtime state
  • Дублируют одинаковые настройки в разных Actor'ах
  • Не понимают, когда нужен DataAsset, а когда достаточно USTRUCT

Как это выглядит в production?

Production gameplay code часто выглядит так: C++ описывает систему, DataAsset описывает конкретную конфигурацию, Blueprint помогает собрать authoring workflow для дизайнеров.

Главная мысль

Данные отдельно. Логика отдельно.