Синематика и видео для игр
Команда сдала билд за неделю до дедлайна, и тут выясняется: катсцена, которая выглядела нормально в редакторе, в сборке рассыпается — персонажи застывают на долю секунды, камера дёргается, освещение не соответствует геймплейной сцене. Это типичная ситуация, когда синематику делают в последний момент инструментами, которые не предназначены для production-качества. Нормальный pipeline для катсцен строится иначе.
Что входит в услугу
- Сторибординг и превиз — аниматик с таймингом, раскадровка, согласование с нарративом до начала производства
- In-engine синематика — Timeline, Cinemachine (Unity), Sequencer (Unreal)
- Рендеренные катсцены — pre-rendered video с интеграцией в движок
- Процедурная генерация окружения — для проектов с контентом большого объёма
- Технический арт для синематики — rig для камер, кастомные треки Timeline
In-Engine синематика: Timeline и Cinemachine
In-engine катсцены имеют очевидное преимущество перед pre-rendered видео: они используют актуальные ассеты, реагируют на состояние игрока (кастомизация персонажа, динамическое освещение) и не требуют отдельного хранения видеофайлов. За это приходится платить сложностью production-pipeline.
Архитектура Timeline
Timeline в Unity — это не просто инструмент анимации, это полноценная система управления временем для любых игровых объектов. Каждый PlayableDirector управляет TimelineAsset, который содержит треки:
| Тип трека | Назначение |
|---|---|
AnimationTrack |
Анимации персонажей и объектов |
CinemachineTrack |
Переключение виртуальных камер |
AudioTrack |
Музыка, озвучка, SFX |
ActivationTrack |
Включение/выключение объектов |
ControlTrack |
Запуск дочерних Timeline, Particle Systems |
SignalTrack |
Вызов событий в коде |
Кастомные треки через PlayableBehaviour + PlayableAsset — ключевая возможность для сложных катсцен. Например, трек для управления post-processing overrides, плавного blend DOF, или синхронизации субтитров с аудиодорожкой.
Cinemachine: виртуальные камеры
Cinemachine меняет подход к работе с камерой принципиально. Вместо одной камеры с ключевыми кадрами — система виртуальных камер (CinemachineVirtualCamera, CinemachineFreeLook, CinemachineStateDrivenCamera), между которыми главная камера плавно переключается по правилам blend.
Для синематики наиболее интересны:
CinemachineVirtualCamera — основной инструмент. Каждая виртуальная камера имеет свою Body (как камера следует за целью) и Aim (как камера смотрит на цель). Комбинации:
-
Transposer+Composer: камера следует за персонажем, сохраняя его в кадре -
OrbitalTransposer+POV: камера игрока от третьего лица -
DoNothing+DoNothing: полностью статичная камера, управляется ключевыми кадрами
Dolly Track (CinemachinePathBase + CinemachineTrackedDolly) — камера движется по сплайну. Удобно для пролётов и кинематографических проходов: дизайнер задаёт путь в сцене, аниматор контролирует позицию на пути через Timeline.
Camera Blend в CinemachineBrain: переход между виртуальными камерами может быть Cut, Ease In/Out, Linear или через custom AnimationCurve. Для диалоговых сцен стандарт — Cut между репликами, Ease для эмоциональных переходов.
Проблемы и решения
Jitter при следовании за персонажем — частая проблема, когда частота обновления физики (FixedUpdate) не совпадает с рендером. Решение: CinemachineVirtualCamera > Body > Binding Mode: World Space + включить Stabilize Roll. Если недостаточно — кастомный CinemachineExtension с дополнительным сглаживанием позиции.
Несоответствие освещения между геймплеем и катсценой — возникает при переключении между сценами Unity или при использовании разных Lighting Settings. В URP/HDRP решается через Volume Profile Override на CinemachineVirtualCamera или через Timeline ControlTrack для активации нужного Volume.
Lip sync — для диалоговых сцен с озвучкой используем Salsa LipSync (Unity) или нативный Audio2Face (Unreal + MetaHuman). Базовый уровень — viseme-driven анимация через AnimationTrack с ключевыми кадрами под каждую реплику.
Sequencer в Unreal Engine
Unreal's Sequencer — функциональный аналог Timeline, но с рядом отличий. Для синематики кинематографического уровня Sequencer удобнее:
- Movie Render Queue вместо Play Mode для финального рендера — даёт path tracing, motion blur с subsampling и консистентный результат кадр-в-кадр
- Level Sequence Actor позволяет вкладывать Subsequences — удобно для больших проектов, где над разными частями катсцены работают параллельно
- Control Rig интеграция: прямое управление FK/IK rig в Sequencer без переключения в Animation Blueprint
Для MetaHuman персонажей Sequencer — основной инструмент: анимации лица через Face AR или Performance Capture пишутся прямо в Sequencer-трек.
Процедурная генерация: Wave Function Collapse
Для проектов с большим количеством контента (roguelike, open world) ручное создание каждого уровня нецелесообразно. Wave Function Collapse (WFC) — алгоритм тайловой генерации, основанный на принципе энтропии из квантовой механики (название метафорическое, алгоритм детерминированный).
Суть: каждая ячейка сетки может быть одним из N тайлов. Алгоритм итеративно «коллапсирует» ячейки — выбирает тайл, опираясь на правила совместимости с уже установленными соседями. Ячейка с минимальной энтропией (наименьшим количеством допустимых вариантов) коллапсируется первой.
Практическое применение в Unity: библиотека mxgmn/WaveFunctionCollapse или кастомная реализация под конкретную игру. Правила совместимости задаются либо вручную (JSON с описанием, какие тайлы могут соседствовать), либо обучаются на примерных уровнях.
BSP (Binary Space Partitioning) — классический алгоритм для генерации dungeon-уровней. Рекурсивно делит пространство на комнаты, соединяет коридорами. Проще в реализации, менее гибок в результате, но предсказуем — хорошо работает для roguelike, где важна читаемость уровня.
Для синематики процедурная генерация применяется и в другом контексте: процедурная анимация камеры (handheld camera shake, breathing idle) через Cinemachine Noise или кастомные Perlin noise-based контроллеры — добавляет кинематографическую живость без ручного keyframing каждого движения.
Pre-rendered видео: когда и зачем
Pre-rendered катсцены оправданы для интро/аутро, где качество важнее интерактивности. Рендерим через Unity Recorder или Movie Render Queue (Unreal), финальный монтаж и цветокоррекция — в DaVinci Resolve.
Интеграция в движок: .mp4/.webm через VideoPlayer (Unity) или Media Framework (Unreal). Важный момент для мобильных платформ — видео не всегда декодируется аппаратно на всех целевых устройствах; заранее проверяем поддержку кодека (H.264 — безопасный выбор, H.265 — лучшее качество, но не все Android поддерживают).





