Hi everyone,
We’re running into an issue when generating HLODs in Unreal 5 using distributed builds across multiple machines. After running the builders, we’re seeing leftover files in the __ExternalActors__ folder that Perforce marks as untracked. To clean things up we currently need to run a p4 clean. Is this expected behavior, or are you running into the same issue?
Issue
- After each builder run, new files remain in Content/__ExternalActors__/<LevelPath> as untracked changes.
- Cleaning requires p4 clean, which is not ideal.
- It would be expected to have these files automatically added to a Perforce changelist, since we could revert them quickly.
Setup
- Unreal Engine: UE5.x (World Partition + HLODs)
- Source Control: Perforce
- Build: 24 builder tasks dispatched on a pool of 12 machines (so each machine runs two tasks)
Setup command:
<PROJECTNAME> <MAPNAME> -run=WorldPartitionBuilderCommandlet -builder=WorldPartitionHLODsBuilder -DistributedBuild -SetupHLODs -BuilderCount=24Builder command (per machine):
<PROJECTNAME> <MAPNAME> -run=WorldPartitionBuilderCommandlet -builder=WorldPartitionHLODsBuilder -DistributedBuild -BuildHLODs -BuilderIdx=<IDX> -AllowCommandletRendering -unattendedFinalize step:
- Once all builders are done, we run finalize and then submit
What each builder does
- p4 sync
- Copy the HLODTemp folder from a shared drive
- p4 clean (will catch files only if the machine ran previously)
- Run HLOD generation
- Copy results back to NAS
Repro Step
On your local machine:
- Run setup commandlet
- Run builder commandlet
- Reconcile the __ExternalActors__ folder in Perforce → see untracked files
Any insight would be super helpful. Let us know if you need additional information.
[Attachment Removed]