# V2 Network Derived Data Cache

V2 uses Unreal's shared Derived Data Cache path override so shader jobs and
asset-derived data are written once and reused by developers and CI runners on
the same network.

Required environment on Windows reference runners:

- `UE_SHARED_DDC` points at the writable network cache root, for example a UNC
  share mounted by the runner service account.
- The CI workflow derives `UE-SharedDataCachePath` and `UE_SharedDataCachePath`
  as `<UE_SHARED_DDC>\V2\DDC` before launching Unreal.
- BuildGraph passes the same path as `ReferenceDDC` for cooks.

Required environment on developer machines:

- Windows: set `UE-SharedDataCachePath` to the writable V2 DDC share.
- macOS / Linux: set `UE_SharedDataCachePath` to the writable V2 DDC share.
- Teams using the cook wrappers or Horde config should also set `UE_SHARED_DDC`
  to the shared cache root so build tooling can derive `V2\DDC` and `V2\UBA`.

The project config keeps `Local` first and `Shared` after it in both
`DerivedDataBackendGraph` and `InstalledDerivedDataBackendGraph`. This lets hot
data stay local while misses are filled from, and asynchronously written back
to, the network DDC. ShaderCompileWorker is compiled before editor targets in
BuildGraph, and `r.ShaderCompiler.JobCacheDDC=1` keeps shader job results in the
same DDC hierarchy.

The CI validator is:

```bash
python3 V2/ue/Tools/check-v2-shader-ddc.py
```

Reference: Epic's shared DDC guidance describes a writable Shared DDC network
folder and the `EnvPathOverride=UE-SharedDataCachePath` project setting:
<https://dev.epicgames.com/documentation/en-us/unreal-engine/derived-data-cache?application_version=5.3>
