Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.liv.tv/llms.txt

Use this file to discover all available pages before exploring further.

What Problem Does This Solve?

When working with LCK, you’ll pass configuration structs to methods and handle interaction data from UI. This page documents:
  • Recording parameters (resolution, bitrate, framerate)
  • Camera mode settings (FOV, smoothness, distance)
  • UI interaction data (touch events, button states)
  • Color palette constants
  • Audio source channel configuration and validation
  • Audio plugin runtime information
  • Telemetry event types
Understanding these types helps you configure recording quality, customize camera behavior, build custom UI, and inspect audio system state.

When to Use This

Reference this when:
  • Configuring recording parameters
  • Setting up camera modes
  • Handling UI events
  • Styling custom UI components
  • Working with audio channels and source configuration
  • Validating audio plugin configuration before recording
  • Querying registered audio plugin capabilities
  • Working with telemetry events

Recording Configuration

FLCKRecorderParams

What it’s for: Configure video/audio recording settings
USTRUCT(BlueprintType)
struct FLCKRecorderParams
{
    GENERATED_BODY()
    
    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    int32 Width = 1920;
    
    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    int32 Height = 1080;
    
    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    int32 Framerate = 30;
    
    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    int32 VideoBitrate = 2 << 20;  // 2097152 (~2 Mbps)

    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    int32 Samplerate = 48000;

    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    int32 AudioBitrate = 256 << 10;   // 262144 (~256 Kbps)
};
FieldTypeDefaultDescriptionRange
Widthint321920Video width in pixels640-3840
Heightint321080Video height in pixels480-2160
Framerateint3230Frames per second15-120
VideoBitrateint322 << 20 (2097152)Video bitrate in bps500k-100M
Samplerateint3248000Audio sample rate in Hz44100, 48000
AudioBitrateint32256 << 10 (262144)Audio bitrate in bps64k-512k
Common use:
// HD recording at 60 FPS
FLCKRecorderParams Params;
Params.Width = 1920;
Params.Height = 1080;
Params.Framerate = 60;
Params.VideoBitrate = 12 << 20;  // 12 Mbps
Params.AudioBitrate = 256000;   // 256 Kbps

Recorder->SetupRecorder(Params, CaptureComponent);

FLCKRecordingProfileSettings

What it’s for: Predefined quality profiles (configured in Project Settings)
USTRUCT(BlueprintType)
struct FLCKRecordingProfileSettings
{
    GENERATED_BODY()
    
    UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
    int32 Width = 1280;
    
    UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
    int32 Height = 720;
    
    UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ClampMin = "15", ClampMax = "120"))
    int32 Framerate = 30;
    
    UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ClampMin = "500000", ClampMax = "100000000"))
    int32 VideoBitrate = 4000000;  // 4 Mbps
    
    UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ClampMin = "64000", ClampMax = "512000"))
    int32 AudioBitrate = 128000;   // 128 Kbps
    
    UPROPERTY(BlueprintReadOnly)
    int32 Samplerate = 48000;
};
Typical profiles:
QualityResolutionBitrateFPSUse Case
SD1280×7204 Mbps30Mobile, performance mode
HD1920×108012 Mbps60Standard quality
2K2560×144020 Mbps60High quality
4K3840×216035 Mbps60Maximum quality (PC only)

Camera Mode Settings

FLCKSelfieModeDefaults

What it’s for: Default settings for Selfie camera mode
USTRUCT(BlueprintType)
struct FLCKSelfieModeDefaults
{
    GENERATED_BODY()
    
    UPROPERTY(EditAnywhere, meta = (ClampMin = "20.0", ClampMax = "120.0"))
    float FOV = 80.0f;
    
    UPROPERTY(EditAnywhere, meta = (ClampMin = "0.0", ClampMax = "100.0"))
    float Smoothness = 50.0f;
    
    UPROPERTY(EditAnywhere, meta = (ClampMin = "0.5", ClampMax = "10.0"))
    float FollowDistance = 2.0f;
    
    UPROPERTY(EditAnywhere)
    bool bFollowEnabled = false;
};
FieldTypeDefaultDescriptionRange
FOVfloat80.0Field of view in degrees20-120
Smoothnessfloat50.0Camera movement smoothing0-100
FollowDistancefloat2.0Distance from player in meters0.5-10.0
bFollowEnabledboolfalseAuto-follow player movement-
Example:
// Selfie mode with auto-follow
FLCKSelfieModeDefaults Selfie;
Selfie.FOV = 75.0f;
Selfie.Smoothness = 60.0f;
Selfie.FollowDistance = 1.5f;
Selfie.bFollowEnabled = true;

FLCKFirstPersonModeDefaults

What it’s for: Default settings for First Person camera mode
USTRUCT(BlueprintType)
struct FLCKFirstPersonModeDefaults
{
    GENERATED_BODY()
    
    UPROPERTY(EditAnywhere, meta = (ClampMin = "20.0", ClampMax = "120.0"))
    float FOV = 90.0f;
    
    UPROPERTY(EditAnywhere, meta = (ClampMin = "0.0", ClampMax = "100.0"))
    float Smoothness = 75.0f;
};
FieldTypeDefaultDescription
FOVfloat90.0Field of view (wider for FPS)
Smoothnessfloat75.0Camera lag for head movement
Typical values:
  • Low smoothness (0-30): Sharp, responsive (competitive FPS)
  • Medium smoothness (40-70): Balanced (standard FPS)
  • High smoothness (80-100): Cinematic feel (story-driven)

FLCKThirdPersonModeDefaults

What it’s for: Default settings for Third Person camera mode
USTRUCT(BlueprintType)
struct FLCKThirdPersonModeDefaults
{
    GENERATED_BODY()
    
    UPROPERTY(EditAnywhere, meta = (ClampMin = "20.0", ClampMax = "120.0"))
    float FOV = 90.0f;
    
    UPROPERTY(EditAnywhere, meta = (ClampMin = "0.0", ClampMax = "100.0"))
    float Smoothness = 100.0f;
    
    UPROPERTY(EditAnywhere, meta = (ClampMin = "0.5", ClampMax = "10.0"))
    float Distance = 2.0f;
    
    UPROPERTY(EditAnywhere, meta = (ClampMin = "-90.0", ClampMax = "90.0"))
    float PitchAngle = -30.0f;
};
FieldTypeDefaultDescription
FOVfloat90.0Field of view
Smoothnessfloat100.0Camera lag (very smooth)
Distancefloat2.0Distance behind player in meters
PitchAnglefloat-30.0Vertical angle (-90 to +90 degrees)
Example:
// Over-the-shoulder camera
FLCKThirdPersonModeDefaults ThirdPerson;
ThirdPerson.FOV = 85.0f;
ThirdPerson.Distance = 1.5f;
ThirdPerson.PitchAngle = -20.0f;  // Slightly above shoulder
ThirdPerson.Smoothness = 90.0f;

UI Interaction Data

FLCKTapData

What it’s for: Touch/pointer interaction event data from UI buttons
USTRUCT()
struct LCKUI_API FLCKTapData
{
    GENERATED_BODY()
    
    UPROPERTY()
    FVector ButtonLocation = FVector::ZeroVector;
    
    UPROPERTY()
    FVector ButtonRightVector = FVector::ZeroVector;
    
    UPROPERTY()
    FVector ButtonForwardVector = FVector::ZeroVector;
    
    UPROPERTY()
    FVector TapLocation = FVector::ZeroVector;
    
    UPROPERTY()
    bool IsPressed = false;
};
FieldTypeDescription
ButtonLocationFVectorWorld position of the button
ButtonRightVectorFVectorButton’s local right direction
ButtonForwardVectorFVectorButton’s local forward direction
TapLocationFVectorWorld position of tap/click
IsPressedboolWhether button is currently pressed
When you’ll see this: Inside button interaction callbacks
Button->OnTapStarted.AddDynamic(this, &AMyActor::HandleButtonTap);

void AMyActor::HandleButtonTap(const FLCKTapData& TapData)
{
    UE_LOG(LogTemp, Log, TEXT("Button at %s pressed"), 
        *TapData.ButtonLocation.ToString());
}

UI Styling

FLCKColor

What it’s for: Standard color palette for LCK UI components
USTRUCT()
struct LCKUI_API FLCKColor
{
    static constexpr FColor Primary         {8, 8, 8};       // #080808
    static constexpr FColor PrimaryText     {220, 220, 220}; // #DCDCDC
    static constexpr FColor Secondary       {16, 16, 16};    // #101010
    static constexpr FColor Disabled        {96, 96, 96};    // #606060
    static constexpr FColor ButtonDefault   {40, 40, 40};    // #282828
    static constexpr FColor ButtonIconDefault {220, 220, 220}; // #DCDCDC
    static constexpr FColor ButtonActive    {94, 69, 255};   // #5E45FF
    static constexpr FColor Debug           {255, 0, 255};   // #FF00FF
    static constexpr FColor Alert           {255, 42, 42};   // #FF2A2A
    static constexpr FColor Success         {32, 196, 64};   // #20C440
    static constexpr FColor White           {255, 255, 255}; // #FFFFFF
    static constexpr FColor Black           {0, 0, 0};       // #000000
};
ColorRGBHexUse Case
Primary(8, 8, 8)#080808Main background
PrimaryText(220, 220, 220)#DCDCDCPrimary text
Secondary(16, 16, 16)#101010Secondary background
Disabled(96, 96, 96)#606060Disabled UI elements
ButtonDefault(40, 40, 40)#282828Default button color
ButtonActive(94, 69, 255)#5E45FFActive/pressed button
Alert(255, 42, 42)#FF2A2ARecording indicator, errors
Success(32, 196, 64)#20C440Success state
Example usage:
// Set button color based on state
if (bIsRecording)
{
    ButtonMaterial->SetVectorParameterValue(
        TEXT("BaseColor"), 
        FLinearColor(FLCKColor::Alert)
    );
}
else
{
    ButtonMaterial->SetVectorParameterValue(
        TEXT("BaseColor"), 
        FLinearColor(FLCKColor::ButtonDefault)
    );
}

Audio Channel Bitmask

TLCKAudioChannelsMask

What it’s for: Combine multiple audio channels using bitwise operations
typedef uint64 TLCKAudioChannelsMask;
Usage:
// Combine game audio + microphone
TLCKAudioChannelsMask Channels = 
    ELCKAudioChannel::Game | ELCKAudioChannel::Microphone;

// Check if mask contains microphone
bool HasMic = (Channels & ELCKAudioChannel::Microphone) != 0;

// Start capture with both channels
AudioSource->StartCapture(Channels);
Common combinations:
// Game audio only
TLCKAudioChannelsMask GameOnly = ELCKAudioChannel::Game;

// Microphone only
TLCKAudioChannelsMask MicOnly = ELCKAudioChannel::Microphone;

// Game + Mic (typical recording)
TLCKAudioChannelsMask Standard = 
    ELCKAudioChannel::Game | ELCKAudioChannel::Microphone;

// Game + Mic + Voice chat
TLCKAudioChannelsMask AllChannels = 
    ELCKAudioChannel::Game | 
    ELCKAudioChannel::Microphone | 
    ELCKAudioChannel::VoiceChat;

Button UI Types

ELCKButtonType

What it’s for: Define button shape and size for 3D UI
UENUM(BlueprintType)
enum class ELCKButtonType : uint8
{
    Square      UMETA(DisplayName = "Square"),
    Rectangle   UMETA(DisplayName = "Rectangle"),
    Tab         UMETA(DisplayName = "Tab"),
    Selector    UMETA(DisplayName = "Selector")
};
TypeBox Extent (cm)Aspect RatioUse Case
Square(0.4, 2.4, 2.4)1:1Icons, single-action buttons
Rectangle(0.4, 6.0, 2.4)2.5:1Text buttons, labels
Tab(0.4, 4.4, 2.4)1.83:1Tab navigation
Selector(2.4, 4.4, 0.8)5.5:1Sliders, selectors

Complete Configuration Example

void AMyRecorder::SetupRecording()
{
    // 1. Configure recorder params
    FLCKRecorderParams Params;
    Params.Width = 1920;
    Params.Height = 1080;
    Params.Framerate = 60;
    Params.VideoBitrate = 10 << 20;  // 10 Mbps
    Params.AudioBitrate = 256000;    // 256 Kbps
    
    // 2. Set up camera mode
    FLCKThirdPersonModeDefaults ThirdPerson;
    ThirdPerson.FOV = 85.0f;
    ThirdPerson.Distance = 2.0f;
    ThirdPerson.PitchAngle = -25.0f;
    ThirdPerson.Smoothness = 90.0f;
    
    // 3. Configure audio channels
    TLCKAudioChannelsMask Channels = 
        ELCKAudioChannel::Game | ELCKAudioChannel::Microphone;
    
    // 4. Start recording
    ULCKRecorderSubsystem* Recorder = GetWorld()->GetSubsystem<ULCKRecorderSubsystem>();
    Recorder->SetupRecorder(Params, CaptureComponent);
    Recorder->StartRecording();
}

Audio Source Channel Presets

FLCKAudioSourceChannels

What it’s for: Default channel configuration enabling both microphone and game audio capture.
USTRUCT(BlueprintType)
struct FLCKAudioSourceChannels
{
    GENERATED_BODY()

    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    bool bMicrophoneEnabled = true;

    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    bool bGameAudioEnabled = true;
};
FieldTypeDefaultDescription
bMicrophoneEnabledbooltrueEnable microphone capture
bGameAudioEnabledbooltrueEnable game audio capture

FLCKAudioSourceGameOnly

What it’s for: Channel preset for sources that only provide game audio (e.g., FMOD, Wwise).
USTRUCT(BlueprintType)
struct FLCKAudioSourceGameOnly
{
    GENERATED_BODY()

    UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Audio")
    bool bGameAudioEnabled = true;
};
FieldTypeDefaultDescription
bGameAudioEnabledbooltrueEnable game audio capture

FLCKAudioSourceMicOnly

What it’s for: Channel preset for sources that only provide microphone input (e.g., Oboe on Android).
USTRUCT(BlueprintType)
struct FLCKAudioSourceMicOnly
{
    GENERATED_BODY()

    UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Audio")
    bool bMicrophoneEnabled = true;
};
FieldTypeDefaultDescription
bMicrophoneEnabledbooltrueEnable microphone capture

FLCKAudioSourceVoiceChat

What it’s for: Channel preset for voice chat sources that capture microphone and incoming voice audio (e.g., Vivox).
USTRUCT(BlueprintType)
struct FLCKAudioSourceVoiceChat
{
    GENERATED_BODY()

    UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Audio")
    bool bMicrophoneEnabled = true;

    UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Audio")
    bool bVoiceAudioEnabled = true;
};
FieldTypeDefaultDescription
bMicrophoneEnabledbooltrueOutgoing microphone capture
bVoiceAudioEnabledbooltrueIncoming voice chat audio

Audio Configuration Validation

FLCKAudioConfigValidation

What it’s for: Result of validating the current audio plugin configuration. Returned by the audio system to report issues such as missing microphone sources or duplicate game audio plugins.
USTRUCT(BlueprintType)
struct FLCKAudioConfigValidation
{
    GENERATED_BODY()

    UPROPERTY(BlueprintReadOnly, Category = "LCK")
    bool bIsValid = true;

    UPROPERTY(BlueprintReadOnly, Category = "LCK")
    TArray<FString> Warnings;

    UPROPERTY(BlueprintReadOnly, Category = "LCK")
    ELCKGameAudioType ActiveGameAudio = ELCKGameAudioType::None;

    UPROPERTY(BlueprintReadOnly, Category = "LCK")
    bool bHasMicrophoneSource = false;

    UPROPERTY(BlueprintReadOnly, Category = "LCK")
    int32 MicrophoneSourceCount = 0;

    UPROPERTY(BlueprintReadOnly, Category = "LCK")
    TArray<FString> EnabledMicrophoneSources;
};
FieldTypeDefaultDescription
bIsValidbooltrueWhether the audio config is valid for recording
WarningsTArray<FString>[]Human-readable warning messages
ActiveGameAudioELCKGameAudioTypeNoneThe active game audio middleware type
bHasMicrophoneSourceboolfalseWhether at least one mic source is available
MicrophoneSourceCountint320Number of registered microphone sources
EnabledMicrophoneSourcesTArray<FString>[]Names of all enabled microphone sources
Common use:
FLCKAudioConfigValidation Validation = AudioSystem->ValidateConfig();

if (!Validation.bIsValid)
{
    for (const FString& Warning : Validation.Warnings)
    {
        UE_LOG(LogLCK, Warning, TEXT("Audio config: %s"), *Warning);
    }
}

Audio Plugin Info

FLCKAudioPluginInfo

What it’s for: Describes a registered audio plugin and its capabilities. Used by the audio system to enumerate available plugins at runtime.
USTRUCT(BlueprintType)
struct FLCKAudioPluginInfo
{
    GENERATED_BODY()

    UPROPERTY(BlueprintReadOnly, Category = "LCK")
    FString ModuleName;

    UPROPERTY(BlueprintReadOnly, Category = "LCK")
    FString DisplayName;

    UPROPERTY(BlueprintReadOnly, Category = "LCK")
    bool bIsLoaded = false;

    UPROPERTY(BlueprintReadOnly, Category = "LCK")
    bool bMicrophoneEnabled = false;

    UPROPERTY(BlueprintReadOnly, Category = "LCK")
    bool bGameAudioEnabled = false;
};
FieldTypeDefaultDescription
ModuleNameFString""Module name (e.g., "LCKFMOD")
DisplayNameFString""Human-readable name (e.g., "FMOD Studio")
bIsLoadedboolfalseWhether the module is currently loaded
bMicrophoneEnabledboolfalsePlugin supports microphone capture
bGameAudioEnabledboolfalsePlugin supports game audio capture

Telemetry Types

FLCKTelemetryValue

What it’s for: A variant value type used in telemetry events to hold different data types in a single field.
USTRUCT(BlueprintType)
struct FLCKTelemetryValue
{
    GENERATED_BODY()

    UPROPERTY(BlueprintReadWrite, Category = "LCK Telemetry")
    int32 IntValue = 0;

    UPROPERTY(BlueprintReadWrite, Category = "LCK Telemetry")
    float FloatValue = 0.0f;

    UPROPERTY(BlueprintReadWrite, Category = "LCK Telemetry")
    FString StringValue;

    UPROPERTY(BlueprintReadWrite, Category = "LCK Telemetry")
    bool BoolValue = false;

    UPROPERTY(BlueprintReadWrite, Category = "LCK Telemetry")
    uint8 ValueType = 0; // 0 = Int, 1 = Float, 2 = String, 3 = Bool
};
FieldTypeDefaultDescription
IntValueint320Integer payload (used when ValueType == "Int")
FloatValuefloat0.0Float payload (used when ValueType == "Float")
StringValueFString""String payload (used when ValueType == "String")
BoolValueboolfalseBoolean payload (used when ValueType == "Bool")
ValueTypeuint80Discriminator: 0 = Int, 1 = Float, 2 = String, 3 = Bool

FLCKTelemetryEvent

What it’s for: Represents a single telemetry event with a type identifier and a map of contextual key-value pairs.
USTRUCT(BlueprintType)
struct FLCKTelemetryEvent
{
    GENERATED_BODY()

    UPROPERTY(BlueprintReadWrite, Category = "LCK Telemetry")
    ELCKTelemetryEventType EventType = ELCKTelemetryEventType::GameInitialized;

    UPROPERTY(BlueprintReadWrite, Category = "LCK Telemetry")
    TMap<FString, FLCKTelemetryValue> Context;
};
FieldTypeDefaultDescription
EventTypeELCKTelemetryEventTypeGameInitializedEvent type enum value
ContextTMap<FString, FLCKTelemetryValue>{}Key-value pairs of event metadata
Common use:
FLCKTelemetryEvent Event;
Event.EventType = ELCKTelemetryEventType::RecordingStarted;

FLCKTelemetryValue ResolutionValue;
ResolutionValue.StringValue = TEXT("1920x1080");
ResolutionValue.ValueType = 2; // String
Event.Context.Add(TEXT("Resolution"), ResolutionValue);

Key Takeaways

FLCKRecorderParams — Configure video/audio quality
Camera mode structs — Customize camera behavior (FOV, smoothness, distance)
FLCKTapData — Handle UI button interactions
FLCKColor — Use standard color palette for consistency
TLCKAudioChannelsMask — Combine audio channels with bitwise OR
Audio channel presets — FLCKAudioSourceChannels, GameOnly, MicOnly, VoiceChat
FLCKAudioConfigValidation — Validate audio plugin configuration before recording
FLCKAudioPluginInfo — Enumerate registered audio plugins at runtime
Telemetry types — FLCKTelemetryValue and FLCKTelemetryEvent for analytics