FOOTSTEP SYSTEM
System Overview
Character movement audio in RedCell covers the full motion-matching moveset — walk, run, sprint, crouch, and the traversal actions layered on top — with footsteps and body foley resolved from the actual surface under the character and played through data-driven foley banks.
Full write-up in progress — figures below are from the working implementation
01 | Physical Surfaces
Dynamic Surface Detection
A simple short sphere trace resolves the physical surface from the character's ground hit result, so footsteps switch naturally between concrete, metal, grass, and the rest of the surface set as the player moves. In the case of Traversal movements when no foot trace is detected, the system dynamically checks surfaces from the body allowing a vault or mantle to resolve what the hands and body actually touch. This allowed for a much tighter trace range when moving from any angle or height.
02 | Foley Banks
Data-Driven Sound Sets
Each Foley bank lives in a Data Asset bank rather than hard-wired references. Each bank maps movement event gameplay tags to their sound sets, and a custom function handles the surface-to-bank map resolver at runtime. This is a similar workflow to using a switch or random container in Wwise, but eliminates middleware dependency and is easily extended with Blueprint or C++.
03 | Foley Events
Animation-Driven Playback
Playback runs through a single foley Event path driven by the AnimNotifies within animation sequences. Each movement sound (Walk, Run, RunBackwards, Scuffs, Pivots, Handplants, etc) flows through the notify, Foley component, trace functions, and surface bank maps to create the runtime variations. Sustained actions like slides use their own events and audio components, handling the start, loop, and stop states.
In Development
Full implementation write-up (Blueprint version)
System demo video
Movement itself is covered on the RedCell Gameplay & Movement page.