wp.Runtime.BlockOnSlowStreaming
wp.Runtime.BlockOnSlowStreaming
#Overview
name: wp.Runtime.BlockOnSlowStreaming
This variable is created as a Console Variable (cvar).
- type:
Var
- help:
Set if streaming needs to block when to slow to catchup.
It is referenced in 5
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of wp.Runtime.BlockOnSlowStreaming is to control the behavior of World Partition streaming when it becomes too slow to keep up with the game’s demands. This setting variable is part of Unreal Engine 5’s World Partition system, which is responsible for managing large open-world environments by dynamically streaming in and out portions of the world as needed.
This setting variable is primarily used within the World Partition streaming policy subsystem of Unreal Engine 5. It’s defined in the Engine module and is utilized in the MovieRenderPipeline plugin.
The value of this variable is set through an FAutoConsoleVariableRef, which means it can be modified at runtime through console commands or configuration files. By default, it’s set to 1 (true), indicating that streaming will block when it’s too slow to catch up.
Other variables don’t directly interact with it in the provided code snippets, but it’s used in conjunction with other settings related to rendering and physics in the MovieRenderPipeline plugin.
Developers must be aware that this variable can significantly impact performance and gameplay experience. When set to 1 (true), it may cause hitches or pauses in gameplay if the streaming system can’t keep up. When set to 0 (false), it may result in missing or low-quality content if the streaming system falls behind.
Best practices when using this variable include:
- Testing thoroughly with both settings (0 and 1) to understand the impact on your specific game.
- Consider setting it to 0 during cinematics or movie rendering to prevent unexpected pauses.
- Use in conjunction with other streaming-related settings to fine-tune performance.
- Monitor streaming performance and adjust other aspects of your game (like content density or level of detail settings) if streaming is consistently slow.
- Be cautious when changing this setting at runtime, as it could lead to sudden changes in game behavior.
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/WorldPartition/WorldPartitionStreamingPolicy.cpp:28
Scope: file
Source code excerpt:
int32 GBlockOnSlowStreaming = 1;
static FAutoConsoleVariableRef CVarBlockOnSlowStreaming(
TEXT("wp.Runtime.BlockOnSlowStreaming"),
GBlockOnSlowStreaming,
TEXT("Set if streaming needs to block when to slow to catchup."));
static FString GServerDisallowStreamingOutDataLayersString;
static FAutoConsoleVariableRef CVarServerDisallowStreamingOutDataLayers(
TEXT("wp.Runtime.ServerDisallowStreamingOutDataLayers"),
#Loc: <Workspace>/Engine/Plugins/MovieScene/MovieRenderPipeline/Source/MovieRenderPipelineCore/Private/Graph/Nodes/MovieGraphGlobalGameOverrides.cpp:81
Scope (from outer to inner):
file
function void UMovieGraphGlobalGameOverridesNode::BuildNewProcessCommandLineArgsImpl
Source code excerpt:
InOutDeviceProfileCvars.Add(FString::Printf(TEXT("r.VolumetricRenderTarget=%d"), 1));
InOutDeviceProfileCvars.Add(FString::Printf(TEXT("r.VolumetricRenderTarget.Mode=%d"), 3));
InOutDeviceProfileCvars.Add(FString::Printf(TEXT("wp.Runtime.BlockOnSlowStreaming=%d"), 0));
InOutDeviceProfileCvars.Add(FString::Printf(TEXT("p.Chaos.ImmPhys.MinStepTime=%d"), 0));
InOutDeviceProfileCvars.Add(FString::Printf(TEXT("r.SkipRedundantTransformUpdate=%d"), 0));
InOutDeviceProfileCvars.Add(FString::Printf(TEXT("p.ChaosCloth.UseTimeStepSmoothing=%d"), 0));
}
void UMovieGraphGlobalGameOverridesNode::ApplySettings(const bool bOverrideValues, UWorld* InWorld)
#Loc: <Workspace>/Engine/Plugins/MovieScene/MovieRenderPipeline/Source/MovieRenderPipelineCore/Private/Graph/Nodes/MovieGraphGlobalGameOverrides.cpp:157
Scope (from outer to inner):
file
function void UMovieGraphGlobalGameOverridesNode::ApplySettings
Source code excerpt:
// To make sure that the world partition streaming doesn't end up in critical streaming performances and stops streaming low priority cells.
MOVIEPIPELINE_STORE_AND_OVERRIDE_CVAR_INT(PreviousIgnoreStreamingPerformance, TEXT("wp.Runtime.BlockOnSlowStreaming"), 0, bOverrideValues);
// Remove any minimum delta time requirements from Chaos Physics to ensure accuracy at high Temporal Sample counts
MOVIEPIPELINE_STORE_AND_OVERRIDE_CVAR_FLOAT(PreviousChaosImmPhysicsMinStepTime, TEXT("p.Chaos.ImmPhys.MinStepTime"), 0, bOverrideValues);
// MRQ's 0 -> 0.99 -> 0 evaluation for motion blur emulation can occasionally cause it to be detected as a redundant update and thus never updated
// which causes objects to render in the wrong position on the first frame (and without motion blur). This disables an optimization that detects
#Loc: <Workspace>/Engine/Plugins/MovieScene/MovieRenderPipeline/Source/MovieRenderPipelineCore/Private/MoviePipelineGameOverrideSetting.cpp:124
Scope (from outer to inner):
file
function void UMoviePipelineGameOverrideSetting::ApplyCVarSettings
Source code excerpt:
// To make sure that the world partition streaming doesn't end up in critical streaming performances and stops streaming low priority cells.
MOVIEPIPELINE_STORE_AND_OVERRIDE_CVAR_INT(PreviousIgnoreStreamingPerformance, TEXT("wp.Runtime.BlockOnSlowStreaming"), 0, bOverrideValues);
// Remove any minimum delta time requirements from Chaos Physics to ensure accuracy at high Temporal Sample counts
MOVIEPIPELINE_STORE_AND_OVERRIDE_CVAR_FLOAT(PreviousChaosImmPhysicsMinStepTime, TEXT("p.Chaos.ImmPhys.MinStepTime"), 0, bOverrideValues);
// MRQ's 0 -> 0.99 -> 0 evaluation for motion blur emulation can occasionally cause it to be detected as a redundant update and thus never updated
// which causes objects to render in the wrong position on the first frame (and without motion blur). This disables an optimization that detects
#Loc: <Workspace>/Engine/Plugins/MovieScene/MovieRenderPipeline/Source/MovieRenderPipelineCore/Private/MoviePipelineGameOverrideSetting.cpp:240
Scope (from outer to inner):
file
function void UMoviePipelineGameOverrideSetting::BuildNewProcessCommandLineArgsImpl
Source code excerpt:
InOutDeviceProfileCvars.Add(FString::Printf(TEXT("r.VolumetricRenderTarget=%d"), 1));
InOutDeviceProfileCvars.Add(FString::Printf(TEXT("r.VolumetricRenderTarget.Mode=%d"), 3));
InOutDeviceProfileCvars.Add(FString::Printf(TEXT("wp.Runtime.BlockOnSlowStreaming=%d"), 0));
InOutDeviceProfileCvars.Add(FString::Printf(TEXT("p.Chaos.ImmPhys.MinStepTime=%d"), 0));
InOutDeviceProfileCvars.Add(FString::Printf(TEXT("r.SkipRedundantTransformUpdate=%d"), 0));
InOutDeviceProfileCvars.Add(FString::Printf(TEXT("p.ChaosCloth.UseTimeStepSmoothing=%d"), 0));
}