Sounds, footsteps and surfaces¶
Every sound in the template is a Sound Cue that carries its own Sound Class, and every sound heard from a place in the world also carries its own attenuation. Footsteps come from one component you can put on any pawn, and they pick a sound from the surface under the foot.
- The sounds:
Content/MPFriendslop/Audios/ - The footstep component:
Content/MPFriendslop/Blueprints/ActorComponents/BP_FootstepComponent - The footstep notify:
Content/MPFriendslop/Blueprints/AnimNotifies/BP_FootstepNotify
Add a sound¶
- Import your wave into the folder that fits:
Audios/Effects/,Audios/Widgets/orAudios/Footsteps/<Surface>/. - Right click the wave, then Create Cue. Name it
CUE_<Name>. - Open the cue. In its Details panel, set
Sound Class:SCLS_Effectsfor anything heard in the world,SCLS_UIfor menus,SCLS_Musicfor music. - For a sound heard in the world, set
Attenuation Settingsto one of theATT_assets below. - Save, and play the cue from your Blueprint. Leave the attenuation pin of the play node empty: a value there replaces the one on the cue.
| Attenuation | Used by |
|---|---|
ATT_Footstep |
Player footsteps |
ATT_Impact |
Loot impacts, breaks, melee swings and hits, the flashlight switch |
ATT_Weapon_Fire |
The shotgun |
ATT_Warden_Footstep |
The Warden's stomps |
ATT_Warden_Laser |
The Warden's laser loop |
Warning
A cue with no Sound Class still plays, but the volume sliders of the settings menu never touch it. A world cue with no Attenuation Settings plays flat in both ears at full volume, wherever it comes from. Neither case logs anything.
The sliders and the classes they drive are on Settings and volume sliders.
How footsteps are played¶
BP_FootstepComponent sits on the player character. It traces straight down from where the step happens, reads the surface it hits, and plays the matching sound attached to the pawn.
Two sources call it:
- Your own steps follow the camera stride of
BP_ViewMotionComponent, so you hear yourself in every gait, walking, running and crouching. The stride is tuned on Movement, stamina and the camera. - Everyone else's steps come from
BP_FootstepNotifyon the animations. A pawn with noBP_ViewMotionComponent, such as an enemy or your own third person character, always uses the notifies. There is nothing to switch.
The landing goes through the same component, and Land Montage plays on every machine. You hear your own landing as a step played by BP_ViewMotionComponent, at its Landing Volume Scale (1.8, in Settings|Footsteps). Everyone else hears the landing notify of the animation.
| Field | What it does | Shipped |
|---|---|---|
Footstep Default |
Played when the floor has no surface | CUE_Footstep_Concrete |
Footstep Concrete |
Surface Concrete |
CUE_Footstep_Concrete |
Footstep Ground |
Surface Ground |
CUE_Footstep_Ground |
Footstep Metal |
Surface Metal |
CUE_Footstep_Metal |
Footstep Water |
Surface Water |
CUE_Footstep_Water |
Footstep Wood |
Surface Wood |
CUE_Footstep_Wood |
Footstep Volume |
Volume of every step, multiplied by the notify's Volume Scale |
1.0 |
Footstep Trace Cm |
How far down the trace looks for a floor | 120 |
Land Montage |
Played on landing, on every machine | AM_Land |
All of them are in Settings|Footsteps. Leaving a sound empty is allowed and simply means that surface is silent.
Give a floor a surface¶
The project declares five surfaces: Concrete, Ground, Metal, Water and Wood. A floor only sounds like one of them once it has a Physical Material that says so. The template ships one per surface, in Content/MPFriendslop/Materials/Environments/PhysicalMaterials/:
| Physical Material | Surface Type |
|---|---|
PM_Concrete |
Concrete |
PM_Ground |
Ground |
PM_Metal |
Metal |
PM_Water |
Water |
PM_Wood |
Wood |
The floors of the modular kit, SM_Mod_Floor_*, already use PM_Metal. To give your own floor a surface:
- Open the floor's Static Mesh, for example
SM_Mod_Floor_400, and setSimple Collision Physical Materialto thePM_of its surface. Every copy of that mesh in every level now sounds like it. - For one placed floor only, select it in the level and set
Phys Material Overrideon its component instead.
The footstep trace hits the simple collision, so the Physical Material has to be on the collision, as in steps 1 and 2. A floor with none plays Footstep Default.
Put footsteps on your own animations¶
- Open your walk or run cycle.
- On a notify track, at the frame where a foot touches the ground, right click, then Add Notify, then
BP_FootstepNotify. - Set
Foot Socketto the bone or socket of that foot:foot_lorfoot_r. - Repeat for every contact of the cycle.
| Field | What it does | Default |
|---|---|---|
Foot Socket |
Where the trace starts and where the sound is heard | foot_l |
Volume Scale |
Multiplies Footstep Volume for this step only |
1 |
The notify looks for BP_FootstepComponent on the pawn playing the animation. A pawn without the component stays silent. The shipped walk and run cycles AS_Robot_Walk_* and AS_Robot_Run_* in Demo/Animations/Robot/Standing/ and AS_Robot_Land in Demo/Animations/Robot/Airborne/ are a ready example to copy the contact frames from. The first notify of AS_Robot_Land uses a Volume Scale of 1.8.
React to a step¶
BP_FootstepComponent calls OnFootstep on every audible step. Bind it for dust, decals or a camera shake.
| Dispatcher | Gives | Fires on |
|---|---|---|
OnFootstep |
Surface, Location |
every player |
Footstep sounds are not what enemies hear. The Warden listens to BP_NoiseComponent, which counts distance on the server. See How the enemy AI works.