Nemisindo's Adaptive Footsteps plugin features a dynamic sound model capable of generating footsteps in real time, completely procedurally.
This sound model is implemented as a blueprint-spawnable class, meaning it can be added to any element in your scene.
It comes with 4 different shoe types, 7 surface types, and offers controls for the pace, step firmness, steadiness, etc.
It also offers various functions to change these parameters at runtime. This means they can be linked to any in-game events,
which can lead to very organic and interesting results. Setting up the different surfaces is really easy,
so no more headaches trying to implement adaptive footsteps!
We also provide 12 presets, such as "high heels on pavement", "boots on dirt", "running on grass", etc.
Supported Target Platforms: Windows (x64 & x32), Mac, Android, iOS, Linux, XBox One
Supported Unreal Engine versions: v4.26.0 or later.
After purchasing the plugin from the marketplace, you can install it using the Epic Games launcher. To use the plugin in a project, it must be enabled first. In the Unreal Editor, go to Edit->Plugins and type "Nemisindo" in the search bar. Locate the Adaptive Footsteps and click "enable". Restart the editor for the changes to take effect.
To add Footsteps to an actor, navigate to its blueprint (or create one), click on “Add Component”, then scroll down to “Procedural Sound Effect” (or alternatively search for Footsteps). There you will see the FootstepsSFX class and its presets. You can add as many as you want to a single blueprint. Presets are copies of the default footstep class, but their parameters are already setup with specific values to produce a certain sound.
The sound class provides some parameters to control certain aspects of the footsteps. Once it is added to a blueprint, the parameters will appear in Details Panel->Settings.
You can hover over them to get more information. If you cannot see the parameters in the details panel, make sure you have the model selected in the Components panel.
Important: These settings are "Default parameters". Meaning they only dictate the values that the model will use when the game starts, and cannot be changed directly at runtime. To change model parameters at runtime, check the section called Parameter Functions.
The “Start” function must always be called at some point in order to generate sound.
This is a default function from Unreal Engine's USynthComponent class, and it must be called to initialise the synthesizer. Once initialised, you can call the functions TriggerStep or StartWalking to generate footsteps:
When the parameter "Automated" is off, you need to use the TriggerStep function to generate each step. Typically, you would call TriggerStep in the animation blueprint of your character. Here's what a basic version of this would look like:
If this is what you want to do, you will need to set up the appropriate Notifies in your animation sequence. In the example above, the node "AnimNotify_Step" corresponds to the "Step" Notify in this animation sequence:
This basic setup will trigger a step everytime the character places their foot down.
When the parameter "Automated" is on, the model will keep generating steps forever, at the rate determined by the Pace parameter.
This basic setup will trigger a step 82 times a minute, as soon as the Start function is called.
In practice, you might want to start the footsteps when your character is walking, and stop when your character is not moving. There are many ways to achieve this,
but you will need the StartWalking and StopWalking functions:
In this example, the keys WASD are linked to the footstep generator. If either of them are pressed and the footsteps are not already going,
the StartWalking function is called. If all of them are released, the StopWalking function is called.
Reminder: StartWalking and StopWalking will turn the "Automated" parameter on and off, respectively. If you
wish to implement this kind of setup, remember to set the "Automated" parameter to false in the details pannel, otherwise the footsteps will
start by themselves.
We advise using the "Stop" function to completely stop the footsteps when you don't need them, because the model will keep making calculations in the background until it's shut down. "Stop" should not be used to temporarily pause the footsteps, for that you should use "StopWalking". "Stop" will unregister the Synth, which means when you call "Start" again, the parameters will be reset to the default values specified in the Details panel.
The sound class provides functions to change the footsteps parameters at runtime. This makes linking parameters to in-game events very easy. These functions can be accessed by right-clicking in the event graph and scrolling down to (or searching for) Footsteps.
As an example, the following setup corresponds to a "Poison Effect", the character slows down, his pace gets woozy and his steps less firm:
We also provide two utility functions:
To check how to set up surface detection, check out the Dynamic Surfaces section.
Our plugin has a built-in automatic surface detection feature, which makes changing between different surfaces very easy. But first you will need to set up your project's Surface Types in the project settings.
You also need to create some Physical materials. Alternatively, you can use the Physical materials that are built into the plugin. Once you've added the appropriate surface types to your Physical materials, add them to the relevant texture material. For example, in this grass material, we added the Physical material "PhysMat_Grass", which has a grass surface type.
Then you can set up your surfaces in the "Automatic Surface Detection" panel and you're done! Watch this short clip to see how:
Thanks to the SetSurfaceType Function, changing between surfaces manually is straightforward. You will need to set up your Physical Surfaces and Physical Materials, like shown above. Then, you need a way to check the surface type of the actor that your character is standing on. Here is a basic version of this:
You can now use a switch statement (or any other means) to call SetSurface for the detected surface type. Use the Check Surface event to change the surface whenever you want. This could be before calling TriggerStep in your animation blueprints, or every x milliseconds in your level blueprint, etc. In practice, you might want to check if the surface has actually changed before calling SetSurfaceType, to avoid putting unnecessary strain on the game thread. This can be done with a variable containing the current value of the surface type.
Unreal Engine’s built-in post-processing effects can be applied to the footsteps. We specifically recommend using spatialization and reverb. Spatialization can be enabled in the details panel of the sound effect model. Reverb and other effects (delay, distortion) can be applied using audio volumes and source effect chains, just like with any regular sound asset.
Important: Because FootstepsSFX is not an audio file, the spatialization sphere will not show up automatically. As a work around, you can add an empty audio component to your actor, and apply the same attenuation settings as your footsteps:
Can't find what you're looking for? Let us know.