Asset Virtualization: How to use zen DDC and changelist mode

I’m trying to use Unreal Virtualization Tool with UE5.5 and Zen DDC.

In my opinion, structured data should be stored in perforce, and other large data should be stored in Zen DDC.

However, the command was executed successfully, and both the assets and loose data were uploaded to the same Perforce stream ( //depot/dev ).

project depot : //depot/dev/Engine
DefaultEngine.ini :

	[Core.ContentVirtualization]
	SystemName=Default
 
	[Core.VirtualizationModule]
	BackendGraph=VABackendGraph_Example
 
	[VABackendGraph_Example]
	PersistentStorageHierarchy=(Entry=SourceControlCache)
	CacheStorageHierarchy=(Entry=DDCCache)
	SourceControlCache=(Type=p4SourceControl, DepotRoot="//depot/dev"])
	DDCCache=(Type=DDCBackend)

Some logs here:

LogDerivedDataCache: Display: ZenLocal: Using ZenServer HTTP service at http://[::1]:8558/ with namespace myproject.ddc status: OK!.
LogDerivedDataCache: Local: Skipping speed test at path ../../../Engine/DerivedDataCache and assuming local performance.
LogDerivedDataCache: Display: ../../../Engine/DerivedDataCache: Performance: Latency=0.00ms. RandomReadSpeed=999.00MBs, RandomWriteSpeed=999.00MBs. Assigned SpeedClass 'Local'
LogDerivedDataCache: Local: Using data cache path ../../../Engine/DerivedDataCache: DeleteOnly
LogDerivedDataCache: Display: ZenShared: Using ZenServer HTTP service at http://x.x.x.x:8558/ with namespace myproject.ddc status: OK!.
LogDerivedDataCache: Shared: Disabled because no path is configured.
LogDerivedDataCache: Unable to find inner node Shared for hierarchy Root.
LogVirtualization: Display: Pushed 0 payload(s) to cached storage
LogVirtualization: Display: Pushing payload(s) to EStorageType::Persistent storage...
LogVirtualization: [P4SourceControl - SourceControlCache] Found 6 unique payload(s)
LogVirtualization: [P4SourceControl - SourceControlCache] Determined that 6 payload(s) require submission to revision control
……
LogSourceControl: Attempting 'p4 submit -c 1128'
LogSourceControl: P4 execution time: 32.5143 seconds. Command: submit -c 112839
SourceControl: CommandMessage:CheckIn,Message:{"status":0,"data":true}
LogSourceControl: Switched workspaces from 'VASubmission-3327da6-xx' to ''
LogSourceControl: Attempting 'p4 client -d VASubmission-3327da6b-xx'
SourceControl: CommandMessage:DeleteWorkspace,Message:Client VASubmission-3327da6-xx deleted.
LogVirtualization: Display: Pushed 6 payload(s) to EStorageType::Persistent storage
LogVirtualization: Display: 6 package(s) had their trailer container modified and need to be updated
LogVirtualization: Display: Detaching loaded packages from disk...
LogVirtualization: Display: Reset the loaders of 0 package(s)
LogVirtualization: Display: Checking packages for write access permission...
LogVirtualization: Display: All packages have write permission
LogVirtualization: Display: Replacing old packages with the virtualized version...
LogVirtualization: Display: Total Reduction 739.992 MiB (740.062 MiB -> 71.49 KiB)
LogVirtualization: Display: Replaced 6 package(s)
LogVirtualization: Display: Virtualization process complete
LogVirtualizationTool: Display: Time taken 530.28(s)
LogVirtualizationTool: Display: Virtualization of project packages complete!
LogPackageName: Display: FPackageName: Mount point removed
LogVirtualizationTool: Display: Command 'Virtualize' succeeded!
LogVirtualizationTool: Display: UnrealVirtualizationTool ran successfully
LogCore: Engine exit requested (reason: The process has finished)
LogExit: Preparing to exit.
LogExit: Object subsystem successfully closed.
LogExit: Exiting.

1 What else configuration is required to save files to Zen DDC?
2 If these assets are updated, how to re-virtualize them by tool?

Hello there @LeonCrazy!

Checking with my peers, your setup looks correct, the only missing point would be to add a ZenTypeDDC node, instead of sending everything to DDCache. As for virtualizing assets, running the UnrealVirtualizationTool again in your project should detect and re-virtualize only the updated assets:

Hello @brs-sebascova ! Thanks a lot for your prompt reply.

What confuses me most is that all files are saved to one perforce stream, whether they are structured data or data files. Is this correct? Should the two parts store in different streams(like //depot/dev and //depot/va)?

I have configured Zen DDC, but I am not sure how to configure the ZenTypeDDC node? In addition, I suspect that there is something wrong with the following log

LogDerivedDataCache: Display: ZenLocal: Using ZenServer HTTP service at http://[::1]:8558/ with namespace myproject.ddc status: OK!.
LogDerivedDataCache: Local: Skipping speed test at path ../../../Engine/DerivedDataCache and assuming local performance.
LogDerivedDataCache: Display: ../../../Engine/DerivedDataCache: Performance: Latency=0.00ms. RandomReadSpeed=999.00MBs, RandomWriteSpeed=999.00MBs. Assigned SpeedClass 'Local'
LogDerivedDataCache: Local: Using data cache path ../../../Engine/DerivedDataCache: DeleteOnly
LogDerivedDataCache: Display: ZenShared: Using ZenServer HTTP service at http://x.x.x.x:8558/ with namespace myproject.ddc status: OK!.
LogDerivedDataCache: Shared: Disabled because no path is configured.
LogDerivedDataCache: Unable to find inner node Shared for hierarchy Root.

Anyone who can help? :broken_heart:

After reading the official documentation, I am still confused. In general, what needs to be done to achieve this effect?