Quick answer: Unreal physical material mask not applied in cooked builds despite working in editor? Mask textures stripped by cooker - mark as Always Loaded or add to PrimaryAssets.
Surface material has per-pixel physical material via mask. Editor: footsteps sound right. Shipping: footsteps generic.
Mark mask as always loaded
Asset audit + AssetManager primary asset rule for physical material masks. Cooker includes them in shipping.
Or hard-reference from material
Hard ref from the surface material keeps the cooker aware. Soft refs alone aren't enough.
Verify via cooked manifest
Inspect cooked package list; physical material masks should appear. Missing = the bug's cause.
“Cooker tree-shakes by reachability. Indirect references don't count.”
For data assets used by audio/physics indirection, audit cooker inclusion. The bug class is silent in editor and broken in production.