bIsConfidential

bIsConfidential

#Overview

name: bIsConfidential

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

It is referenced in 7 C++ source files.

#Summary

#Usage in the C++ source code

The purpose of bIsConfidential is to indicate whether a particular platform in Unreal Engine 5 is considered confidential or not. This setting is used to manage platform-specific behaviors, especially related to file paths and access restrictions.

This setting variable is primarily used in the Core module of Unreal Engine, specifically in areas dealing with platform information, file management, and build processes. It’s also referenced in the UnrealEd and ScreenShotComparisonTools modules.

The value of this variable is set in the platform-specific configuration files and loaded through the DataDrivenPlatformInfoRegistry system. It’s typically defined in the platform’s .ini file and loaded during engine initialization.

bIsConfidential interacts with other platform-specific settings and influences the behavior of various systems, particularly those dealing with file paths and build processes. For example, it affects the directory structure used for storing platform-specific files and build artifacts.

Developers must be aware that when bIsConfidential is set to true for a platform, it changes how certain file paths are constructed. This can affect where files are stored and how they are accessed, particularly for build outputs and screenshot comparisons.

Best practices when using this variable include:

  1. Ensure that the correct value is set in the platform’s configuration file.
  2. Be aware of how it affects file paths in your project, especially if you’re working with multiple platforms.
  3. Respect the confidentiality implications when this flag is set to true. It may indicate that extra care should be taken with files and information related to this platform.
  4. When developing cross-platform features, consider how this flag might affect your code’s behavior on different platforms.
  5. Use the FDataDrivenPlatformInfoRegistry::GetPlatformInfo() function to access this setting, rather than hardcoding platform-specific behavior.

#Setting Variables

#References In INI files

Location: <Workspace>/Engine/Config/Android/DataDrivenPlatformInfo.ini:2, section: [DataDrivenPlatformInfo]

Location: <Workspace>/Engine/Config/IOS/DataDrivenPlatformInfo.ini:2, section: [DataDrivenPlatformInfo]

Location: <Workspace>/Engine/Config/LinuxArm64/DataDrivenPlatformInfo.ini:4, section: [DataDrivenPlatformInfo]

Location: <Workspace>/Engine/Config/Mac/DataDrivenPlatformInfo.ini:2, section: [DataDrivenPlatformInfo]

Location: <Workspace>/Engine/Config/TVOS/DataDrivenPlatformInfo.ini:2, section: [DataDrivenPlatformInfo]

Location: <Workspace>/Engine/Config/Unix/DataDrivenPlatformInfo.ini:2, section: [DataDrivenPlatformInfo]

Location: <Workspace>/Engine/Config/VulkanPC/DataDrivenPlatformInfo.ini:7, section: [DataDrivenPlatformInfo]

Location: <Workspace>/Engine/Config/Windows/DataDrivenPlatformInfo.ini:2, section: [DataDrivenPlatformInfo]

Location: <Workspace>/Engine/Platforms/VisionOS/Config/DataDrivenPlatformInfo.ini:2, section: [DataDrivenPlatformInfo]

#References in C++ code

#Callsites

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

#Loc: <Workspace>/Engine/Source/Developer/ScreenShotComparisonTools/Private/ScreenShotManager.cpp:96

Scope (from outer to inner):

file
function     FString FScreenShotManager::GetApprovedFolderForImageWithOptions

Source code excerpt:

	const FDataDrivenPlatformInfo& PlatInfo = FDataDrivenPlatformInfoRegistry::GetPlatformInfo(MetaData.Platform);

	bool bUsePlatformPath = PlatInfo.bIsConfidential && (InOptions & EApprovedFolderOptions::UsePlatformFolders) == 0;

	// Test folder will be MapOrContext/ImageName
	FString TestFolder = GetPathComponentForTestImages(MetaData, false);

	FString OutPath = FPaths::ProjectDir();

#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Commandlets/AssetRegistryGenerator.cpp:2004

Scope (from outer to inner):

file
function     bool FAssetRegistryGenerator::WriteCookerOpenOrder

Source code excerpt:

	{
		TStringBuilder<256> OpenOrderFilename;
		if (FDataDrivenPlatformInfoRegistry::GetPlatformInfo(TargetPlatform->PlatformName()).bIsConfidential)
		{
			OpenOrderFilename.Appendf(TEXT("%sPlatforms/%s/Build/FileOpenOrder/CookerOpenOrder.log"), *FPaths::ProjectDir(), *TargetPlatform->PlatformName());
		}
		else
		{
			OpenOrderFilename.Appendf(TEXT("%sBuild/%s/FileOpenOrder/CookerOpenOrder.log"), *FPaths::ProjectDir(), *TargetPlatform->PlatformName());

#Loc: <Workspace>/Engine/Source/Runtime/Core/Private/HAL/IPlatformFileOpenLogWrapper.cpp:47

Scope (from outer to inner):

file
function     bool FPlatformFileOpenLog::Initialize

Source code excerpt:

		for (int32 Platform = 0; Platform < PlatformNames.Num(); ++Platform)
		{
			if (FDataDrivenPlatformInfoRegistry::GetPlatformInfo(PlatformNames[Platform]).bIsConfidential)
			{
				LogFileDirectory = FPaths::Combine(OutputDirectoryBase, TEXT("Platforms"), *PlatformNames[Platform], TEXT("Build"), TEXT("FileOpenOrder"));
			}
			else
			{
				LogFileDirectory = FPaths::Combine(OutputDirectoryBase, TEXT("Build"), *PlatformNames[Platform], TEXT("FileOpenOrder"));

#Loc: <Workspace>/Engine/Source/Runtime/Core/Private/HAL/IPlatformFileOpenLogWrapper.cpp:75

Scope (from outer to inner):

file
function     bool FPlatformFileOpenLog::Initialize

Source code excerpt:

	else
	{
		if (FDataDrivenPlatformInfoRegistry::GetPlatformInfo(FPlatformProperties::IniPlatformName()).bIsConfidential)
		{
			LogFileDirectory = FPaths::Combine(OutputDirectoryBase, TEXT("Platforms"), StringCast<TCHAR>(FPlatformProperties::PlatformName()).Get(), TEXT("Build"), TEXT("FileOpenOrder"));
		}
		else
		{
			LogFileDirectory = FPaths::Combine(OutputDirectoryBase, TEXT("Build"), StringCast<TCHAR>(FPlatformProperties::PlatformName()).Get(), TEXT("FileOpenOrder"));

#Loc: <Workspace>/Engine/Source/Runtime/Core/Private/Misc/DataDrivenPlatformInfoRegistry.cpp:336

Scope (from outer to inner):

file
function     static void LoadDDPIIniSettings

Source code excerpt:

	}

	DDPIGetBool(IniFile, TEXT("bIsConfidential"), Info.bIsConfidential);
	DDPIGetBool(IniFile, TEXT("bIsFakePlatform"), Info.bIsFakePlatform);
	DDPIGetString(IniFile, TEXT("TargetSettingsIniSectionName"), Info.TargetSettingsIniSectionName);
	DDPIGetString(IniFile, TEXT("HardwareCompressionFormat"), Info.HardwareCompressionFormat);
	DDPIGetStringArray(IniFile, TEXT("AdditionalRestrictedFolders"), Info.AdditionalRestrictedFolders);

	DDPIGetBool(IniFile, TEXT("Freezing_b32Bit"), Info.Freezing_b32Bit);

#Loc: <Workspace>/Engine/Source/Runtime/Core/Private/Misc/DataDrivenPlatformInfoRegistry.cpp:585

Scope (from outer to inner):

file
function     const TArray<FName>& FDataDrivenPlatformInfoRegistry::GetConfidentialPlatforms

Source code excerpt:

		for (auto It : GetAllPlatformInfos())
		{
			if (It.Value.bIsConfidential)
			{
				FoundPlatforms.Add(It.Key);
			}
		}

		bHasSearchedForPlatforms = true;

#Loc: <Workspace>/Engine/Source/Runtime/Core/Public/Misc/DataDrivenPlatformInfoRegistry.h:125

Scope: file

Source code excerpt:


	// is this platform confidential
	bool bIsConfidential = false;

	// some platforms are here just for IniParentChain needs and are not concrete platforms
	bool bIsFakePlatform = false;

	// the name of the ini section to use to load target platform settings (used at runtime and cooktime)
	FString TargetSettingsIniSectionName;