net.Iris.EnableDeltaCompression
net.Iris.EnableDeltaCompression
#Overview
name: net.Iris.EnableDeltaCompression
This variable is created as a Console Variable (cvar).
- type:
Var
- help:
Enable delta compression for replicated objects. Default is true.
It is referenced in 3
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of net.Iris.EnableDeltaCompression is to control the delta compression feature for replicated objects in the Unreal Engine networking system. This setting variable is specifically used in the Iris replication system, which is an experimental networking module in Unreal Engine 5.
The Iris replication system, which is part of the Unreal Engine’s networking subsystem, relies on this setting variable. It is primarily used in the delta compression functionality for optimizing network traffic.
The value of this variable is set through a console variable (CVar) system. It is initialized as a static boolean variable and linked to the console variable “net.Iris.EnableDeltaCompression” using FAutoConsoleVariableRef.
This variable interacts with other delta compression-related variables, such as “net.Iris.MinimumNumberOfFramesBetweenBaselines”, which controls the frequency of baseline updates in the delta compression system.
Developers must be aware that this variable directly impacts the network performance and bandwidth usage of their game. Enabling delta compression can significantly reduce network traffic, but it may also introduce additional computational overhead.
Best practices when using this variable include:
- Keep it enabled by default for most scenarios to benefit from reduced network traffic.
- Consider disabling it temporarily for debugging network-related issues or when precise replication of object states is required.
- Test the performance impact with and without delta compression enabled in your specific game scenarios.
- Monitor the trade-off between bandwidth savings and CPU usage when this feature is enabled.
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Runtime/Experimental/Iris/Core/Private/Iris/ReplicationSystem/DeltaCompression/DeltaCompressionBaselineManager.cpp:28
Scope (from outer to inner):
file
namespace UE::Net::Private
Source code excerpt:
static bool bIsDeltaCompressionEnabled = true;
static FAutoConsoleVariableRef CVarEnableDeltaCompression(
TEXT("net.Iris.EnableDeltaCompression"),
bIsDeltaCompressionEnabled,
TEXT("Enable delta compression for replicated objects. Default is true.")
);
// Delta compression baseline throttling.
static int32 MinimumNumberOfFramesBetweenBaselines = 60;
#Loc: <Workspace>/Engine/Plugins/Runtime/ReplicationSystemTestPlugin/Source/Private/Tests/ReplicationSystem/TestObjectDeltaSerialization.cpp:507
Scope (from outer to inner):
file
namespace UE::Net::Private
function void FTestObjectDeltaSerialization::SetUp
Source code excerpt:
void FTestObjectDeltaSerialization::SetUp()
{
CvarIrisDeltaCompression = IConsoleManager::Get().FindConsoleVariable(TEXT("net.Iris.EnableDeltaCompression"));
check(CvarIrisDeltaCompression != nullptr && CvarIrisDeltaCompression->IsVariableBool());
bDeltaCompressionEnable = CvarIrisDeltaCompression->GetBool();
CvarIrisDeltaCompression->Set(true, ECVF_SetByCode);
CvarIrisFramesBetweenBaselines = IConsoleManager::Get().FindConsoleVariable(TEXT("net.Iris.MinimumNumberOfFramesBetweenBaselines"));
check(CvarIrisFramesBetweenBaselines != nullptr && CvarIrisFramesBetweenBaselines->IsVariableInt());
#Loc: <Workspace>/Engine/Source/Runtime/Experimental/Iris/Core/Private/Iris/ReplicationSystem/DeltaCompression/DeltaCompressionBaselineManager.h:26
Scope (from outer to inner):
file
namespace UE::Net::Private
Source code excerpt:
{
/** Is the delta compression feature enabled? Togglable via net.Iris.EnableDeltaCompression. */
bool IsDeltaCompressionEnabled();
struct FDeltaCompressionBaselineManagerInitParams
{
const FDeltaCompressionBaselineInvalidationTracker* BaselineInvalidationTracker = nullptr;
FReplicationConnections* Connections = nullptr;