ExcludePackagePaths
ExcludePackagePaths
#Overview
name: ExcludePackagePaths
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 4
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of ExcludePackagePaths is to specify a list of package paths that should be excluded from the virtualization process in Unreal Engine 5. This setting is part of the content virtualization system, which is designed to manage large amounts of game content efficiently.
This setting variable is primarily used by the Virtualization subsystem in Unreal Engine 5. Specifically, it is utilized by the VirtualizationManager and VirtualizationFilterSettings modules.
The value of this variable is set in the configuration file for the Virtualization system. It can be modified in the project settings or directly in the INI file under the [Script/Virtualization.VirtualizationFilterSettings] section.
ExcludePackagePaths interacts with another variable called IncludePackagePaths. Together, these two variables determine which packages should be virtualized and which should not.
Developers must be aware that ExcludePackagePaths takes precedence over IncludePackagePaths. If a package path is listed in both arrays, it will be excluded from virtualization.
Best practices when using this variable include:
- Be specific with your exclusions to avoid unintentionally excluding too much content.
- Use full package paths for individual packages and directory paths for excluding entire directories and their subdirectories.
- Regularly review and update the excluded paths as your project evolves to ensure optimal virtualization.
- Consider the performance implications of excluding packages from virtualization, as this may affect load times and memory usage.
- Use this setting in conjunction with the IncludePackagePaths for fine-grained control over the virtualization process.
#Setting Variables
#References In INI files
Location: <Workspace>/Engine/Config/BaseEngine.ini:1484, section: [/Script/Virtualization.VirtualizationFilterSettings]
- INI Section:
/Script/Virtualization.VirtualizationFilterSettings
- Raw value:
ClearArray
- Is Array:
True
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Developer/Virtualization/Private/VirtualizationFilterSettings.h:21
Scope (from outer to inner):
file
class class UVirtualizationFilterSettings : public UObject
Source code excerpt:
*/
UPROPERTY(Config)
TArray<FString> ExcludePackagePaths;
/**
* A list of package paths that we should always attempt to virtualize.
* Each path can either be a full package path to a specific package or it can be a
* path to a directory, in which case all packages under that directory (and subdirectories)
* will be included in the virtualization process.
#Loc: <Workspace>/Engine/Source/Developer/Virtualization/Private/VirtualizationManager.cpp:2209
Scope (from outer to inner):
file
namespace UE::Virtualization
function bool FVirtualizationManager::ShouldVirtualizePackage
Source code excerpt:
const FStringView PackageNameView = PackageName.ToView();
if (DoesMatch(Settings->ExcludePackagePaths, PackageNameView))
{
return false;
}
if (DoesMatch(Settings->IncludePackagePaths, PackageNameView))
{
#Loc: <Workspace>/Engine/Source/Developer/Virtualization/Private/VirtualizationManager.h:80
Scope: file
Source code excerpt:
*
* [/Script/Virtualization.VirtualizationFilterSettings]
* +ExcludePackagePaths="/MountPoint/PathToExclude/" Excludes any package found under '/MountPoint/PathToExclude/' from the virtualization process
* +ExcludePackagePaths="/MountPoint/PathTo/ThePackageToExclude" Excludes the specific package '/MountPoint/PathTo/ThePackageToExclude' from the virtualization process
* +IncludePackagePaths="/MountPoint/PathToInclude/" Includes any package found under '/MountPoint/PathToInclude/' in the virtualization process
* +IncludePackagePaths="/MountPoint/PathTo/ThePackageToInclude" Includes the specific package '/MountPoint/PathTo/ThePackageToInclude' in the virtualization process
*/
/*
* FVirtualizationManager
*
* Ini file setup:
*
* EnablePayloadVirtualization [bool]: When true the virtualization process will be enabled (usually when a package is submitted
to revision control. [Default=true]
* EnableCacheOnPull [bool]: When true payloads will be pushed to cached storage after being pulled from persistent
* storage. [Default=true]
* EnableCacheOnPush [bool]: When true payloads will be pushed to cached storage right before being pushed to persistent
* storage. [Default=true]
* MinPayloadLength [int64]: The minimum length (in bytes) that a payload must reach before it can be considered for
* virtualization. Use this to strike a balance between disk space and the number of smaller
payloads in your project being virtualized. [Default=0]
* BackendGraph [string]: The name of the backend graph to use. The default graph has no backends and effectively
disables the system. It is expected that a project will define the graph that it wants
and then set this option [Default=ContentVirtualizationBackendGraph_None]
* VirtualizationProcessTag [string]: The tag to be applied to any set of packages that have had the virtualization process run
* on them. Typically this means appending the tag to the description of a changelist of
* packages. This value can be set to an empty string. [Default="#virtualized"]
* AllowSubmitIfVirtualizationFailed [bool]: Revision control submits that trigger the virtualization system can either allow or block
* the submit if the virtualization process fails based on this value. True will allow a
* submit with an error to continue and false will block the submit. Note that by error we mean
* that the packages were not virtualized, not that bad data was produced. [Default=false]
* LazyInitConnections [bool]: When true, backends will not attempt to connect to their services until actually required.
* This can remove lengthy connection steps from the process init phase and then only connect
* if we actually need that service. Note that if this is true then the connection can come from
* any thread, so custom backend code will need to take that into account. [Default=false]
* DisableLazyInitIfInteractive [bool] When true 'LazyInitConnections' will be forced to false if slate is enabled. This exists because
* some backends can show slate dialogs when their initial connection fails to prompt for the
* correct login values. When 'LazyInitConnections' is true, this request can come on any thread and
* trying to marshal the slate request to the gamethread can often introduce thread locks. Setting
* both this and 'LazyInitConnections' to true will allow tools that do not use slate to initialize
* the VA connections on use, but force tools that can display the slate dialog to initialized
* during preinit on the game thread so that the dialog can be shown. Note that this only overrides
the setting of 'LazyInitConnections' via the config file, not cvar, cmdline or code [Default=false]
* UseLegacyErrorHandling [bool]: Controls how we deal with errors encountered when pulling payloads. When true a failed payload
* pull will return an error and allow the process to carry on (the original error handling logic)
* and when false a dialog will be displayed to the user warning them about the failed pull and
* prompting them to retry the pull or to quit the process. [Default=true]
* PullErrorAdditionalMsg [string] An additional message that will be added to the error dialog presented on payload pull failure.
#Loc: <Workspace>/Engine/Source/Developer/Virtualization/Private/VirtualizationManager.h:155
Scope (from outer to inner):
file
namespace UE::Virtualization
Source code excerpt:
enum class EPackageFilterMode : uint8
{
/** Packages will be virtualized by default and must be opted out by the use of UVirtualizationFilterSettings::ExcludePackagePaths */
OptOut = 0,
/** Packages will not be virtualized by default and must be opted in by the user of UVirtualizationFilterSettings::IncludePackagePaths */
OptIn
};
/** Attempt to convert a string buffer to EPackageFilterMode */