RuntimeRecordingCamera Documentation

Runtime Recording Camera 2.0.0 User Documentation Unreal Engine 5.6, 5.7 and 5.8 | Windows 64-bit Copyright 2026 CelestiaDominance. All Rights Reserved.

WHAT THE PLUGIN DOES

Runtime Recording Camera records the scene from a camera while your game is running. Use the supplied Recording Camera Actor for automatic following, orbiting and cinematic lens controls, or pass your own registered camera component to the Recording Manager.

Choose local H.264 MP4 video or an opaque PNG image sequence. MP4 mode falls back to PNG if the Windows video encoder cannot initialize. Always check Get Output Path to discover what was actually created.

Recording is local to one game instance. One recording session can run in that game instance at a time. The recorder captures the 3D camera view; it does not record audio, the desktop, or screen-space HUD/UMG overlays. It is not a replay system, network streaming service or Movie Render Queue wrapper.

YOUR FIRST RECORDING IN BLUEPRINT

1. In your gameplay Blueprint, call Spawn Recording Camera with a valid Target Actor from the current world. Store the returned Recording Camera Actor reference. 2. Choose a movement mode and recording quality. The default is Follow Only at 1920 x 1080. 3. Set the camera's Output Mode to MP4 (PNG Fallback), or choose PNG Sequence explicitly. 4. Call Start Recording Direct with the camera reference, an unused output filename and a target frame rate. For example, Recordings/Take001.mp4 and 30 FPS. A relative filename is resolved beneath the game's Saved directory. 5. Branch on the returned Boolean. True means recording setup succeeded. Actual frames are captured on subsequent game ticks. 6. Call Stop Recording Keep Camera when the take ends. This closes the output and leaves the camera available for another take. 7. Get the Recording Manager through Get Game Instance Subsystem. Check Was Last Recording Successful, Get Saved Frame Count and Get Output Path. If a call fails, read Get Last Error or Get Recording Status.

Use a new filename for each take. Existing videos and frame-sequence folders are protected from replacement. You control input bindings, buttons and gameplay events in your own project.

For an interactive Windows save dialog, use Start Recording With Dialog instead of Start Recording Direct. Its return value is false if the user cancels or recording cannot start. Open Save File Dialog can also be used on its own; cancellation clears its output path.

The dialog needs an interactive rendered application. It intentionally returns false in unattended or commandlet runs. Use Start Recording Direct for those workflows where a rendered local game is available.

CAMERA ACTOR OR YOUR OWN CAMERA

Recording Camera Actor contains a Spring Arm root, a standard Camera, a Cine Camera and an optional visual marker. Cine Camera is active by default. These native components are retained for compatibility with existing Blueprints.

Spawn Recording Camera is a convenience function that requires a target. A nonzero Spawn Location is preserved. A zero vector keeps the legacy shortcut: spawn 400 cm behind and 100 cm above the target. To start at the exact world origin, spawn Recording Camera Actor directly with Spawn Actor From Class and configure it yourself.

You can also place or spawn a Recording Camera Actor without a target. Use Fixed Position and set its transform for a stationary shot. With a target assigned, Fixed Position keeps its location and turns to look at the target. Set Target Actor changes tracking without teleporting the camera. Self-targets and targets from a different world are rejected.

Get Active Recording Camera returns the active native Cine Camera, otherwise the standard Camera. To use the standard camera, deactivate Cine Camera and activate Camera. Get Cine Camera Component, Get Camera Component and Get Spring Arm Component expose the native components for advanced control.

To record an existing camera from your own actor, get Recording Manager and call its Try Start Recording with that camera component. The component must be registered and belong to the same game instance's current game world. You can pass either a Camera Component or a Cine Camera Component. The manager uses its transform, projection and post-process settings.

For a custom camera owned by Recording Camera Actor, pass that component directly to the manager. Ownership checks still associate the session with that actor. The actor's own start node chooses its native camera components.

MOVEMENT MODES

Follow Only: follows behind the target's forward direction, with Follow Distance and Follow Height offsets.

Orbit Around: moves around the target at Orbit Speed in degrees per second, using Follow Distance and Follow Height.

Dynamic Orbit: periodically chooses a new yaw speed, distance variation and height variation. Configure the minimum/maximum change interval, yaw speed limits, height offsets, distance jitter and blend speed. Negative yaw speeds allow orbit direction changes.

Front Follow: follows in front of the target. Lateral jitter and vertical variation have separate ranges, change intervals and blend speeds. Front Follow Blend Speed controls the overall positional blend.

Top Down: selects overhead positions within Top Down Height Min/Max and Top Down Horizontal Radius. Its interval limits determine how often it chooses a new offset, and Top Down Blend Speed controls the transition.

Free Move: your Blueprint or C++ controls translation. When a target is assigned, the camera turns toward it. The plugin does not create movement input bindings.

Fixed Position: keeps its position and looks toward an assigned target. Without a target, its transform stays under your control.

Use Set Movement Mode to change modes and reset their internal transition state. Follow Distance, Follow Height and other distances use Unreal units, normally centimeters. Smooth Speed controls tracking interpolation. Visual Settings > Motion contains Camera Lag Speed and Camera Lag Max Distance for the actor's movement smoothing.

Min Follow Distance and Max Follow Distance bound the desired distance from the target in following modes. They also affect dynamic and top-down shots, so raise Max Follow Distance when requesting a higher overhead camera. Obstacles can force the camera closer than the preferred minimum.

COLLISION

Enable Collision activates camera-channel sphere sweeps. Geometry must block the Camera collision channel for the recorder to avoid it. The camera and its tracked target are ignored by the sweeps.

Follow Collision Probe Radius controls the safety sphere. Follow Collision Pullback adds clearance away from a hit surface. The movement code checks the desired position, the line from the target and the interpolated travel path. Collision takes priority over the preferred minimum follow distance.

The actor computes the full follow offset. The native spring arm therefore stays at zero length; adding another manual arm offset can change the intended framing. Use the actor's follow and collision settings for normal operation.

RESOLUTION, FRAME RATE AND BITRATE

The existing quality enum labels map to these output sizes: - 1K: 1280 x 720. - 2K: 1920 x 1080. - 4K: 3840 x 2160. - 8K: 7680 x 4320.

Get Resolution From Quality returns the current actor preset. Get Resolution For Quality accepts a preset directly, and Get Recording Quality Options lists their labels. The labels are kept for Blueprint compatibility; use the pixel dimensions when describing delivery requirements.

The manager's Try Start Recording accepts custom even dimensions from 2 to 8192 pixels per axis, with a maximum of 33,554,432 pixels per frame. It accepts target frame rates from 1 to 240 and bitrate values from 1 to 1,000,000 kbps. The encoder can impose additional hardware or codec limits; a valid plugin setting does not guarantee MP4 encoding at that size.

Actor defaults are 1920 x 1080, 60 FPS and 20,000 kbps. Bitrate is in kilobits per second: 20,000 means approximately 20 Mbps before container overhead. It affects MP4 encoding, not PNG compression.

Frame Rate on the actor is used when starting a take. Apply Visual Settings also copies Visual Settings > Capture > Frame Rate to that property. Apply visual settings first, then set your final frame rate or use Start Recording Direct's Frame Rate argument. Changes to output resolution, bitrate or frame rate require stopping and starting another take.

Frame rate is a capture target, not a guaranteed output rate. The recorder renders and reads back a camera view, then encodes or writes its output. A busy frame can miss a capture deadline. It captures at most once per tick and uses real capture timestamps rather than building an unbounded backlog.

MP4 timestamps preserve variable capture intervals. A PNG sequence includes FrameTimes.csv with zero-based frame numbers and their capture times in seconds. The first captured frame starts at time zero. Importing PNGs at a fixed frame rate in another application ignores these variable intervals unless that application also uses the timing data.

Higher resolution, screen percentage, effects, frame rate and PNG output can increase GPU, CPU, memory, disk and readback costs. Start with a modest resolution and measure the intended game on the intended hardware. 4K/8K presets are available but do not imply a performance guarantee or a particular GPU minimum.

OUTPUT MODES AND FILES

MP4 (PNG Fallback): attempts Windows Media Foundation H.264 recording. If encoder setup is unavailable or unsupported, it starts a PNG sequence instead. An error during an already active MP4 take stops that take; it does not silently switch formats midway through the recording.

PNG Sequence: directly writes opaque color PNG files and FrameTimes.csv. For an output filename such as Recordings/Take001.mp4, the actual folder is Recordings/Take001_Frames and frames are named Frame_00000000.png, Frame_00000001.png, and so on. A filename stem without .mp4 is also accepted. Supply a filename, not just a directory.

Output is SDR color. MP4 is H.264 video without an audio track; PNG alpha is opaque. The legacy HDR switch does not enable HDR video output.

Choose a writable location with sufficient disk space. Relative paths resolve beneath Project Saved; absolute paths are also accepted. Use Get Output Path to obtain the resolved filename or sequence folder rather than guessing a packaged game's Saved location.

Existing MP4 files and existing destination frame folders are not replaced. The recorder writes MP4 data to a uniquely named partial file and promotes it to the requested name after finalization. If finalization or the final move fails, a nonempty partial file can be retained for inspection. A partial file is not guaranteed to be playable. Read the last error and actual output path before reporting success to your players.

Get Saved Frame Count counts successfully submitted/written frames. MP4 retains its newest captured frame until the next timestamp or final stop, so the live count can lag capture by one frame. A take with no saved frames is not considered successful.

PREVIEW WINDOW

Hidden keeps the recording preview hidden. Shown opens a separate preview window. Start Minimized creates that window in its minimized state. The preview is scaled to a convenient window size while the output retains the selected resolution.

Preview Window Mode is selected when the take starts. Use the stop nodes to end recording and release its window. The preview is a scene view, so it does not add the game's screen-space interface to the saved footage.

VISUAL SETTINGS

Apply Visual Settings applies a Recording Camera Settings struct to both native camera components. Changing the struct alone at runtime does not push every setting to the cameras; call Apply Visual Settings after your changes. Apply Visual Settings To Recording reapplies the actor's stored struct.

Capture: - Screen Percentage controls the recording view's internal render scale. Output dimensions do not change. Its requested range is 25-400%, capped by the recorder's per-axis and pixel limits. - Enable Temporal AA controls temporal antialiasing for this recording view. - Frame Rate sets the actor's capture target when the settings are applied.

Color: Saturation, Contrast, Gamma, Gain, Color Filter, Color Grading Intensity, Sharpness and White Balance control the native cameras' post-process look. White Balance is a color temperature. Gamma defaults to 1 and is kept above zero. Invalid numeric inputs are sanitized at runtime, including in packaged builds.

Exposure: Auto Exposure enables basic eye adaptation and inherits the project's exposure range by default. Exposure Compensation adjusts automatic exposure. Manual Exposure supplies the base bias when Auto Exposure is disabled. Exposure Bias and Shadow Exposure Bias add further bias; +1 EV doubles brightness and -1 EV halves it. Physical-camera exposure is disabled by this settings preset.

Override Auto Exposure Range is optional and off by default. Enable it only when you want the plugin's minimum/maximum values to replace the project range. These values are EV100 when the project uses extended luminance range; otherwise they are linear brightness. Auto Exposure Speed Up and Speed Down control adaptation rates.

Lighting: Enable Reflections, Reflection Quality, Enable Ambient Occlusion, Ambient Occlusion Intensity, Enable Global Illumination, Enable Lumen, Lumen Global Illumination Intensity and Lumen Reflection Quality affect the recording cameras' post-process settings. Lumen and other renderer features still require support from your project's rendering configuration and selected graphics API. A camera setting cannot create unsupported project shaders.

Enable Shadow Brightening adds Shadow Brightness to the black-level offset. Ambient Cubemap Intensity needs an ambient cubemap supplied through post-process settings; it does not create a cubemap or a light.

Effects: Bloom Intensity, Vignette Intensity, Chromatic Aberration, Film Grain, Lens Flare Intensity and Dirt Mask Intensity adjust their matching post-process effects. A dirt mask requires a texture in the post-process setup. Enable Light Shafts controls the recording show flag; the scene's lights must provide the effect.

Motion: Enable Motion Blur, Motion Blur Amount, Motion Blur Max and Motion Blur Target FPS control motion blur. Enable Camera Shake adds a small procedural rotation using Shake Amount; this is not a Camera Shake Blueprint asset. Camera Lag Speed and Camera Lag Max Distance affect movement smoothing.

Scalability: Auto (Project Quality) leaves the recording quality budget at the project's settings. Low through Cinematic apply recording-view Lumen and ambient-occlusion quality budgets. They do not change or save the player's global graphics settings, resolution or r.ScreenPercentage.

Some effects depend on previous frames. Allow the scene and recording view time to settle when judging eye adaptation, temporal antialiasing or motion blur.

LENS, ZOOM AND FOCUS

The Cine Camera uses sensor width/height and focal length for its projection. Lens > Field Of View directly configures the standard camera. Set Field Of View also derives a focal length for the Cine Camera, constrained by its minimum and maximum lens limits, so an extreme requested FOV may be clamped.

Set Zoom takes a normalized value from 0 to 1 across the Cine Camera's focal-length limits. Get Current Zoom returns that normalized value. Zoom In and Zoom Out change focal length by the supplied amount in millimeters. Smooth Zoom takes a target focal length in millimeters and an interpolation speed. It continues over game ticks; speed zero applies the target immediately.

Lens > Aperture F Stop configures the Cine Camera aperture, constrained by Min Aperture and Max Aperture. Set Aperture updates the cinematic lens and the standard camera's depth-of-field aperture together.

Enable Depth Of Field must be true for cinematic focus. Enable Manual Focus selects Manual Focus Distance; otherwise Focus Distance is used as the distance value. This switch does not implement continuous actor autofocus. Focus Offset and Focus Smoothing Speed adjust cinematic focusing. Focus > Aperture controls the standard camera's post-process depth of field.

Set Focus Distance enables depth of field and manual focus. Distances are in centimeters. Focus On Actor sets focus using the distance from the active camera component to the supplied actor. Call it again when you want to update focus as that actor moves. To disable depth of field, clear Enable Depth Of Field and apply the visual settings.

ADVANCED POST-PROCESS CONTROL

Get Post Process Settings and Set Post Process Settings operate on the active native camera. When building an Unreal post-process struct, enable the override flags for fields you intend to apply. Applying the plugin's visual or shadow settings later can overwrite their corresponding fields, so apply your additional overrides afterward.

Modify Post Process Setting accepts these case-insensitive names: Saturation, Contrast, Gamma, Gain, BloomIntensity, VignetteIntensity, ChromaticAberration, FilmGrain, Sharpness, MotionBlurAmount, ExposureBias, Exposure.

Exposure is an alias for ExposureBias. Unknown names log a warning. Numeric values are checked and clamped. This node changes the active component's post-process settings directly; it does not rewrite the Visual Settings struct.

Update Shadow Lighting Settings replaces the shadow settings struct and applies it. Apply Shadow Lighting Settings reapplies the stored struct. Set Shadow Exposure Bias, Get Shadow Exposure Bias and the library's Set Recording Shadow Exposure provide focused access to that exposure adjustment.

SESSION LIFECYCLE AND STATUS

Try Start Recording on the actor uses its selected native camera, quality, frame rate, bitrate, preview mode and output mode. The manager's version accepts an explicit camera and capture parameters. Their Boolean is true only when a new session starts.

The legacy void Start Recording nodes remain available. New Blueprint logic should use Try Start Recording or the Boolean-returning library helpers so it can handle failure.

Stop Recording Keep Camera stops only the session owned by that actor and preserves the actor. Use it for repeated takes.

The actor's legacy Stop Recording stops and destroys that actor when it owns an active session. Calling it on an idle actor or a different camera does not stop another camera's recording. Use Stop Recording And Destroy when you specifically want to remove an idle camera too.

Recording Manager > Stop Recording stops the game instance's active session without destroying its camera actor. Only call it when you intend to stop that session.

Actor destruction, normal world cleanup and game-instance shutdown release the active session. A failed start on another camera cannot claim or stop the current owner's recording. Abrupt process termination or a crash cannot guarantee a finalized MP4.

Manager status functions: - Is Recording: whether a session is active. - Is Recording Camera: whether the supplied component owns that session. - Get Recording Status: a readable status message and live saved-frame count. - Get Last Error: the latest rejected operation or recording error. - Get Output Path: the current or most recent MP4 filename or PNG directory. - Get Saved Frame Count: the current or most recent confirmed frame count. - Was Last Recording Successful: whether the last completed take finalized with saved frames. Check it after stopping, not to predict an active take's outcome.

A rejected attempt during a running session can set Get Last Error while the original session continues. Use Is Recording and Is Recording Camera to distinguish that rejection from a stopped session.

C++ USAGE

Your game's module needs a dependency on RuntimeRecordingCamera when it calls these APIs. Include RecordingCameraActor.h, RecordingManager.h and, for the helper functions, RecordingCameraLibrary.h. Direct Cine Camera usage may also need CinematicCamera in your module dependencies.

Example inside gameplay code with a valid UWorld and registered UCameraComponent:

URecordingManager* Recorder = URecordingManager::Get(World); if (Recorder) { const bool bStarted = Recorder->TryStartRecording( CameraComponent, TEXT("Recordings/Take001.mp4"), FIntPoint(1920, 1080), 30, 20000, ERecordingPreviewWindowMode::Hidden, ERecordingOutputMode::AutoMP4); // Store Recorder and inspect bStarted before showing a recording indicator. }

After gameplay has produced frames:

Recorder->StopRecording(); const bool bSaved = Recorder->WasLastRecordingSuccessful(); const FString ActualOutput = Recorder->GetOutputPath();

Call recording, camera and dialog APIs on the game thread. The subsystem's static Get helper takes a world; Blueprint users can obtain the same subsystem from their game instance. The recorder requires a rendered local game or PIE world and rejects dedicated servers, commandlets and NullRHI sessions.

UPDATING EXISTING BLUEPRINTS FROM 1.x

Existing class, component, node, enum and property identifiers are retained. New output and status functions are additive.

Review saved Blueprint defaults after updating: existing assets can retain their old exposure and brightness overrides. New defaults are neutral, and Override Auto Exposure Range is off. Remove the old blanket Black Level Lift -0.1 workaround from a copy of your camera settings and judge the scene with neutral exposure first. Keep intentional artistic grading when it is appropriate for your content.

The camera now uses the complete follow offset once. Shots that compensated for the old doubled spring-arm distance can need Follow Distance retuning. Collision clearance now pushes away from surfaces. Explicit spawn locations and target changes no longer cause the old target-position teleport.

Smooth Zoom now runs over time. Cine Camera focal length is respected instead of being overwritten by the standard FOV setting. Disabling depth of field now disables cinematic focus. Review any old Blueprint workaround that depended on these previous behaviors.

Legacy Compatibility fields are retained for serialized data: Enable HDR, Contact Shadow Length, Enable Ray Traced Reflections, Enable Ray Traced Shadows, Enable Ray Traced AO, Ray Tracing Quality and Light Shaft Intensity. These fields do not override project renderer features or the recorder's SDR output. Do not use them as runtime capability switches.

MovieRenderPipeline and AVCodecsCore are not dependencies of this recorder. The local MP4 path uses Windows Media Foundation; PNG uses Unreal's image utilities. No separately bundled encoder executable is required by the plugin.

TROUBLESHOOTING

Recording did not start: check the Boolean result and Get Last Error. Confirm the camera is registered in the same game world, no other session is active, the dimensions are valid and the output name is unused and writable.

PNG files appeared instead of an MP4: the MP4 encoder could not initialize for this machine or setting. Get Output Path identifies the sequence folder. Try a lower resolution/frame rate, or use PNG Sequence deliberately. Windows editions without the required media components cannot provide the same Media Foundation encoder availability.

The output is too bright: begin with neutral Black Level Lift, Shadow Exposure Bias and Exposure Bias. Keep Override Auto Exposure Range off unless you intentionally need a custom range. Check project exposure units and any saved Blueprint overrides from 1.x. Allow auto exposure to settle.

The output is too dark: inspect the scene lighting, exposure and camera direction. Ambient cubemap and dirt-mask intensity sliders need their associated assets. Raising those sliders alone does not create missing lighting or textures.

The camera clips through an obstacle: confirm that the obstacle has query collision and blocks the Camera channel. Check Enable Collision, probe radius and pullback. Keep custom component offsets in mind when changing the native camera layout.

Focus or zoom appears unchanged: zoom nodes control the Cine Camera focal length. Confirm Cine Camera is active and the lens limits permit the requested value. Enable depth of field for focus and choose a suitable aperture and subject distance.

The second take fails: use a new output name, stop the previous session, and retain the camera with Stop Recording Keep Camera. The legacy Stop Recording node can destroy the actor.

The video is short, uneven or expensive to record: reduce the requested size, frame rate, internal screen percentage and scene effects. Actual capture intervals depend on game performance. Check FrameTimes.csv for PNG pacing; MP4 stores variable timestamps.

SUPPORT

Discord: https://discord.gg/9Zc4wbwqG9