Skip to main content

What Problem Does This Solve?

When integrating LCK into your Unreal project, you need to know:
  • Which modules to enable (core vs. optional)
  • Loading order (some modules must load before others)
  • Platform-specific modules (Windows vs. Android)
  • Audio plugin priorities (FMOD vs. Wwise vs. Unreal Audio)
This page explains module dependencies so you can configure your project correctly.

When to Read This

Read this when:
  • First-time LCK integration
  • Adding audio middleware (FMOD, Wwise, Vivox)
  • Troubleshooting module loading errors
  • Building for multiple platforms
  • Creating custom audio sources
Skip this if you’re just using the default tablet with UnrealAudio.

Module Hierarchy


Loading Phases Explained

Never change LCKVulkan loading phase. It must load at EarliestPossible for Android Vulkan interop to work. Changing it will break Quest recording.

Core Modules (Required)

LCKCore

Phase: PostDefault
Platforms: All
What it does:
  • ULCKRecorderSubsystem — Low-level recording control
  • ULCKTelemetrySubsystem — Analytics
  • ULCKDeveloperSettings — Project configuration
  • Encoder factory interface
Dependencies: None (base module) When to use: Always required. This is the foundation.

LCKAudio

Phase: PostDefault
Platforms: All
What it does:
  • ILCKAudioSource interface
  • FLCKAudioMix for combining sources
  • Audio channel management
Dependencies: LCKCore When to use: Always required if you want audio in recordings.

LCKTablet

Phase: Default
Platforms: All
What it does:
  • ULCKSubsystem — World subsystem
  • ULCKService — High-level recording API
  • ALCKTablet — Tablet actor
  • ULCKTabletDataModel — State management
Dependencies: LCKCore, LCKUI When to use: Use this unless you’re building completely custom UI. Most developers want this.

LCKUI

Phase: Default
Platforms: All
What it does:
  • ULCKButton — Interactive 3D buttons
  • ULCKSlider — Slider controls
  • Recording state visualization
Dependencies: LCKCore When to use: Use if you want 3D UI components (buttons, sliders) in your world.

Platform-Specific Modules

Platform-specific modules are automatically loaded by LCK. You don’t need to manually enable them in your .Build.cs file.

Windows Only

LCKWindowsEncoder

Phase: PostDefault
Platforms: Win64
What it does: Windows Media Foundation encoder (H.264, AAC, MP4)
Technologies:
  • IMFSinkWriter for muxing
  • IMFTransform for H.264 encoding
  • Direct3D 11 texture interop
Auto-loaded: Yes (on Windows builds)

Android Only

LCKAndroidEncoder

Phase: PostDefault
Platforms: Android
What it does: NDK MediaCodec encoder (H.264, AAC, MP4)
Technologies:
  • AMediaCodec for encoding
  • AMediaMuxer for MP4 container
  • Vulkan/EGL texture interop
Auto-loaded: Yes (on Android builds)

LCKAndroidGallery

Phase: PostDefault
Platforms: Android
What it does: Save recordings to Android gallery
Features:
  • MediaStore integration
  • Gallery notifications
  • Scoped storage support
Auto-loaded: Yes (on Android builds)

LCKVulkan

Phase: EarliestPossible
Platforms: Android
What it does: Vulkan interop for Quest devices
Critical: Must load before engine initialization Auto-loaded: Yes (on Android builds)

Optional Audio Plugins

Audio plugins are optional and must be manually enabled if you want to use them.

Audio Priority Order

When multiple audio plugins are available, LCK uses this priority for game audio:
  1. LCKFMOD (highest priority)
  2. LCKWwise
  3. LCKUnrealAudio (built-in, always available)
Only ONE game audio source is active at a time. Microphone and voice chat can run alongside game audio.

LCKFMOD

Phase: Default
Platforms: Win64, Android
Requires: FMODStudio plugin
What it does: Capture FMOD game audio
Features:
  • DSP-based capture from master bus
  • Zero-copy audio pipeline
  • Automatic FMOD detection
How to enable:

LCKWwise

Phase: Default
Platforms: Win64, Android
Requires: Wwise plugin
What it does: Capture Wwise game audio
Features:
  • Output capture callback
  • 3rd-order ambisonic support
  • Stereo downmix
How to enable:

LCKVivox

Phase: Default
Platforms: All
Requires: VivoxCore plugin
What it does: Capture Vivox voice chat
Features:
  • Microphone capture (outgoing voice)
  • Incoming voice capture (other players)
  • Thread-safe callbacks
How to enable:

LCKOboe (Android Low-Latency Mic)

Phase: Default
Platforms: Android only
What it does: Google Oboe microphone capture
Features:
  • Low-latency audio input
  • AAudio/OpenSL ES abstraction
  • Optimized for Quest
How to enable:

Build.cs Configuration

Minimal Setup (Core Only)

This gives you low-level recording via ULCKRecorderSubsystem. No UI, no service.

Standard Setup (With Tablet UI)

This gives you ULCKService and the default tablet actor. Recommended for most developers.

Full Setup (With Audio Middleware)


Plugin Configuration (.uproject)

Basic Plugin Entry

Optional Audio Plugins

Why Optional: true? If the plugin isn’t present (e.g., FMOD plugin not installed), the game will still launch without errors.

Checking Module Availability at Runtime


Common Configurations

Quest VR Game (Android)

Auto-loaded: LCKVulkan, LCKAndroidEncoder, LCKAndroidGallery

PC VR Game (Windows)

Auto-loaded: LCKWindowsEncoder

Cross-Platform with FMOD


Multiplayer with Vivox Voice Chat


Plugin Settings UI

LCK provides a visual plugin settings UI in Project Settings: Location: Project Settings → Plugins → LCK SDK → Audio Plugins
What you can configure:
  • Enable/disable audio plugins
  • Set audio priorities
  • View warnings when multiple game audio sources are enabled
If you enable multiple game audio plugins (e.g., FMOD + Wwise), LCK will show a warning. Only ONE will be active at runtime based on priority order.

Troubleshooting

”Module ‘LCKFMOD’ could not be found”

Problem: You enabled LCKFMOD but don’t have the FMOD plugin installed. Solution: Either install FMOD plugin, or remove LCKFMOD from your .Build.cs and set "Optional": true in .uproject.

”LCKVulkan failed to load on Android”

Problem: LCKVulkan loading phase was changed or Vulkan isn’t enabled. Solution:
  1. Verify LCKVulkan loads at EarliestPossible (check plugin settings)
  2. Enable Vulkan in Android Project Settings → Mobile → Vulkan

Multiple audio sources active

Problem: You have FMOD, Wwise, and UnrealAudio all enabled. Solution: Only ONE game audio source can be active. Check priority order or disable unused plugins.

Key Takeaways

Core is required — Always include LCKCore
Platform modules auto-load — Don’t manually enable LCKWindowsEncoder/LCKAndroidEncoder
Audio plugins are optional — Only add what you need (FMOD, Wwise, Vivox)
One game audio source — FMOD > Wwise > UnrealAudio priority
LCKVulkan must load early — Never change its loading phase