UnrealEngine Virtual Asset

When I was testing unrealvirtualizationtool, it kept giving me the error
“null directory (//) not allowed in ‘//UEtest/main’, failed to create temp workspace…”
My perforce depot is UEtest, and my test project is placed in the main branch. I created a workspace in main and configured a series of things. I feel that I have not taken care of any place, but it still keeps giving me the error. I really want to know why.My local workspace path is D:/UEtest, and the contents of the main branch are all in this directory. Does my perforce need any other settings that I don’t know about? If anyone knows, please let me know, I will be very grateful.

Hi @AstonKob It’s a long road, good luck! :grinning_face:

1 check file DefaultEngine.ini

	[VABackendGraph_Example]
	PersistentStorageHierarchy=(Entry=SourceControlCache)
	CacheStorageHierarchy=(Entry=DDCCache)
	SourceControlCache=(Type=p4SourceControl, DepotRoot="//UEtest/main", ClientStream="//UEtest/main")
	DDCCache=(Type=DDCBackend)

2 Add a blank file payload_metainfo.txt in stream //UEtest/main
//UEtest/main/payload_metainfo.txt

3 Retry

(post deleted by author)

Oh my god, after I set it up like this, the resources I selected are virtualized normally, but the generated “.upayload” files are all stored under my main branch. Is there any other way to store these upayload files in a fixed directory?
I can’t upload screenshots. I can only talk about the current situation. After I executed virtualization, all the upayload files were uploaded to the root directory of my main branch. I am very distressed by this situation. My main branch used to have a directory structure of a series of standard projects such as Engine, Game, FeaturePacks, etc. Now it has become a lot of hash directories that store the upayload directory and my engine/game files together.

My ini content is like this
DepotRoot=“//UEtest/main/VirtualAsset/”, ClientStream=“//UEtest/main/”, because my payload_metainfo.txt is stored in a separate directory

The easiest method is to create a non streamed depot in which to store your virtualized payloads and just use the DepotRoot value to decide where in that depot the files should be stored.

If you want to continue trying to store the payloads in a stream based depot then you will probably want to create a virtual stream to control where the files actually get submitted, preferably to a location that nobody on your project would accidently sync.

A simple example of this would be:

Stream: //UE5/Projects/MyProject/VAData
Name: VAData
Parent: //UE5/Projects/MyProject
Type: virtual
ParentView: inherit
Paths:
        import+ ...  //UE5/Projects/MyProject/VAData/... 

which when used as the ClientStream would submit to a VAData directory at the root of MyProject.

Do note that this is just a simple example as where you want to store the payloads would depend on your project’s requirements. Will you be supporting multiple braches of the project, do you want to share virtualized data between projects and how do your users actually sync data to avoid them accidently syncing the payloads.