Skip to main content
Get the LCK SDK running in your Unreal Engine project with basic recording, photo capture, and Blueprint support.

Prerequisites

Unreal Engine 5.4
Visual Studio 2022 (Windows)
Android SDK/NDK (for Android builds)
C++ project (Blueprint-only projects require C++ conversion)

Installation

1

Enable Required Plugins

Enable the following plugins in your project:Required:
  • LCK - Core recording SDK
Optional (based on your needs):
  • LCKUI - 3D UI components
  • LCKTablet - Virtual tablet interface
  • LCKUnrealAudio - Unreal audio capture
  • LCKVivox - Vivox voice chat capture
  • LCKOboe - Android microphone (Android only)
Optional Audio Middleware (requires external plugins):
2

Configure Module Dependencies

Add to your module’s .Build.cs:
public class YourModule : ModuleRules
{
    public YourModule(ReadOnlyTargetRules Target) : base(Target)
    {
        PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

        PublicDependencyModuleNames.AddRange(new string[] {
            "Core",
            "CoreUObject",
            "Engine",
            "LCKCore",
            "LCKAudio"
        });

        // Optional: Add UI support
        PrivateDependencyModuleNames.AddRange(new string[] {
            "LCKUI",
            "LCKTablet"
        });
    }
}
3

Configure Project Settings

Navigate to Project Settings > Plugins > LCK SDK and configure:
SettingDescriptionRequired
Tracking IDUUID v4 format identifier for analyticsYes
Game NameDisplay name for your applicationYes
Profile_SD1280x720 recording profile settingsNo
Profile_HD1920x1080 recording profile settingsNo

Basic Recording

Get the LCK Service

#include "LCKSubsystem.h"
#include "LCKService.h"

// From any actor with world context
ULCKSubsystem* Subsystem = GetWorld()->GetSubsystem<ULCKSubsystem>();
ULCKService* Service = Subsystem->GetService();

Configure Recording Parameters

// Apply recording settings
Service->ApplyRecordingSettings(
    1920,       // Width
    1080,       // Height
    30,         // Framerate
    8000000,    // Video bitrate (8 Mbps)
    256000,     // Audio bitrate (256 Kbps)
    48000       // Sample rate
);

Register Scene Capture

// Create or reference your scene capture component
USceneCaptureComponent2D* CaptureComponent = /* your capture component */;

// Register with the service (provide a unique name)
Service->RegisterCaptureComponent(TEXT("MainCapture"), CaptureComponent);

Start Recording

// Subscribe to events first
Service->OnRecordingSaveFinished.AddDynamic(this, &AMyActor::HandleSaveFinished);
Service->OnRecordingError.AddDynamic(this, &AMyActor::HandleRecordingError);

// Start recording
Service->StartRecording();

Stop Recording

// Stop recording
Service->StopRecording();

// Progress is reported via delegate
Service->OnRecordingSaveProgress.AddDynamic(this, &AMyActor::HandleSaveProgress);

void AMyActor::HandleSaveProgress(float Progress)
{
    UE_LOG(LogTemp, Log, TEXT("Save progress: %.1f%%"), Progress * 100.0f);
}

void AMyActor::HandleSaveFinished(bool bSuccess)
{
    UE_LOG(LogTemp, Log, TEXT("Recording saved: %s"), bSuccess ? TEXT("Yes") : TEXT("No"));
}
For direct async control, use ULCKRecorderSubsystem which provides StartRecordingAsync() and StopRecordingAsync() methods with delegate callbacks.

Photo Capture

// Take a single photo
Service->TakePhoto();

Blueprint Usage

All major functions are exposed to Blueprints:
FunctionCategoryDescription
GetServiceLCK SubsystemGet the LCK service instance
StartRecordingRecordingBegin video recording
StopRecordingRecordingEnd video recording
TakePhotoRecordingCapture single frame
IsRecordingStateCheck if currently recording
GetCurrentRecordingDurationStateGet recording time in seconds

Next Steps