SerializationOutOfBoundsErrorMessageCaption

SerializationOutOfBoundsErrorMessageCaption

#Overview

name: SerializationOutOfBoundsErrorMessageCaption

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 3 C++ source files.

#Summary

#Usage in the C++ source code

The purpose of SerializationOutOfBoundsErrorMessageCaption is to provide a customizable caption for error messages related to serialization out-of-bounds issues in Unreal Engine 5.

This setting variable is primarily used by the Unreal Engine’s core serialization and loading subsystems, specifically within the CoreUObject module. Based on the callsites, it is utilized in the AsyncLoading and LinkerLoad components.

The value of this variable is set in the Engine configuration file (GEngineIni). It is retrieved using the GConfig->GetText() function, which reads the value from the “[Script/Engine.Engine]” section of the configuration file.

SerializationOutOfBoundsErrorMessageCaption interacts with a corresponding error message variable, which is typically retrieved in the same context. Together, they form a complete error dialog presented to the user.

Developers must be aware that this variable is used in critical error handling scenarios, particularly when dealing with corrupted or invalid package files. It’s essential to ensure that the error message and caption are appropriately localized and provide clear, actionable information to the end-user.

Best practices when using this variable include:

  1. Ensuring the caption is concise yet descriptive.
  2. Localizing the caption for different languages if the game supports multiple locales.
  3. Keeping the caption consistent with other error message styles in the engine.
  4. Regularly reviewing and updating the caption to ensure it remains relevant and helpful as the engine evolves.
  5. Consider providing additional context or troubleshooting steps in the main error message while keeping the caption brief.

By properly configuring this variable, developers can improve the user experience when critical serialization errors occur, potentially helping users or developers quickly identify and resolve issues related to corrupted or invalid game data.

#Setting Variables

#References In INI files

Location: <Workspace>/Engine/Config/BaseEngine.ini:312, section: [/Script/Engine.Engine]

#References in C++ code

#Callsites

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

#Loc: <Workspace>/Engine/Source/Runtime/CoreUObject/Private/Serialization/AsyncLoading.cpp:8510

Scope (from outer to inner):

file
function     void FAsyncArchive::Serialize

Source code excerpt:

			GEngineIni);
		GConfig->GetText(TEXT("/Script/Engine.Engine"),
			TEXT("SerializationOutOfBoundsErrorMessageCaption"),
			ErrorCaption,
			GEngineIni);

		FMessageDialog::Open(EAppMsgType::Ok, ErrorMessage, ErrorCaption);
	}
#endif
	// Ensure we aren't reading beyond the end of the file
	checkf(CurrentPos + Count <= TotalSizeOrMaxInt64IfNotReady(), TEXT("Seeked past end of file %s (%lld / %lld)"), *PackagePath.GetDebugName(), CurrentPos + Count, TotalSize());

#Loc: <Workspace>/Engine/Source/Runtime/CoreUObject/Private/UObject/LinkerLoad.cpp:5884

Scope (from outer to inner):

file
function     UObject* FLinkerLoad::CreateExport
function     UObject* FLinkerLoad::IndexToObject

Source code excerpt:

									GEngineIni);
				GConfig->GetText(TEXT("/Script/Engine.Engine"),
					TEXT("SerializationOutOfBoundsErrorMessageCaption"),
					ErrorCaption,
					GEngineIni);

				UE_ASSET_LOG(LogLinker, Error, PackagePath, TEXT("Invalid export object index=%d. File is most likely corrupted. Please verify your installation."), Index.ToExport());

				if (GLog)
				{
					GLog->Flush();
				}

#Loc: <Workspace>/Engine/Source/Runtime/CoreUObject/Private/UObject/LinkerLoad.cpp:5919

Scope (from outer to inner):

file
function     UObject* FLinkerLoad::CreateExport
function     UObject* FLinkerLoad::IndexToObject

Source code excerpt:

									GEngineIni);
				GConfig->GetText(TEXT("/Script/Engine.Engine"),
					TEXT("SerializationOutOfBoundsErrorMessageCaption"),
					ErrorCaption,
					GEngineIni);

				UE_ASSET_LOG(LogLinker, Error, PackagePath, TEXT("Invalid import object index=%d. File is most likely corrupted. Please verify your installation."), Index.ToImport());

				if (GLog)
				{
					GLog->Flush();
				}