StepSense
Surface-aware footsteps for any pawn or character: anim notify or automatic stepping, per-surface sounds, footprints and effects, jump and landing impacts, speed and staβ¦
Highlights
All 16 features βStepSense makes every step of your characters sound and look like the ground they walk on. Place a StepSense Footstep notify on the frames where a foot lands, or switch the StepSense component to Automatic and let it step from the distance travelled with a speed-based stride and alternating feet. Each step traces down from the foot bone, reads the physical surface and plays that surface's sound, footprint decal and particle from a StepSense Profile data asset.
A profile lists your surfaces - by surface type or by exact physical material - with footstep, jump and landing sounds, random volume and pitch ranges, attenuation and concurrency, a footprint decal with lifetime and fade, an optional mirrored or separate right-foot decal, a particle effect and a VFX tag for Niagara. Each character can carry its own profile layered over the project's default profile, and profiles can inherit from parent profiles, so a robot or a barefoot hero only defines the surfaces that differ.
Loudness follows speed and stance: walk, run, crouch and sneak multipliers, a speed factor or your own speed curve, the surface's own loudness and a multiplier on every notify. The same loudness drives the sound volume and the AI noise: every step, jump and landing is reported to AI Perception's hearing sense, or through Make Noise for Pawn Sensing, with a range that grows with loudness. Characters automatically get jump sounds and landing impacts scaled by the fall velocity, with footprints of both feet; other pawns trigger them from Blueprint.
StepSense Surface Volumes replace the detected surface inside them, so a puddle on asphalt or a snow drift needs no extra materials. Footprints enter a world-wide pool that removes the oldest print when it is full. Surfaces can leave a trail: after walking out of mud, the next footprints keep the mud print and can fade step by step through a material parameter. A minimum interval per foot removes doubled notifies from blended animations, and sound limits per character and per world keep crowds under control.
On Footstep, On Landed and On Jumped events give Blueprints the foot, surface, location, normal, loudness and the spawned components. The Blueprint library traces surfaces, names them, plays a step anywhere and reports noise. The StepSense.Debug console variable draws every trace and prints surface, loudness and stance.
StepSense is part of the Alpha XP collection for Unreal Engine 4.27 and 5.8. Every feature is exposed to Blueprints and C++, it ships with styled HTML documentation, and it is compiled and verified warning-free against clean UE 4.27 and UE 5.8 projects.
Key features
- StepSense Footstep anim notify with foot and bone/socket, tracing down from the foot
- StepSense Profile data asset per surface type or physical material: sounds,
- Automatic stepping without notifies: speed-based stride, alternating feet, Hybrid mode
- Jump and landing sounds and effects scaled by the fall velocity
- Speed- and stance-based loudness: walk, run, crouch and sneak multipliers, optional
- Surface override volumes for puddles, snow, carpets and shallow water
- Footprint decals with lifetime, fade and a world-wide max-count pool (oldest removed
- Left/right alternation with mirrored or separate right-foot decals and per-foot offsets
- AI hearing: noise events with loudness and range for AI Perception or Pawn Sensing
- Per-character profile layered over the default profile, with profile inheritance
- Throttle: minimum interval per foot, max simultaneous sounds per character and per world
- Wet and dirt trails: the next N footprints keep the previous surface's decal
- On Footstep, On Landed and On Jumped events
- Blueprint library: Trace Surface, Get Surface Name, Play Step At Location, Report Step
- StepSense.Debug console variable
- No plugin dependencies, no content required, C++ only
Blueprint & C++ API
The API is organised into these entry points:
| Class | Type | Nodes | Use it for |
|---|---|---|---|
| StepSenseComponent | Actor component | 17 | Surface-aware footsteps for any pawn or actor: traces the ground under each foot, plays the surface's sound, footprint and effect, scales loudness by speed and⦠|
| StepSenseLibrary | Function library | 10 | Blueprint and C++ helpers: surface traces, surface names, profile lookups, playing steps and AI noise. |
| StepSenseSubsystem | World subsystem | 8 | Per-world StepSense state: the surface override volumes, the global footprint pool (oldest footprint removed when full) and the global step sound limit. |
| StepSenseSurfaceVolume | Volume | 2 | Replaces the detected surface for every step inside it: puddles, snow patches, carpets, shallow water. |
| StepSenseProfile | Data asset | 1 | Surface profile: what every surface sounds and looks like. Entries are matched by physical material first, then by surface type, then the Default surface entry. |
Callable runs when executed Β· Pure no exec pin, returns a value
| Node | Type | Available on | Description |
|---|---|---|---|
| Trigger Footstep(Foot: Step Sense Foot, Loudness Multiplier: Float) β Boolean | Callable | Component | Plays a footstep of Foot now (throttle applies). Returns true when the ground was found. |
| Trigger Footstep From Bone(Foot: Step Sense Foot, Bone: Name, Mesh: Skeletal Mesh Component, Loudness Multiplier: Float, Spawn Footprint: Boolean) β Boolean | Callable | Component | Plays a footstep traced from a bone or socket of Mesh (None = this component's foot bone, null Mesh = Foot Mesh). |
| Trigger Landing(Impact Speed: Float) β Boolean | Callable | Component | Plays a landing with this downward impact speed (for pawns that are not Characters). |
| Trigger Jump() β Boolean | Callable | Component | Plays a jump (for pawns that are not Characters). |
| Set Sneaking(New Sneaking: Boolean) | Callable | Component | |
| Set Profile(New Profile: Step Sense Profile) | Callable | Component | Replaces this character's profile at runtime. |
| Set Foot Mesh(New Mesh: Skeletal Mesh Component) | Callable | Component | Mesh whose foot bones are traced. Default: the Character mesh, else the first skeletal mesh of the owner. |
| Get Foot Mesh() β Skeletal Mesh Component | Pure | Component | |
| Get Foot Bone(Foot: Step Sense Foot) β Name | Pure | Component | |
| Get Stance() β Step Sense Stance | Pure | Component | Current stance: Sneak (forced or slow), Crouch, Run or Walk. |
| Get Speed() β Float | Pure | Component | Horizontal speed of the owner (cm/s). |
| Get Current Loudness(Loudness Multiplier: Float) β Float | Pure | Component | Loudness a step would have now on a surface with loudness 1. |
| Get Stride Length() β Float | Pure | Component | Automatic stride length at the current speed and stance (cm). |
| Get Last Step() β Step Sense Step Info | Pure | Component | The last footstep, jump or landing. |
| Get Remaining Trail Footprints() β Integer | Pure | Component | Trail footprints still to be printed with the previous surface's decal. |
| Clear Trail | Callable | Component | Stops the current trail. |
| Find Surface Entry(Profile: Step Sense Profile, Surface: TEnumAsByte<EPhysicalSurface>, Physical Material: Physical Material) β Boolean, Out Entry | Pure | Component Static | Entry this component would use for a surface (its profile, then the default profile). |
| Trace Surface(Location: Vector, Trace Channel: TEnumAsByte<ECollisionChannel>, Trace Up: Float, Trace Down: Float, Ignore Actor: Actor, β¦) β Boolean, Out Hit | Callable | Static | Traces straight down at Location and returns the surface found there (override volumes applied). |
| Get Surface Name(Surface: TEnumAsByte<EPhysicalSurface>) β Name | Pure | Static | Name of a surface type as set in Project Settings > Physics > Physical Surface ("Default" for the default surface). |
| Get Surface From Hit(Hit: Hit Result) β TEnumAsByte<EPhysicalSurface> | Pure | Static | Surface type of a hit result (from its physical material). |
| Get Default Profile() β Step Sense Profile | Pure | Static | The default profile of the project settings (loaded on demand), or null. |
| Find Surface Volume(Location: Vector) β Step Sense Surface Volume | Pure | Static | The surface override volume that applies at Location, or null. |
| Play Step At Location(Location: Vector, Profile: Step Sense Profile, Foot: Step Sense Foot, Facing Yaw: Float, Loudness: Float, β¦) β Boolean, Out Step | Callable | Static | Traces the ground at Location and plays the step of the surface found there: sound, footprint and particle. |
| Play Surface Step(Surface Hit: Step Sense Surface Hit, Profile: Step Sense Profile, Foot: Step Sense Foot, Facing Yaw: Float, Loudness: Float, β¦) β Boolean, Out Step | Callable | Static | Plays the step of an already traced surface (see Trace Surface). |
| Report Step Noise(Location: Vector, Loudness: Float, Instigator: Actor, Max Range: Float, Tag: Name, β¦) | Callable | Static | Reports a footstep noise to AI. |
| Clear All Footprints | Callable | Static | Removes every StepSense footprint in the world. |
| Find Entry(Surface: TEnumAsByte<EPhysicalSurface>, Physical Material: Physical Material, Include Parents: Boolean) β Boolean, Out Entry | Pure | Data asset | Finds the entry for a surface: physical material match, then surface type, then the Default surface entry. |
| Find Volume At(Location: Vector) β Step Sense Surface Volume | Callable | Subsystem | The enabled override volume with the highest priority that contains Location, or null. |
| Get Footprint Count() β Integer | Pure | Subsystem | Number of footprints currently alive. |
| Clear Footprints | Callable | Subsystem | Removes every StepSense footprint of this world. |
| Set Max Footprints(New Max: Integer) | Callable | Subsystem | Overrides the footprint limit of the project settings for this world. Negative = use the project setting. |
| Get Max Footprints() β Integer | Pure | Subsystem | |
| Get Active Step Sound Count() β Integer | Pure | Subsystem | Number of StepSense sounds playing in this world. |
| Set Max Step Sounds(New Max: Integer) | Callable | Subsystem | Overrides the step sound limit of the project settings for this world. Negative = use the project setting. |
| Get Max Step Sounds() β Integer | Pure | Subsystem | Effective step sound limit. |
| Get Override Surface() β TEnumAsByte<EPhysicalSurface> | Pure | Volume | Surface that steps inside this volume get. |
| Contains Location(Location: Vector) β Boolean | Pure | Volume | True when Location is inside the volume. |
Events & delegates
Bind these in Blueprint (drag off the object β Bind Event) or with AddDynamic in C++.
| Event | Parameters | When it fires |
|---|---|---|
| On Footstep | Foot (Step Sense Foot), Surface (TEnumAsByte<EPhysicalSurface>), Location (Vector), Normal (Vector), Loudness (Float), Step (Step Sense Step Info) | Every footstep: foot, surface, ground location and normal, loudness, and the full step info. |
| On Landed | Surface (TEnumAsByte<EPhysicalSurface>), Location (Vector), Normal (Vector), Impact Speed (Float), Intensity (Float), Step (Step Sense Step Info) | Every landing above Min Landing Speed: surface, location, normal, impact speed, intensity 0-1, step info. |
| On Jumped | Step (Step Sense Step Info) |
Options & enums
| Enum | Values |
|---|---|
| Foot | Left Right |
| Stance | Walk Run Crouch Sneak |
| Step Mode | Anim Notifies Automatic Hybrid |
| Noise Mode | None AI Perception (Report Noise Event) Make Noise (Pawn Noise Emitter) |
| Event Type | Footstep Jump Landing |
Compatibility
One ready-made build per engine version is included in the download β copy the one that matches your project.
| Platform | Supported in |
|---|---|
| Windows | Editor & packaged |
| macOS | Editor & packaged |
| Module | Type | Loading phase |
|---|---|---|
| StepSense | Runtime | Default |
Technical details
| Code modules | StepSense (Runtime) |
|---|---|
| Blueprints | 0 Β· C++ classes: 7 |
| Network replicated | No |
| Development platforms | Windows: Yes, Mac: Yes |
| Target build platforms | Win64, Mac |
| Third-party software | No |
| Engine versions | Unreal Engine 4.27 Β· 5.8 β a build for each is included |
| C++ classes | 7 + 3 structs |
| Blueprint nodes | 37 |
| Events | 3 |
| Documentation | Documentation.html (in the download) |
| Download | StepSense.zip Β· 187 KB |
| Version | v1.0.0 |
What's in the download
| File | What it is |
|---|---|
| StepSense 4.27.zip | Plugin build for Unreal Engine 4.27 |
| StepSense 5.8.zip | Plugin build for Unreal Engine 5.8 |
| Documentation.html | Documentation (open in a browser) |
Quick start
- Unzip the download and pick the build that matches your engine (4.27 Β· 5.8).
- Copy the StepSense folder into your project's Plugins/ folder (create it if needed).
- Open the project, enable StepSense under Edit βΊ Plugins and restart the editor.
- Right-click in any Blueprint graph and search StepSense β or include the public headers from C++.
- Package for your target platform (Windows, macOS).
Good to know
Built and verified warning-free for Unreal Engine 4.27 and 5.8. C++ classes: StepSense component, StepSense Footstep anim notify, StepSense Profile (data asset), StepSense Surface Volume, StepSense Subsystem (world subsystem), StepSense Settings (project settings) and StepSense Library. Uses only engine modules (AIModule for AI hearing); Niagara is not required - Niagara effects are spawned from the On Footstep event, Cascade particles directly. Footsteps are cosmetic and not replicated; they play on every machine running the character, and AI noise is reported where the owner has authority. No content assets are included. The module is enabled for Win64 and Mac; the code is platform-independent engine C++ with no OS-specific calls. Developed and maintained by Alpha XP.
Everything included
- StepSense Footstep anim notify with foot and bone/socket, tracing down from the foot
- StepSense Profile data asset per surface type or physical material: sounds,β¦
- Automatic stepping without notifies: speed-based stride, alternating feet, Hybrid mode
- Jump and landing sounds and effects scaled by the fall velocity
- Speed- and stance-based loudness: walk, run, crouch and sneak multipliers, optionalβ¦
- Surface override volumes for puddles, snow, carpets and shallow water
- Footprint decals with lifetime, fade and a world-wide max-count pool (oldest removedβ¦
- Left/right alternation with mirrored or separate right-foot decals and per-foot offsets
- AI hearing: noise events with loudness and range for AI Perception or Pawn Sensing
- Per-character profile layered over the default profile, with profile inheritance
- Throttle: minimum interval per foot, max simultaneous sounds per character and per world
- Wet and dirt trails: the next N footprints keep the previous surface's decal
- On Footstep, On Landed and On Jumped events
- Blueprint library: Trace Surface, Get Surface Name, Play Step At Location, Report Stepβ¦
- StepSense.Debug console variable
- No plugin dependencies, no content required, C++ only
Platforms
Requirements
- Unreal Engine 4.27 and 5.8
- Develop on Windows (Win64)
- Blueprints and C++
In the download
Personal
One non-commercial project
- 1 activation seat
- 1 year of updates
- One end product
- Non-commercial use
- Community support
- 14-day refund window
Commercial
Ship paid products
- 5 activation seats
- 1 year of updates
- One paid end product
- Unlimited end users
- Priority support
- Source files
- 14-day refund window
Extended
Resell & white-label
- Unlimited activation seats
- Lifetime updates
- Unlimited end products
- White-label & resell
- 1-hour SLA
- Seat-free team use
- 14-day refund window
One purchase per product, no subscription. Each licence comes with a signed key β 1 seat on Personal, 5 seats on Commercial, unlimited seats on Extended. Paid licences can be refunded within 14 days from your order page.
- v1.0.0Latest
- Unreal Engine 4.27 and 5.8
- Blueprint and C++ API, HTML documentation
Be the first to review StepSense β reviews come from customers who bought it, so every one is a verified purchase.
Frequently asked
How do I get the files after paying?
Straight after checkout you land on your order page with the download button and your licence key. A receipt is emailed to you, and every order stays in My library.
Which licence do I need?
Personal β One non-commercial project. Commercial β Ship paid products. Extended β Resell & white-label. The Licences tab compares them side by side.
On how many devices can I activate it?
1 seat on Personal, 5 seats on Commercial, unlimited seats on Extended.
How long do I get updates?
Personal: 1 year of updates, Commercial: 1 year of updates, Extended: lifetime updates, counted from your purchase.
Can I get a refund?
Yes β paid licences can be refunded within 14 days, straight from your order page.
Is the download safe?
The file was scanned with ClamAV when it was published. Its SHA-256 checksum is listed under Features β In the download, so you can verify the file you receive.
Do I need an account?
No. Checkout only needs your email. Signing in keeps all your purchases, keys and downloads together in My library.
More like this
AudioLens
Real-time audio analysis: FFT spectrum, onset and beat detection, and a full set of time- and frequency-domain descriptors..
β β β β β No reviews yetTTechHarbour$14.00BlueprintTCP
BlueprintTCP lets you connect to any TCP server and exchange data entirely from Blueprints β no C++ and no networking boilerplate.
β β β β β No reviews yetTTechHarbour$12.99BluetoothLink
Bluetooth Low Energy for Unreal - scan, connect, read, write and subscribe to BLE devices on Android and iOS.
β β β β β No reviews yetTTechHarbour$11.99ClusterLink
SocketCluster realtime client for Unreal - pub/sub channels, auth engine and JSON codec, usable from Blueprints.
β β β β β No reviews yetTTechHarbour$11.99