TitleStorageTags

TitleStorageTags

#Overview

name: TitleStorageTags

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

It is referenced in 6 C++ source files.

#Summary

#Usage in the C++ source code

The purpose of TitleStorageTags is to define tag combinations for paged queries in title file enumerations within the Epic Online Services (EOS) subsystem of Unreal Engine 5.

This setting variable is primarily used by the Online Subsystem EOS plugin, which is part of Unreal Engine’s online services infrastructure. Specifically, it’s utilized in the title file management system.

The value of this variable is set in the engine configuration files (GEngineIni) and can be accessed through the UEOSSettings class. It’s loaded in the ManualGetSettings function of the EOSSettings.cpp file.

TitleStorageTags interacts with other variables in the EOS subsystem, particularly those related to title file enumeration and management. It’s used in conjunction with the EnumerateFiles function in the OnlineTitleFileEOS class.

Developers must be aware that:

  1. TitleStorageTags is an array of strings, where each string can contain multiple tags separated by ‘+’ symbols.
  2. If TitleStorageTags is empty, title file enumeration will fail.
  3. The variable is used for paged queries, so developers need to consider pagination when working with large numbers of title files.

Best practices when using this variable include:

  1. Ensure that TitleStorageTags is properly configured in the engine settings before attempting to enumerate title files.
  2. Use meaningful and consistent tag combinations to organize title files effectively.
  3. Consider the impact of the number and complexity of tags on performance, especially for large-scale projects.
  4. Test title file enumeration thoroughly with various tag combinations to ensure robust functionality.

#Setting Variables

#References In INI files

Location: <Workspace>/Projects/Lyra/Config/Custom/EOS/DefaultEngine.ini:31, section: [/Script/OnlineSubsystemEOS.EOSSettings]

Location: <Workspace>/Projects/Lyra/Config/Custom/EOS/DefaultEngine.ini:32, section: [/Script/OnlineSubsystemEOS.EOSSettings]

Location: <Workspace>/Projects/Lyra/Config/Custom/EOS/DefaultEngine.ini:33, section: [/Script/OnlineSubsystemEOS.EOSSettings]

Location: <Workspace>/Projects/Lyra/Config/Custom/EOS/DefaultEngine.ini:34, section: [/Script/OnlineSubsystemEOS.EOSSettings]

Location: <Workspace>/Projects/Lyra/Config/Custom/EOS/DefaultEngine.ini:35, section: [/Script/OnlineSubsystemEOS.EOSSettings]

Location: <Workspace>/Projects/Lyra/Config/Custom/EOS/DefaultEngine.ini:36, section: [/Script/OnlineSubsystemEOS.EOSSettings]

Location: <Workspace>/Projects/Lyra/Config/Custom/EOS/DefaultEngine.ini:37, section: [/Script/OnlineSubsystemEOS.EOSSettings]

Location: <Workspace>/Projects/Lyra/Config/Custom/SteamEOS/DefaultEngine.ini:36, section: [/Script/OnlineSubsystemEOS.EOSSettings]

Location: <Workspace>/Projects/Lyra/Config/Custom/SteamEOS/DefaultEngine.ini:37, section: [/Script/OnlineSubsystemEOS.EOSSettings]

Location: <Workspace>/Projects/Lyra/Config/Custom/SteamEOS/DefaultEngine.ini:38, section: [/Script/OnlineSubsystemEOS.EOSSettings]

Location: <Workspace>/Projects/Lyra/Config/Custom/SteamEOS/DefaultEngine.ini:39, section: [/Script/OnlineSubsystemEOS.EOSSettings]

Location: <Workspace>/Projects/Lyra/Config/Custom/SteamEOS/DefaultEngine.ini:40, section: [/Script/OnlineSubsystemEOS.EOSSettings]

Location: <Workspace>/Projects/Lyra/Config/Custom/SteamEOS/DefaultEngine.ini:41, section: [/Script/OnlineSubsystemEOS.EOSSettings]

Location: <Workspace>/Projects/Lyra/Config/Custom/SteamEOS/DefaultEngine.ini:42, section: [/Script/OnlineSubsystemEOS.EOSSettings]

#References in C++ code

#Callsites

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

#Loc: <Workspace>/Engine/Plugins/Online/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Private/EOSSettings.cpp:194

Scope (from outer to inner):

file
function     const FEOSSettings& UEOSSettings::ManualGetSettings

Source code excerpt:

		GConfig->GetBool(INI_SECTION, TEXT("bMirrorPresenceToEAS"), CachedSettings->bMirrorPresenceToEAS, GEngineIni);
		// Artifacts explicitly skipped
		GConfig->GetArray(INI_SECTION, TEXT("TitleStorageTags"), CachedSettings->TitleStorageTags, GEngineIni);
		GConfig->GetArray(INI_SECTION, TEXT("AuthScopeFlags"), CachedSettings->AuthScopeFlags, GEngineIni);
	}

	return *CachedSettings;
}

#Loc: <Workspace>/Engine/Plugins/Online/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Private/EOSSettings.cpp:226

Scope (from outer to inner):

file
function     FEOSSettings UEOSSettings::ToNative

Source code excerpt:

	Native.bMirrorPresenceToEAS = bMirrorPresenceToEAS;
	Algo::Transform(Artifacts, Native.Artifacts, &FArtifactSettings::ToNative);
	Native.TitleStorageTags = TitleStorageTags;
	Native.AuthScopeFlags = AuthScopeFlags;

	return Native;
}

bool UEOSSettings::GetSelectedArtifactSettings(FEOSArtifactSettings& OutSettings)

#Loc: <Workspace>/Engine/Plugins/Online/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Private/OnlineTitleFileEOS.cpp:120

Scope (from outer to inner):

file
function     bool FOnlineTitleFileEOS::EnumerateFiles

Source code excerpt:

	FString ErrorStr;
	bool bStarted = true;
	TArray<FString> TitleStorageTags = UEOSSettings::GetSettings().TitleStorageTags;

	if (TitleStorageTags.Num() == 0)
	{
		ErrorStr = TEXT("No tags defined");
		bStarted = false;
	}
	else if (Page.Start >= TitleStorageTags.Num())
	{
		ErrorStr = FString::Printf(TEXT("Unknown tag page %d"), Page.Start);
		bStarted = false;
	}

	if (!bStarted)

#Loc: <Workspace>/Engine/Plugins/Online/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Private/OnlineTitleFileEOS.cpp:144

Scope (from outer to inner):

file
function     bool FOnlineTitleFileEOS::EnumerateFiles

Source code excerpt:


	// Find all tags defined for the start page
	FString& PageTagsRaw = TitleStorageTags[Page.Start];
	const TCHAR* TagDelims[1] = { TEXT("+") };
	TArray<FString> PageTags;
	PageTagsRaw.ParseIntoArray(PageTags, TagDelims, 1, false);

	TArray<FTCHARToUTF8> PageTagsBuffer;
	TArray<const char*> AnsiTags;

#Loc: <Workspace>/Engine/Plugins/Online/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Public/EOSSettings.h:86

Scope: file

Source code excerpt:

	bool bMirrorPresenceToEAS;
	TArray<FEOSArtifactSettings> Artifacts;
	TArray<FString> TitleStorageTags;
	TArray<FString> AuthScopeFlags;
};

UCLASS(Config=Engine, DefaultConfig)
class ONLINESUBSYSTEMEOS_API UEOSSettings :
	public URuntimeOptionsBase

#Loc: <Workspace>/Engine/Plugins/Online/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Public/EOSSettings.h:135

Scope (from outer to inner):

file
class        class UEOSSettings : public URuntimeOptionsBase

Source code excerpt:

	/** Tag combinations for paged queries in title file enumerations, separate tags within groups using `+` */
	UPROPERTY(Config, EditAnywhere, BlueprintReadOnly, Category="EOS Settings")
	TArray<FString> TitleStorageTags;

	/** Chunk size used when reading a title file */
	UPROPERTY(Config, EditAnywhere, BlueprintReadOnly, Category="EOS Settings")
	int32 TitleStorageReadChunkLength = 0;

	/** Per artifact SDK settings. A game might have a FooStaging, FooQA, and public Foo artifact */