In-Engine Cutscenes (Cinematics)
Creating In-Engine Cutscenes (Cinematics)
An in-engine cutscene is not just "cheaper than prerendered". It's living content: characters in the cutscene use the same shaders and lighting as in gameplay, react to the player's hardware, and wear what the player put on. Prerendered videos cannot do that. In our practice, we develop in-engine cutscenes that solve this: seamlessly integrate into gameplay and do not break immersion. But in-engine cinematics require a separate pipeline — randomly running Timeline and recording yields shaky cameras, rigid animations, and gaps between gameplay and cutscene.
How Timeline works in cutscenes
In Unity, the center of cinematics is Timeline. It is a sequencer with tracks: Animation Track for characters, Cinemachine Track for cameras, Audio Track for music and voiceover, Signal Track for events (trigger effects, switch gameplay state), Activation Track for enabling/disabling objects.
Each character in the cutscene gets an Animation Track with animation keys. Important: animations in Timeline work in Apply Root Motion or Override Transform mode — the choice affects whether the character moves in world space or stays in place. Mixing modes in one cutscene causes character "jumps" when exiting Timeline back to Animator.
Why Cinemachine is critical
Cinemachine provides a set of virtual cameras for each angle. Camera transitions are handled via CinemachineBrain on the Main Camera with Default Blend settings or individual CinemachineBlend between camera pairs. Cut vs Ease In/Out vs Custom Curve — the transition type depends on the emotional rhythm of the scene: sharp cut for action moments, smooth ease for emotional reveal.
Typical mistake: all cameras in Cinemachine Track have the same priority, causing random blending when switching between virtual cameras. Correct: the active camera during Timeline playback is controlled via Cinemachine Track, other virtual cameras have Priority = 0 and do not affect CinemachineBrain. According to official Cinemachine documentation, this approach guarantees correct camera priority.
How to achieve seamless transition between gameplay and cutscene
The hardest part of in-engine cinematics is not making a beautiful scene, but making a seamless transition from gameplay to cutscene and back.
Upon entering a cutscene: disable player input (Input System — disable action map), freeze gameplay Animator (not StopPlayback — set speed = 0 or disable the Component), transfer camera control to Cinemachine Track. Upon exit: reverse order. If the character stands at a position different from the start at the end of the cutscene, a smooth blend back via Animator is needed.
On one project with a boss-intro cutscene, the player's position at the end of Timeline differed from the gameplay position by 2 units — upon exit the player "teleported". Solution: the final frame of Timeline was covered by a loading screen for 0.5 seconds with simultaneous character repositioning. Simple but invisible.
Subtitles and dialogues. Synchronizing subtitles with the audio track is done via Signal Track with a custom SignalReceiver that shows/hides subtitles based on time stamps. Alternative: Yarn Spinner or Ink integration with Timeline — for games with branching dialogues inside cutscenes.
Optimizing in-engine cutscenes
Timeline is not free in terms of performance. On mobile platforms, 5+ characters with Skinned Mesh Renderer animated simultaneously, plus complex lighting — drop to 20–30 fps.
Optimization approaches:
- LOD during cutscene — force switch to LOD0 for main characters, LOD1 for background
- Occlusion Culling — enable in camera settings for Timeline
- Pre-bake lighting — for cutscenes with fixed light positions, use Baked Lighting instead of Real-time
- Recording — for platforms with strict limitations (Nintendo Switch), consider prerendered + transition masking via loading screen
| Error |
Consequence |
Solution |
| Same Cinemachine camera priority |
Random camera blending |
Active camera via Cinemachine Track, others Priority=0 |
| Root Motion in Timeline without considering initial position |
Character teleportation on exit |
Use Override Transform or loading screen |
| No LOD during cutscene |
FPS drop on mobile |
Force LOD for main characters |
Cutscene production stages
- Storyboard — sequence of angles, timing, key moments. Before opening Unity.
- Layout — object placement, rough cameras in Cinemachine, timing in Timeline without final animations.
- Animation pass — character animations in Animation Track, motion capture data or manual keyframe.
- Camera polish — final angles, lens settings in Cinemachine (Field of View, Dutch angle, noise profiles for handheld camera).
- Sound + VFX — audio in Audio Track, VFX via Activation Track.
- Polish — Post-processing, colour grading through Volume in the cutscene.
- Transitions — debug entry/exit into gameplay.
Details of cutscene pipeline
Each stage requires expertise in animation, sound design, and optimization. We use Agile methodology for fast iteration and minimal revisions.
What is included in the work
- Storyboard and script with timing
- Timeline and Cinemachine setup (all cameras, transitions, signals)
- Character animation (keyframe or mocap with cleanup)
- Dialogue and subtitle integration
- Optimization for target platform (LOD, culling, baked lighting)
- Testing seamless transitions on actual gameplay
- Integration documentation and support during implementation
Our team has 5+ years of experience in cutscene development, having delivered over 70 projects for mobile and PC platforms. We guarantee adherence to deadlines and budget.
| Scale |
Timeline |
| Short cutscene (15–30 sec, 2–3 cameras) |
3–7 days |
| Dramatic scene (1–2 min, dialogue, VFX) |
2–4 weeks |
| Final/intro cutscene AAA quality |
4–8 weeks |
Cost is determined by timing, animation complexity, and number of characters in the scene. On average, the client saves up to 40% of budget by choosing in-engine over prerendered. Get a preliminary estimate for your project — contact us.
Cinematics and Video for Games
A cutscene that looks great in the editor can turn into a slideshow in the production build: characters freeze, camera jerks, lighting doesn't match gameplay. We've encountered this dozens of times on projects for PC and mobile platforms. A proper pipeline for creating game cinematics is built from the start, not in the final week. Below is how we structure this process.
What's Included in the Service
- Storyboarding and previs – animatic with timing, storyboard, narrative alignment before production begins
- In-engine cinematics – Timeline, Cinemachine (Unity), Sequencer (Unreal)
- Rendered cutscenes – pre-rendered video with engine integration
- Procedural generation of environments and animation – for large-scale content projects
- Technical art for cinematics – camera rigs, custom Timeline tracks
Why Are In-Engine Cutscenes More Advantageous Than Pre-Rendered?
In-engine cutscenes use actual assets, respond to player state (character customization, dynamic lighting) and do not require separate video file storage. The trade-off is the complexity of the production pipeline. But for 70% of modern projects, this approach is justified: disk space savings (up to 90% for multi-cutscene games) and the ability to adapt to different resolutions without re-rendering.
Timeline Architecture
Timeline in Unity is not just an animation tool but a full time management system for any game object. Each PlayableDirector manages a TimelineAsset containing tracks:
| Track Type |
Purpose |
AnimationTrack |
Character and object animations |
CinemachineTrack |
Switching virtual cameras |
AudioTrack |
Music, voiceover, SFX |
ActivationTrack |
Enabling/disabling objects |
ControlTrack |
Launching child Timelines, Particle Systems |
SignalTrack |
Calling events in code |
Custom tracks via PlayableBehaviour + PlayableAsset are key for complex cutscenes. For example, a track for controlling post-processing overrides, smooth DOF blend, or synchronizing subtitles with audio tracks. Over the years, we've implemented over 20 custom tracks for specific tasks.
Cinemachine: Virtual Cameras
Cinemachine fundamentally changes the approach to camera work. Instead of a single camera with keyframes, it's a system of virtual cameras (CinemachineVirtualCamera, CinemachineFreeLook, CinemachineStateDrivenCamera) between which the main camera smoothly transitions according to blend rules.
For cinematics, the most interesting are:
- CinemachineVirtualCamera – the main tool. Each virtual camera has its own Body (how the camera follows the target) and Aim (how the camera looks at the target). Combinations:
- Transposer + Composer: camera follows the character, keeping them in frame
- OrbitalTransposer + POV: third-person player camera
- DoNothing + DoNothing: fully static camera, controlled by keyframes
- Dolly Track (
CinemachinePathBase + CinemachineTrackedDolly) – camera moves along a spline. Designer sets the path in the scene, animator controls position on the path via Timeline.
- Camera Blend in
CinemachineBrain: transition between virtual cameras can be Cut, Ease In/Out, Linear, or via custom AnimationCurve. For dialogue scenes, the standard is Cut between lines, Ease for emotional transitions.
Problems and Solutions
Jitter when following a character – a common problem when physics update frequency (FixedUpdate) doesn't match rendering. Solution: CinemachineVirtualCamera > Body > Binding Mode: World Space + enable Stabilize Roll. If insufficient, a custom CinemachineExtension with additional position smoothing. Tested on projects with 30-60 FPS.
Lighting mismatch between gameplay and cutscene – occurs when switching between Unity scenes or using different Lighting Settings. In URP/HDRP, solved via Volume Profile Override on CinemachineVirtualCamera or via Timeline ControlTrack to activate the required Volume.
Lip sync – for dialogue scenes with voiceover, we use Salsa LipSync (Unity) or native Audio2Face (Unreal + MetaHuman). Basic level is viseme-driven animation via AnimationTrack with keyframes per line.
How Does Sequencer in Unreal Engine Simplify the Workflow?
Unreal's Sequencer is a functional analog of Timeline, but with several differences. For cinematic-level cutscenes, Sequencer is more convenient:
- Movie Render Queue instead of Play Mode for final render – provides path tracing, motion blur with subsampling, and consistent frame-by-frame results
- Level Sequence Actor allows nesting Subsequences – convenient for large projects where different parts of a cutscene are worked on in parallel
- Control Rig integration: direct FK/IK rig control in Sequencer without switching to Animation Blueprint
For MetaHuman characters, Sequencer is the main tool: facial animations via Face AR or Performance Capture are written directly into the Sequencer track.
Pre-Rendered Video: When and Why
Pre-rendered cutscenes are justified for intros/outros where quality matters more than interactivity. We render via Unity Recorder or Movie Render Queue (Unreal), final editing and color correction in DaVinci Resolve.
Engine integration: .mp4/.webm via VideoPlayer (Unity) or Media Framework (Unreal). Important for mobile platforms – video may not be hardware-decoded on all target devices; we check codec support in advance (H.264 – safe choice, H.265 – better quality but not all Android support it).
Cutscene Production Process
For each project, we go through these stages:
| Stage |
Duration (days) |
Result |
| Script + storyboard |
2–5 |
Approved script, storyboard |
| Previsualization (animatic) |
3–7 |
Draft with timing |
| In-engine assembly |
5–15 |
Finished cutscene in engine |
| Custom tracks + technical art |
2–5 |
Solving specific tasks |
| Testing and optimization |
1–3 |
Smooth 30+ FPS on target devices |
| Final render and integration |
1–2 |
Pre-rendered video or build |
Timelines are approximate and depend on scene complexity (number of characters, length, platform). Pricing is calculated individually – we'll evaluate your project free of charge upon request.
Procedural Generation: Wave Function Collapse for Assets and Animation
For projects with large amounts of content (roguelike, open world), manual creation of every level is impractical. Wave Function Collapse (WFC) is a tiled generation algorithm based on the principle of entropy (the name is metaphorical, the algorithm is deterministic). The gist: each grid cell can be one of N tiles; the algorithm iteratively "collapses" cells by selecting a tile based on compatibility rules with neighbors.
Practical application in Unity: the mxgmn/WaveFunctionCollapse library or a custom implementation for a specific game. Compatibility rules are set either manually (JSON describing which tiles can neighbor) or learned from example levels.
BSP (Binary Space Partitioning) – a classic algorithm for dungeon levels. Simpler to implement but less flexible in results. For roguelikes, it's a good choice.
For cinematics, procedural generation is also applied in another context: procedural camera animation (handheld camera shake, breathing idle) via Cinemachine Noise or custom Perlin noise-based controllers – adds cinematic liveliness without manual keyframing every movement.
Typical Mistakes When Creating Cutscenes
-
Ignoring performance: a cutscene with 20+ active virtual cameras can consume all FPS. Solution – use Priority and disable inactive cameras.
-
Lack of fallback for mobile platforms: pre-rendered video must have an H.264 fallback, otherwise older devices will show a black screen.
-
Overloading Timeline: tracks without organization turn the project into a mess. Rule – group by type (Animation, Audio, Control) and use Sub-Timeline for long scenes.
Why Entrust Cinematic Creation to Us?
With 10+ years in game development, we've implemented cinematics for over 50 projects – from mobile platforms to PC and consoles. Certified Unity (Unity Certified Developer) and Unreal Engine (Unreal Authorized Training Partner) specialists. We guarantee stable cutscene performance on all target devices.
Contact us for an evaluation of your script. Order turnkey cinematic development – from storyboarding to final build.