Virtual Asset Workflow

Hello,

I am evaluating Virtual Assets for our project and I have a couple of questions after having read the documentation.

  1. The initial blog post about Virtual Assets mentions being able to virtualise specific folders. Is this feature still supported? I can find no trace of it in the documentation.
  2. The same blog post also mentions an offline mode. Is it something a user can enable in the Editor settings? Does it mean that UGS cannot be used to sync files if it is enabled (I am guessing UGS does not know how automatically rehydrate files)?
  3. Do Virtual Assets provide benefits other than reduced disk space and faster sync time? I am thinking maybe reduced memory usage / load time in the Editor if the engine find all the information it needs in the structured data.

Thank you,

Cle

[Attachment Removed]

Hi!

> The initial blog post about Virtual Assets mentions being able to virtualise specific folders. Is this feature still supported? I can find no trace of it in the documentation.

Documentation on the filtering system can be found at Engine\Source\Developer\Virtualization\Private\VirtualizationManager.h under the Filtering comment block (line 49 in 5.6). By default the system is set to opt out, where you can use the filtering system to prevent virtualization taking place on certain directories, however you can set it to opt in via your Editor.ini:

[Core.VirtualizationModule]
FilterMode=OptIn

or via -ini::Engine:[Core.VirtualizationModule]:FilterMode=OptIn on the command line**.**

in which case nothing will be virtualized except filters you explicitly set.

Here’s a few examples from the code:

[/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

> The same blog post also mentions an offline mode.

As for offline mode, it is technically possible, but there’s currently no support for it in the tooling.

It does work different from just rehydrating the assets, it is usually set up by specifying a local cache directory where the downloaded VA payloads are stored, prefilling that and then setting this as the read-only source for VA data.

To set it up and use offline mode, you will first need to set up specific VirtualAssetBackendGraphs in the configuration and specify them on the command line when you run the Editor.

In addition to that, the VirtualizationEditor.PrecachePayloads commandlet can be run to download all payloads and cache them in a local folder.

I’ve attached a PDF that details the process, but this is unfortunately still very manual.

This is something we’ve seen very little demand for after the initial implementation, so it has never made it up high enough in the list of priorities to justify the extra work to integrate such an workflow in the tools and make it nice to use.

> Do Virtual Assets provide benefits other than reduced disk space and faster sync time?

In general, if we aren’t using the data we don’t hold it in memory. There are some very specific and rather internal details that allow us to sometimes unload VA assets when a non-VA asset would be held in memory, but this is an implementation detail and doesn’t make a difference in practice.

Hope that helps!

Kind Regards,

Sebastian

[Attachment Removed]

And of course I forgot to attach the PDF :wink:

Here you go.

[Attachment Removed]

Thank you Sebastian, that’s very useful information.

Clement

[Attachment Removed]