Quick answer: Check that the .uplugin lists “Default Content” entries correctly, plugin asset registry is up to date, and dependency plugins are loaded first.
A modular game uses Game Features for content packs. Activating “DLC_DesertRegion” logs “Failed to activate”. The plugin’s actions ran but loading errored mid-way.
Check uplugin Config
{
"FileVersion": 3,
"Version": 1,
"Plugins": [
{ "Name": "GameFeatures", "Enabled": true }
],
"Modules": [
{ "Name": "DesertRegion", "Type": "Runtime", "LoadingPhase": "Default" }
]
}
Required dependency: GameFeatures plugin. Module loading phase typically Default.
Activate Programmatically
UGameFeaturesSubsystem& Subsystem = UGameFeaturesSubsystem::Get();
FString PluginURL;
Subsystem.GetPluginURLByName("DLC_DesertRegion", PluginURL);
Subsystem.LoadAndActivateGameFeaturePlugin(PluginURL, FGameFeaturePluginLoadComplete::CreateLambda([](const UE::GameFeatures::FResult& Result) {
if (Result.HasError()) UE_LOG(LogGameFeatures, Error, TEXT("%s"), *Result.GetError());
}));
The async load+activate gives a Result with detailed error on failure.
Common Activation Errors
- “Plugin not found”: name mismatch with .uplugin file.
- “Failed to read manifest”: asset registry stale; regenerate via Edit → Plugins → Refresh.
- “Action failed”: a UGameFeatureAction threw; check that action’s log.
Log Trace
LogGameFeatures: VeryVerbose
In DefaultEngine.ini for [Core.Log]. Detailed activation trace prints; spot which step failed.
Verifying
Activate plugin. Log shows StatePending → Activating → Active. Content (assets, actions) live in the world. Deactivate cleanly reverses.
“Game Features have explicit state machines. Read the log to identify which transition failed.”
For DLC-style content shipping, sign and version your plugin packages — LiveOps push can roll out new features without engine updates.