net.Iris.EnableDeltaCompression

net.Iris.EnableDeltaCompression

#Overview

name: net.Iris.EnableDeltaCompression

This variable is created as a Console Variable (cvar).

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:

  1. Keep it enabled by default for most scenarios to benefit from reduced network traffic.
  2. Consider disabling it temporarily for debugging network-related issues or when precise replication of object states is required.
  3. Test the performance impact with and without delta compression enabled in your specific game scenarios.
  4. 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;