Синематика та відео для ігор
Команда здала білд за тиждень до дедлайну, і тут з'ясовується: катсцена, яка виглядала нормально в редакторі, у збірці розсипається — персонажі застигають на долю секунди, камера дергається, освітлення не відповідає геймплейній сцені. Це типова ситуація, коли синематику роблять в останню момент інструментами, які не призначені для production-якості. Нормальний pipeline для катсцен будується інакше.
Що входить у послугу
- Сторибординг та превіз — аніматик із таймінгом, раскадровка, узгодження з нарративом до початку виробництва
- In-engine синематика — Timeline, Cinemachine (Unity), Sequencer (Unreal)
- Відрендеровані катсцени — pre-rendered відео з інтеграцією в рушій
- Процедурна генерація оточення — для проектів із великим обсягом контенту
- Технічний арт для синематики — 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 підтримують).





