Footstep Foley Implementation

(kristi knupp) #1

Hey Everyone,

I’m about to start implementing multiple footstep materials into FMod Studio and was wondering if anyone has tips on best implementing practices? It’ll be walk, run, jump, hop, slide.


(Joseph Harvey) #2

There’s not a single best way to create any kind of sound effect, but I can describe one option. This one is fairly easy to implement and use in a few different game engines, but requires multiple events for different actions.

You want to support a variety of different actions and materials. You could control both with parameters, but it’s probably easier to create a different event for each action that involves an impact. For example: walking footstep, running footstep, jump landing, hop impact, slide.

Within each of these events, you’ll need each of the different surfaces to be a different sound module - probably a multi sound module, so as to allow some variation within each sound. You can control which sound module plays by creating a parameter (perhaps called ‘surface’) and assigning parameter trigger conditions to each sound module in the event. You’ll need to set the value of this parameter after creating the event instance but before it begins to play.

It might also be worth applying a random pitch modulator to the event’s pitch macro control, so that it plays at a slightly different pitch each time it is played.

(simrik) #3

Hi Kristi,

I probably would try to do everything in 1 event which your programmer will appreciate and handle everything else via Gameparameters or nested events. But it really depends how fluent your walking system is build: do you have discrete walk events or is it a fluent system which accelerates?

One “trick” that I usually use it to build a loop and in this loop I set a trigger point. As soon as the trigger gets called, it jumps back to the beginning (following the loop). By this I can always use the same event which is more optimized especially for multiplayer, but just triggered by the Trigger Cue System. If I want different types of surfaces (or toe, heel system) I put them on a different track which can be controlled by another Gameparameter.

That can be the same if you have a “fluent” walking/running system. Just put it on another track and make fades between the tracks and let a Gameparameter control the speed (which could also then control the foley sounds of clothes etc.).

The nested events help to have all surfaces in 1 module to keep it clean and simple.

Let me know if you need help with the setup as it can sometimes be a little tricky :slight_smile:


(kristi knupp) #4

Thank you Ulrich.

You would do every single surface in one event?

Would an example be:

Event 1 - Grass, Concrete, Wood Walk
Event 2 Grass Concrete Wood Run
Event 3 Grass Concrete Wood Jump
etc etc?

When you say build a loop do you mean create a new event with 1 multi sound that has say 10 footstep walk variations and then set a loop point in the track editor?

Do you create trigger points in the multi sound event itself?

The walking system is : I give the programmer an event and they attach it to the respective animation. I can define parameters as well if needed or tweak them in FMod.
I hope that answers your question.

It’s not a huge FPS game, so the system is small and not too intensive.

Thanks for the suggestions and help,

(simrik) #5

Hey Kristi,

Sorry for the late response.

  1. No, I would recommend putting every surface into 1 event only as it would be less taxing and that can also be elegantly executed with the gameparameter. And even if its different speeds (walk, run, crouch) I would try to do it in 1 event only. Also those speeds can be done as gameparameters. This gives you more control over fading between the different states of walking (so you don’t have overlaps when you character e.g. starts running).

  2. Yes, kinda. Usually I’m using a base footstep sound and attach the different surfaces on top to keep it more modular (incl. foley etc.). The extra surface footstep sounds will be added as nested event. I just attached an image which might help to explain it a bit more.

Hope this helps, please let me know if you got any further questions.