Interval Lifts
"Interval Lifts" is an advanced feature for implementing foot lifting audio, which can be prominent for some kind of surface such as tall grass or deep snow/mud. This option is in the FootstepBehaviour
asset.
Problems of footstep lifts
Here are some possible problems you would run into if you DIY your own solution for lifts without using Modular Footstep :
Automatically inserted
The settings to insert the lifts should not cause the call site to play and stop footsteps to change. Game designer can "turn on/off" the lifts without additional work from programmers. e.g. No change to the input interval which the programmer had specified before lifts was inserted. insertion is automatically calculated from the original interval.
Separated instance
Imagine if you recorded a single step audio, but that step has a "lift" built-in. The lifting must be either before or after an actual step, which usually it is after so the attack comes near the beginning of the clip.
This is easy for programmers since the playing code doesn't have to be changed, just continue playing with the same interval. It is also easy for sound engineers because they don't have to slice the lift part out of the recordings.
But this make it impossible to not play the lift. For example, whenever player stops walking inside tall grass, it would always end with the lift, since audio content is tied to the step. The correct behaviour should be that if you stop walking when it is a step, the last sound you hear is a step. If you stop walking when it is a lift, the last sound you hear is a lift.
This can be fixed if you treat the lift as separated plays, inserted in-between the step.
Separated state memory
The regular step has a persistent state memory to it, for example, it is able to prevent randomizing into the same step again on the next step because it remembered the previous step. Or that it is able to perform sequential picking of clips, because the memory remembers where it currently is in the sequence.
When footstep lifts comes into play, it must not use the same state memory as regular downsteps.
For example, if regular step consists of audio A B C
in the pool, and lifts are just D E
in the pool. Behaviour was set so that it is randomized, but should not play the same clip twice in a row.
If the first one it randomized A
, then the lift randomized E
, then the next step, it is no good if it thinks "Oh, the last time was E
. It is fine to pick A
again!".
Skewed towards the step
You may assume that the code should instead play the steps as if an interval is 2 times faster, and instead use a lift AudioClip
every other play, therefore inserting lifts in the middle of steps.
I have been there done that, and it didn't sound real. Turns out natural walk cycle on a surface such as tall grass has the lift comes in about 20~35% of an interval between downsteps, not right in the middle (50%).
Therefore, footstep library should be able to customize where the lifts occurs in-between steps for different kinds of surface.
Turning on Interval Lifts
Interval Lifts option on your FootstepBehaviour
asset is hidden until you turn on Secondary Behaviour option, because the collection of AudioClip
to be used as lifts are actually the secondary behaviour.
How it really works is by alternating between primary and secondary behaviour each step, instead on using just the one requested.
After turning on Secondary Behaviour, check "As Interval Lifts" checkbox that appears afterwards. The label displays "As Interval Lifts" so it reads together with the previous option : "Secondary Behaviour as Interval Lifts".
The feature is named "Interval Lifts" because it only works automatically with Interval Play. When Modular Footstep knows how much time it has before the next step (that is, the interval time), it can plan and insert lifts in-between for you.
For One-Shot Play, you can request the shot to be a lift instead of a down step by manually requesting the secondary behaviour in your ResolvingArgs
.
Setup
Use the secondary behaviour area below to setup AudioClip
to be randomized or sequentially picked when the lift should occur. This is exactly the same as setting up the down steps, but instead, put in AudioClip
with foot lifting sounds.
Note that Volume (outer) is quite useful to scale down the volume compared to the down steps in your primary behaviour here. Lifts often sounds great on lower volume. Try playing with it until lifts sounds like supporting but important texture in your footsteps.
Lifts have completely different randomization or sequential "state memory" from the down step. For example, if you choose sequential picking, it continues the next lifting clip in the sequence after the next down step.
Interval Lifts Calibration
As mentioned earlier, it usually sounds wrong if you let it insert all the lifts right in the middle of your intended walk interval. Adjust this slider to the left to skew it more towards the step.
I can't imagine much use to slide to the right (more than 0.5
), but maybe you have some unique situation that need it.
Lift Before First Step
This checkbox cause the Interval Play to start with lifting clip instead of down step clip. (In other words, starts with Secondary Behaviour before the primary.) Wait time after this special lift until the first actual step is also simulated as if there is one imaginary previous step before this special lift.
Imagine when someone is standing still in the middle of tall grass or deep snow. Naturally, the walk starts by lifting the leg and you would hear the lift before the step. Because I think this is likely what you want when you decided to use Interval Lifts, it is checked by default.
Together with start offset
You can specify start offset when using Interval Play.
Before, when you didn't have footstep lifts, this offset represents the period of time character transitioned from standing still to make the first step. The length is usually very similar to the main interval time, but could be a bit shorter or longer depending on animation or feel you would like to sync to.
Now with "Lift Before First Step", it means this special lift has to be sandwiched inside this start offset (instead of inside a simulated interval time) because it represent a progress towards that first step.
- When start offset is 0 : "Lift Before First Step" calculates its timing from regular interval time. (Resulting like the image shown prior.)
- When start offset is not 0 : "Lift Before First Step" calculates its timing from start offset instead.