I have ran into an issue after packaging my project. The game In Editor looks quite different than the packaged version. In the editor there are clear shadows where the rocks are intersecting and the stone arch is casting shadows as well. These shadows are not present in the packaged build. The editor also has a lighter and more vibrant look. The blacks are too much in the packaged version. These dark blacks are highly noticeable in the bridges’ wood and where the stones have their shadows. The light illumination is also not matching. The glyphs on the arch are emitting light that is bouncing around the stones and the blue fog is also more emissive than the packaged version.
There were a few things I attempted, to try and get the packaged build to match the editor.
I checked my DefaultEngine.ini and made sure there was virtual shadows, Lumen and GI settings on.
r.GenerateMeshDistanceFields=True
r.DynamicGlobalIlluminationMethod=1
r.ReflectionMethod=1
r.Shadow.Virtual.Enable=1
r.Lumen.TraceMeshSDFs=1
I double checked my post process volume and set the Infinite Extents to unbound.
While in my packaged build I also used these commands in console
sg.ViewDistanceQuality 3
sg.ShadowQuality 3
sg.PostProcessQuality 3
In my project settings I double checked that the system was set to Maximum for Target Hardware.
Additionally, I created a c++ class to switch settings:
UENUM(BlueprintType)
enum class EFlockEmTestProfile : uint8
{
Native_NoLumen UMETA(DisplayName = "1. Native - No Lumen"),
Native_Lumen UMETA(DisplayName = "2. Native - Lumen"),
Upscale4K_Lumen UMETA(DisplayName = "3. 1440p -> 4K - Lumen"),
Upscale4K_NoLumen UMETA(DisplayName = "4. 1440p -> 4K - No Lumen"),
SteamDeck_Lumen UMETA(DisplayName = "5. Steam Deck - Lumen"),
SteamDeck_NoLumen UMETA(DisplayName = "6. Steam Deck - No Lumen"),
AutoDetect UMETA(DisplayName = "7. Auto-Detect Hardware") // The New "Production" Setting
};
void UFlockEmSettingsLibrary::ApplyTestProfile(const UObject* WorldContextObject, EFlockEmTestProfile Profile)
{
UWorld* World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull);
UGameUserSettings* Settings = GEngine->GetGameUserSettings();
if (!World || !Settings) return;
// Handle Auto-Detection first
if (Profile == EFlockEmTestProfile::AutoDetect)
{
if (IsRunningOnSteamDeck())
{
// Default to 60 FPS Performance for the Steam Deck
ApplyTestProfile(WorldContextObject, EFlockEmTestProfile::SteamDeck_NoLumen);
}
else
{
// Default to High Visuals for Desktop
ApplyTestProfile(WorldContextObject, EFlockEmTestProfile::Upscale4K_Lumen);
}
return; // Exit here so we don't double-apply settings
}
// --- Existing Profiles ---
auto SetLumen = \[&\](bool bEnable) {
int32 Quality = bEnable ? 2 : 1;
Settings->SetGlobalIlluminationQuality(Quality);
Settings->SetReflectionQuality(Quality);
};
switch (Profile)
{
case EFlockEmTestProfile::Native_NoLumen:
Settings->SetFullscreenMode(EWindowMode::WindowedFullscreen);
UKismetSystemLibrary::ExecuteConsoleCommand(World, TEXT("r.ScreenPercentage 100"));
SetLumen(false);
break;
case EFlockEmTestProfile::Native_Lumen:
Settings->SetFullscreenMode(EWindowMode::WindowedFullscreen);
UKismetSystemLibrary::ExecuteConsoleCommand(World, TEXT("r.ScreenPercentage 100"));
SetLumen(true);
break;
case EFlockEmTestProfile::Upscale4K_Lumen:
Settings->SetScreenResolution(FIntPoint(3840, 2160));
UKismetSystemLibrary::ExecuteConsoleCommand(World, TEXT("r.AntiAliasingMethod 4"));
UKismetSystemLibrary::ExecuteConsoleCommand(World, TEXT("r.ScreenPercentage 66.66"));
SetLumen(true);
break;
case EFlockEmTestProfile::Upscale4K_NoLumen:
Settings->SetScreenResolution(FIntPoint(3840, 2160));
UKismetSystemLibrary::ExecuteConsoleCommand(World, TEXT("r.AntiAliasingMethod 4"));
UKismetSystemLibrary::ExecuteConsoleCommand(World, TEXT("r.ScreenPercentage 66.66"));
SetLumen(false);
break;
case EFlockEmTestProfile::SteamDeck_Lumen:
Settings->SetScreenResolution(FIntPoint(1280, 800)); // Target Steam Deck Resolution
Settings->SetFullscreenMode(EWindowMode::Fullscreen);
UKismetSystemLibrary::ExecuteConsoleCommand(World, TEXT("r.ScreenPercentage 100"));
SetLumen(true); // Hits the 34-56 FPS range
break;
case EFlockEmTestProfile::SteamDeck_NoLumen:
Settings->SetScreenResolution(FIntPoint(1280, 800));
Settings->SetFullscreenMode(EWindowMode::Fullscreen);
UKismetSystemLibrary::ExecuteConsoleCommand(World, TEXT("r.ScreenPercentage 100"));
SetLumen(false); // Goal: Stable 60 FPS
break;
}
Settings->ApplySettings(true);
}
Sorry if the c++ is bad. I’m new to programming ![]()
When switching through the Profiles the same issues persist. Any suggestions in what I can check or do to get my packaged build to match the editor’s look?

