bUseBuildIdOverride

bUseBuildIdOverride

#Overview

name: bUseBuildIdOverride

The value of this variable can be defined or overridden in .ini config files. 1 .ini config file referencing this setting variable.

It is referenced in 6 C++ source files.

#Summary

#Usage in the C++ source code

The purpose of bUseBuildIdOverride is to control whether a custom build ID should be used for matchmaking in Unreal Engine’s online services. This variable is part of the online subsystem and is used to manage compatibility between different game builds in multiplayer scenarios.

The Unreal Engine subsystems that rely on this setting variable are primarily the Online Services module and the Online Subsystem. These modules are responsible for managing online functionality, including matchmaking and network compatibility.

The value of this variable is typically set in the DefaultEngine.ini configuration file under the [OnlineServices] or [OnlineSubsystem] section. It can also be modified at runtime through console variables.

This variable interacts closely with BuildIdOverride, which specifies the actual custom build ID to use when bUseBuildIdOverride is set to true. If bUseBuildIdOverride is false, the engine uses the default network-compatible changelist number as the build ID.

Developers must be aware that modifying this variable can affect matchmaking and online compatibility. Incorrect use could prevent players with different builds from connecting to each other.

Best practices when using this variable include:

  1. Only enable it when necessary, such as when forcing compatibility with an older build.
  2. Ensure that the BuildIdOverride value is set correctly when bUseBuildIdOverride is true.
  3. Document any changes to these settings to maintain consistency across development and production environments.
  4. Consider the implications on matchmaking and multiplayer functionality when modifying these values.
  5. Use it in conjunction with proper version control and build management practices to avoid unintended consequences in online play.

#Setting Variables

#References In INI files

Location: <Workspace>/Engine/Config/BaseEngine.ini:2235, section: [OnlineSubsystem]

#References in C++ code

#Callsites

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

#Loc: <Workspace>/Engine/Plugins/Online/OnlineServices/Source/OnlineServicesInterface/Private/Online/OnlineServices.cpp:16

Scope (from outer to inner):

file
namespace    UE::Online
function     int32 GetBuildUniqueId

Source code excerpt:

	static bool bStaticCheck = false;
	static int32 BuildId = 0;
	static bool bUseBuildIdOverride = false;
	static int32 BuildIdOverride = 0;

	// add a cvar so it can be modified at runtime
	static FAutoConsoleVariableRef CVarBuildIdOverride(
		TEXT("buildidoverride"), BuildId,
		TEXT("Sets build id used for matchmaking "),

#Loc: <Workspace>/Engine/Plugins/Online/OnlineServices/Source/OnlineServicesInterface/Private/Online/OnlineServices.cpp:35

Scope (from outer to inner):

file
namespace    UE::Online
function     int32 GetBuildUniqueId

Source code excerpt:

		if (BuildIdOverride != 0)
		{
			bUseBuildIdOverride = true;
		}
		else
		{
			if (!GConfig->GetBool(TEXT("OnlineServices"), TEXT("bUseBuildIdOverride"), bUseBuildIdOverride, GEngineIni))
			{
				UE_LOG(LogOnlineServices, Warning, TEXT("Missing bUseBuildIdOverride= in [OnlineServices] of DefaultEngine.ini"));
			}

			if (!GConfig->GetInt(TEXT("OnlineServices"), TEXT("BuildIdOverride"), BuildIdOverride, GEngineIni))
			{

#Loc: <Workspace>/Engine/Plugins/Online/OnlineServices/Source/OnlineServicesInterface/Private/Online/OnlineServices.cpp:50

Scope (from outer to inner):

file
namespace    UE::Online
function     int32 GetBuildUniqueId

Source code excerpt:

		}

		if (bUseBuildIdOverride == false)
		{
			// Removed old hashing code to use something more predictable and easier to override for when
			// it's necessary to force compatibility with an older build
			BuildId = FNetworkVersion::GetNetworkCompatibleChangelist();
		}
		else

#Loc: <Workspace>/Engine/Plugins/Online/OnlineSubsystem/Source/Private/OnlineSubsystem.cpp:212

Scope (from outer to inner):

file
function     int32 GetBuildUniqueId

Source code excerpt:

	static bool bStaticCheck = false;
	static int32 BuildId = 0;
	static bool bUseBuildIdOverride = false;
	static int32 BuildIdOverride = 0;

	// add a cvar so it can be modified at runtime
	static FAutoConsoleVariableRef CVarBuildIdOverride(
		TEXT("buildidoverride"), BuildId,
		TEXT("Sets build id used for matchmaking "),

#Loc: <Workspace>/Engine/Plugins/Online/OnlineSubsystem/Source/Private/OnlineSubsystem.cpp:231

Scope (from outer to inner):

file
function     int32 GetBuildUniqueId

Source code excerpt:

		if (BuildIdOverride != 0)
		{
			bUseBuildIdOverride = true;
		}
		else
		{
			if (!GConfig->GetBool(TEXT("OnlineSubsystem"), TEXT("bUseBuildIdOverride"), bUseBuildIdOverride, GEngineIni))
			{
				UE_LOG_ONLINE(Warning, TEXT("Missing bUseBuildIdOverride= in [OnlineSubsystem] of DefaultEngine.ini"));
			}

			if (!GConfig->GetInt(TEXT("OnlineSubsystem"), TEXT("BuildIdOverride"), BuildIdOverride, GEngineIni))
			{

#Loc: <Workspace>/Engine/Plugins/Online/OnlineSubsystem/Source/Private/OnlineSubsystem.cpp:246

Scope (from outer to inner):

file
function     int32 GetBuildUniqueId

Source code excerpt:

		}

		if (bUseBuildIdOverride == false)
		{
			// Removed old hashing code to use something more predictable and easier to override for when
			// it's necessary to force compatibility with an older build
			BuildId = FNetworkVersion::GetNetworkCompatibleChangelist();
		}
		else