The BFS Foley System is fully driven by a set of editable Data Assets that define how sounds are routed, triggered, and categorized. These assets act as the brain and memory of the plugin — every runtime action flows through them.
You can review and manage all of them from the Data Editor tab:
BFS Foley → Data Editor
To generate fresh assets, use:
BFS Foley → Data Editor → Create Core Assets
This will give you:
DT_BFSAudioAssets
DA_BFSWardrobe
DA_BFSBoneTraces
DA_BFSSpeedCategories
DA_BFSMetaLibrary
All of these must be assigned in:
⚙️ Edit → Project Settings → Plugins → BFS FoleySystem
If any asset is unset, sounds may fail silently at runtime.
If you're starting from scratch, follow this order:
DA_BFSBoneTraces
)This asset defines which bones to trace for motion detection.
Each character class (e.g., BP_Character
, BP_Enemy
) can have a unique bone mapping.
🧩 Bone names must match those in your character's skeletal mesh.
🧪 Set a Preview Mesh per character class to populate the bone selection dropdowns.
This makes it easier to pick valid bones directly from the skeleton instead of typing them manually.
Traces are used by BFSFoleySystemComponent
to detect foot contacts and angular limb motion.
🟡 Traces are optional.
If a limb (foot, leg, or arm) is not assigned in BoneTraces, it will be ignored at runtime.
This allows you to selectively trace only certain limbs or character types.
DA_BFSSpeedCategories
)SpeedCategories define thresholds to categorize movement into Gameplay Tags.
Two kinds of speed are tracked:
Each PhysicalMaterial
(e.g., Grass, Concrete) can have different thresholds.
You can override both values per-character using these Blueprint-callable functions on BFSFoleySystemComponent
:
OverrideWalkingSpeed(float Speed)
OverrideFallingSpeed(float Speed)
Tags like Footstep.Walking.Speed.Sprint
or Footstep.Falling.Speed.Hard
are applied based on these thresholds and used to resolve the correct sound row.
🎯 See the Tags page for more info on how speed tags are named and resolved.
DA_BFSWardrobe
)The Wardrobe maps outfits to fabric and shoe types for every limb on a character.
Shoes
tagFabric
tagEach outfit is identified by a tag (e.g., Outfit.Sneakers
, Outfit.Military
). At runtime, the active outfit is set on the character’s BFSFoleySystemComponent
via Blueprint or code.
🛠️ Use
AutoPopulateFromTraceList()
to sync limb names with BoneTraces.
Assigned tags in the wardrobe determine what sounds play when cloth moves or footsteps are triggered.
Both workflows are valid:
Which one you use depends on your team and sound pipeline.
Just make sure the MetaLibrary and DataTable stay in sync for the best results.