INSODIMENSIONStudios
FoleyGuides

Equipment Layers

Runtime-swappable audio layers for armor, gear, and equipment

Equipment Layers

Add simultaneous audio layers on top of surface footsteps. A knight in plate armor on snow produces: snow step + plate clank + sword rattle — three layers mixed in one MetaSound.


How SlotBanks Work

The foley MetaSound has 4 audio chains:

LayerSourceWhen Active
Layer 0 (Surface)UAgenticFoleyDataAsset AudioBankAlways
Layer 1 (Armor)SlotBank in EAgenticFoleySlot::ArmorWhen equipped
Layer 2 (Gear)SlotBank in EAgenticFoleySlot::GearWhen equipped
Layer 3 (Extra)SlotBank in EAgenticFoleySlot::ExtraWhen equipped

Each slot bank is a UAgenticFoleySlotBank DataAsset — a mapping of event tags to wave arrays with per-event volume control.


Equipping at Runtime

// Equip plate armor
FoleyComponent->SetSlotBank(
  EAgenticFoleySlot::Armor, PlateArmorBank);

// Draw a bow (gear slot)
FoleyComponent->SetSlotBank(
  EAgenticFoleySlot::Gear, BowDrawBank);

// Remove armor
FoleyComponent->ClearSlot(
  EAgenticFoleySlot::Armor);

No component swaps. No animation retargeting. No MetaSound graph edits.


Authoring a SlotBank

A SlotBank has two fields:

FieldTypePurpose
EventsTArray<FAgenticFoleySlotEventSet>Per-event wave pools
DefaultEventTagFGameplayTagFallback for unlisted events

Each event entry has:

FieldPurpose
EventTagWhich foley event (Foley.Event.Walk, Run, etc.)
WavesPool of SoundWaves for random selection
VolumeMultiplierPer-event gain (0.0 - 5.0)

Recommendations

  • 5-8 waves minimum for high-frequency events (Walk, Run, Sprint) to avoid audible repetition
  • 2-3 waves sufficient for low-frequency events (Jump, Land)
  • VolumeMultiplier ~0.4 for walk events — equipment sits under footsteps in the mix
  • VolumeMultiplier ~0.8 for impacts (Jump, Land) — louder clank on landing

Shipped SlotBanks

SlotBankEventsWavesUse Case
DA_SlotBank_TestArmor5~30Heavy plate armor
DA_SlotBank_Cloth5~30Cloth and robes
DA_SlotBank_ArmorLeather5~38Leather armor

A chainmail slot bank with per-event wave pools and volume multipliers:

Chainmail slot bank internals — Events array with wave pools


Default Slot Configuration

Set default equipment in the component's DefaultSlotBanks map (Details panel):

DefaultSlotBanks = {
  Armor → DA_SlotBank_ArmorLeather,
  Gear  → (empty),
  Extra → (empty)
}

The component loads these at BeginPlay. Runtime SetSlotBank() calls override defaults.