Net.MakeBpPropertiesPushModel

Net.MakeBpPropertiesPushModel

#Overview

name: Net.MakeBpPropertiesPushModel

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

It is referenced in 4 C++ source files.

#Summary

#Usage in the C++ source code

The purpose of Net.MakeBpPropertiesPushModel is to control whether properties declared in Blueprints are forced to use the Push Model for network replication in Unreal Engine.

This setting variable is primarily used by the networking subsystem, specifically the Push Model component of Unreal Engine’s networking architecture. It’s part of the Net Core module, which handles core networking functionality.

The value of this variable is set through a console variable (CVar) system. It’s initialized to true by default and can be changed at runtime using console commands.

The associated variable bMakeBpPropertiesPushModel directly interacts with Net.MakeBpPropertiesPushModel. They share the same value, with bMakeBpPropertiesPushModel being the C++ boolean variable that’s used in the code to check the setting.

Developers should be aware that this setting affects how Blueprint-declared properties are handled in network replication. When enabled, it forces all Blueprint-declared properties to use the Push Model, which can have implications for network performance and behavior.

Best practices when using this variable include:

  1. Understanding the impact of Push Model on network performance for your specific use case.
  2. Testing network behavior with this setting both enabled and disabled to ensure optimal performance.
  3. Being cautious when changing this setting in a live environment, as it can significantly alter network behavior.

Regarding the associated variable bMakeBpPropertiesPushModel:

#References in C++ code

#Callsites

This variable is referenced in the following C++ source code:

#Loc: <Workspace>/Engine/Source/Runtime/Net/Core/Private/Net/Core/PushModel/PushModel.cpp:440

Scope (from outer to inner):

file
namespace    UEPushModelPrivate

Source code excerpt:

	bool bMakeBpPropertiesPushModel = true;
	FAutoConsoleVariableRef CVarMakeBpPropertiesPushModel(
		TEXT("Net.MakeBpPropertiesPushModel"),
		bMakeBpPropertiesPushModel,
		TEXT("Whether or not properties declared in Blueprints will be forced to used Push Model")
	);

	FAutoConsoleCommand PushModelPrintHandles(
		TEXT("Net.PushModelPrintHandles"),

#Associated Variable and Callsites

This variable is associated with another variable named bMakeBpPropertiesPushModel. They share the same value. See the following C++ source code.

#Loc: <Workspace>/Engine/Source/Runtime/Net/Core/Private/Net/Core/PushModel/PushModel.cpp:438

Scope (from outer to inner):

file
namespace    UEPushModelPrivate

Source code excerpt:

	);
	
	bool bMakeBpPropertiesPushModel = true;
	FAutoConsoleVariableRef CVarMakeBpPropertiesPushModel(
		TEXT("Net.MakeBpPropertiesPushModel"),
		bMakeBpPropertiesPushModel,
		TEXT("Whether or not properties declared in Blueprints will be forced to used Push Model")
	);

	FAutoConsoleCommand PushModelPrintHandles(
		TEXT("Net.PushModelPrintHandles"),
		TEXT("Prints the list of replicated objects relevant to a specific connection"),

#Loc: <Workspace>/Engine/Source/Runtime/Net/Core/Public/Net/Core/PushModel/PushModel.h:334

Scope (from outer to inner):

file
namespace    UEPushModelPrivate

Source code excerpt:


	extern NETCORE_API bool bIsPushModelEnabled;
	extern NETCORE_API bool bMakeBpPropertiesPushModel;

	/** @return Whether or not PushModel is currently enabled. See "net.IsPushModelEnabled." */
	static const bool IsPushModelEnabled()
	{
		return bIsPushModelEnabled;
	}

#Loc: <Workspace>/Engine/Source/Runtime/Net/Core/Public/Net/Core/PushModel/PushModel.h:345

Scope (from outer to inner):

file
namespace    UEPushModelPrivate
function     static const bool MakeBpPropertiesPushModel

Source code excerpt:

	static const bool MakeBpPropertiesPushModel()
	{
		return bMakeBpPropertiesPushModel;
	}

	/** Are we allowed to create new push model handles */
	NETCORE_API bool IsHandleCreationAllowed();

	/** Control if we are allowed to create pushmodel handles */