BuildIdOverride
BuildIdOverride
#Overview
name: BuildIdOverride
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 8
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of BuildIdOverride is to provide a way to manually set or override the build ID used for matchmaking in Unreal Engine’s online services and subsystems. This variable allows developers to control the build identification for networking and compatibility purposes.
BuildIdOverride is primarily used in the Online Services and Online Subsystem modules of Unreal Engine. These modules are responsible for handling various online functionalities, including matchmaking.
The value of BuildIdOverride can be set in multiple ways:
- Through the command line using the “BuildIdOverride=” parameter
- In the DefaultEngine.ini file under the [OnlineServices] or [OnlineSubsystem] section
- At runtime using the “buildidoverride” console variable
BuildIdOverride interacts with other variables such as:
- bUseBuildIdOverride: Determines whether to use the override value
- BuildId: The actual build ID used for matchmaking
Developers should be aware of the following when using this variable:
- It affects matchmaking compatibility between different game builds
- Incorrect use can lead to players with different versions being unable to connect
- It can be useful for testing and development purposes, but should be used carefully in production
Best practices for using BuildIdOverride include:
- Use it consistently across all instances of a game that should be compatible
- Document any custom build ID schemes used in your project
- Consider using automated systems to manage build IDs in production environments
- Test thoroughly to ensure proper matchmaking behavior when using custom build IDs
- Be cautious when changing the build ID in live environments, as it may disrupt ongoing matches or player connections
#Setting Variables
#References In INI files
Location: <Workspace>/Engine/Config/BaseEngine.ini:2236, section: [OnlineSubsystem]
- INI Section:
OnlineSubsystem
- Raw value:
0
- Is Array:
False
#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:17
Scope (from outer to inner):
file
namespace UE::Online
function int32 GetBuildUniqueId
Source code excerpt:
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 "),
ECVF_Default);
#Loc: <Workspace>/Engine/Plugins/Online/OnlineServices/Source/OnlineServicesInterface/Private/Online/OnlineServices.cpp:31
Scope (from outer to inner):
file
namespace UE::Online
function int32 GetBuildUniqueId
Source code excerpt:
if (FParse::Value(FCommandLine::Get(), TEXT("BuildIdOverride="), BuildIdOverrideCommandLineString))
{
BuildIdOverride = FCString::Atoi(*BuildIdOverrideCommandLineString);
}
if (BuildIdOverride != 0)
{
bUseBuildIdOverride = true;
}
else
{
if (!GConfig->GetBool(TEXT("OnlineServices"), TEXT("bUseBuildIdOverride"), bUseBuildIdOverride, GEngineIni))
#Loc: <Workspace>/Engine/Plugins/Online/OnlineServices/Source/OnlineServicesInterface/Private/Online/OnlineServices.cpp:44
Scope (from outer to inner):
file
namespace UE::Online
function int32 GetBuildUniqueId
Source code excerpt:
}
if (!GConfig->GetInt(TEXT("OnlineServices"), TEXT("BuildIdOverride"), BuildIdOverride, GEngineIni))
{
UE_LOG(LogOnlineServices, Warning, TEXT("Missing BuildIdOverride= in [OnlineServices] of DefaultEngine.ini"));
}
}
if (bUseBuildIdOverride == false)
#Loc: <Workspace>/Engine/Plugins/Online/OnlineServices/Source/OnlineServicesInterface/Private/Online/OnlineServices.cpp:58
Scope (from outer to inner):
file
namespace UE::Online
function int32 GetBuildUniqueId
Source code excerpt:
else
{
BuildId = BuildIdOverride;
}
}
return BuildId;
}
#Loc: <Workspace>/Engine/Plugins/Online/OnlineSubsystem/Source/Private/OnlineSubsystem.cpp:213
Scope (from outer to inner):
file
function int32 GetBuildUniqueId
Source code excerpt:
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 "),
ECVF_Default);
#Loc: <Workspace>/Engine/Plugins/Online/OnlineSubsystem/Source/Private/OnlineSubsystem.cpp:227
Scope (from outer to inner):
file
function int32 GetBuildUniqueId
Source code excerpt:
if (FParse::Value(FCommandLine::Get(), TEXT("BuildIdOverride="), BuildIdOverrideCommandLineString))
{
BuildIdOverride = FCString::Atoi(*BuildIdOverrideCommandLineString);
}
if (BuildIdOverride != 0)
{
bUseBuildIdOverride = true;
}
else
{
if (!GConfig->GetBool(TEXT("OnlineSubsystem"), TEXT("bUseBuildIdOverride"), bUseBuildIdOverride, GEngineIni))
#Loc: <Workspace>/Engine/Plugins/Online/OnlineSubsystem/Source/Private/OnlineSubsystem.cpp:240
Scope (from outer to inner):
file
function int32 GetBuildUniqueId
Source code excerpt:
}
if (!GConfig->GetInt(TEXT("OnlineSubsystem"), TEXT("BuildIdOverride"), BuildIdOverride, GEngineIni))
{
UE_LOG_ONLINE(Warning, TEXT("Missing BuildIdOverride= in [OnlineSubsystem] of DefaultEngine.ini"));
}
}
if (bUseBuildIdOverride == false)
#Loc: <Workspace>/Engine/Plugins/Online/OnlineSubsystem/Source/Private/OnlineSubsystem.cpp:254
Scope (from outer to inner):
file
function int32 GetBuildUniqueId
Source code excerpt:
else
{
BuildId = BuildIdOverride;
}
// Will add an info entry to the console
static FTrackedActivity Ta(TEXT("BuildId"), *FString::FromInt(BuildId), FTrackedActivity::ELight::None, FTrackedActivity::EType::Info);
CVarBuildIdOverride->SetOnChangedCallback(FConsoleVariableDelegate::CreateLambda([](IConsoleVariable* CVar) { Ta.Update(*CVar->GetString()); }));
}