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)
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
Module Hierarchy
Loading Phases Explained
| Phase | When It Loads | What It’s For |
|---|---|---|
EarliestPossible | Before engine init | Critical low-level systems (Vulkan interop) |
PostDefault | After engine, before game | Core functionality (encoders, audio) |
Default | Standard game module loading | UI, high-level systems, optional plugins |
Core Modules (Required)
LCKCore
Phase: PostDefaultPlatforms: All
What it does:
ULCKRecorderSubsystem— Low-level recording controlULCKTelemetrySubsystem— AnalyticsULCKDeveloperSettings— Project configuration- Encoder factory interface
LCKAudio
Phase: PostDefaultPlatforms: All
What it does:
ILCKAudioSourceinterfaceFLCKAudioMixfor combining sources- Audio channel management
LCKTablet
Phase: DefaultPlatforms: All
What it does:
ULCKSubsystem— World subsystemULCKService— High-level recording APIALCKTablet— Tablet actorULCKTabletDataModel— State management
LCKUI
Phase: DefaultPlatforms: All
What it does:
ULCKButton— Interactive 3D buttonsULCKSlider— Slider controls- Recording state visualization
Platform-Specific Modules
Windows Only
LCKWindowsEncoder
Phase: PostDefaultPlatforms: Win64
What it does: Windows Media Foundation encoder (H.264, AAC, MP4) Technologies:
IMFSinkWriterfor muxingIMFTransformfor H.264 encoding- Direct3D 11 texture interop
Android Only
LCKAndroidEncoder
Phase: PostDefaultPlatforms: Android
What it does: NDK MediaCodec encoder (H.264, AAC, MP4) Technologies:
AMediaCodecfor encodingAMediaMuxerfor MP4 container- Vulkan/EGL texture interop
LCKAndroidGallery
Phase: PostDefaultPlatforms: Android
What it does: Save recordings to Android gallery Features:
- MediaStore integration
- Gallery notifications
- Scoped storage support
LCKVulkan
Phase: EarliestPossiblePlatforms: 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:- LCKFMOD (highest priority)
- LCKWwise
- 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: DefaultPlatforms: 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
LCKWwise
Phase: DefaultPlatforms: Win64, Android
Requires: Wwise plugin
What it does: Capture Wwise game audio Features:
- Output capture callback
- 3rd-order ambisonic support
- Stereo downmix
LCKVivox
Phase: DefaultPlatforms: All
Requires: VivoxCore plugin
What it does: Capture Vivox voice chat Features:
- Microphone capture (outgoing voice)
- Incoming voice capture (other players)
- Thread-safe callbacks
LCKOboe (Android Low-Latency Mic)
Phase: DefaultPlatforms: Android only
What it does: Google Oboe microphone capture Features:
- Low-latency audio input
- AAudio/OpenSL ES abstraction
- Optimized for Quest
Build.cs Configuration
Minimal Setup (Core Only)
ULCKRecorderSubsystem. No UI, no service.
Standard Setup (With Tablet UI)
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)
PC VR Game (Windows)
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 PluginsWhat you can configure:
- Enable/disable audio plugins
- Set audio priorities
- View warnings when multiple game audio sources are enabled
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 removeLCKFMOD 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:- Verify LCKVulkan loads at
EarliestPossible(check plugin settings) - 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
Related
- Architecture — System architecture overview
- Audio Overview — Audio system details
- Types & Enums — Data structures