Answered
0
1

Hey guys,

I’m making an Unreal project for my Honours degree integrating FMOD. One thing I’m having trouble with is different footstep surface sounds, I managed to get two working – wooden floor and carpet and I could transition between these two by using a snapshot to mix the 2 event sounds attached to my character animation as per the FMODtv tutorial on character sounds. This worked great. However, when it came to adding a third surface my unreal project would crash on playback. I found this is due to triggering all 3 events at one time attached to my animation blueprint, so the moment I took one step it would freeze and have to be force quit.

I assume I will no longer be able to mix snapshots to trigger more surface sounds this way without crashing so I was wondering if anyone knew a simple way to mix these sounds in 1 event and transitioning between them with trigger volumes in the same manner as you would with snapshots?

Thanks in advance

  • You must to post comments
Great Answer
2
1

Instead of placing each surface in its own event, I recommend creating a single footstep event and placing each surface at different points along a parameter of that event. Then, set the value of this parameter based on the surface the character is interacting with. As far as I can tell from your description, this would allow you to get the effect you want without havin to create so many event instances.

Alternatively, you could position each sound module such that they’re all triggered by your footstep event, and automate the volumes of each one on a different parameter. This would be slightly more complex to set up than the above solution, but would allow you to control the volume of each and every surface independently, and would also allow you to avoid having quite so many event instances.

EDIT: It was clarified in an e-mail that each multi sound module needed to play only when the event’s three parameters had a specific combination of values. Two general solutions were found, both of which made use of parameter conditions.

The first made use of timeline logic. A series of transition markers was created at position 00:00:000 in the timeline, each of which had multiple parameter conditions in its trigger logic. This allowed the event to jump the timeline cursor to the appropriate trigger region based on the values of the three parameters in the event.

The second solution was to place multiple parameter conditions on each trigger region such that it could only be triggered if the appropriate combination of parameter values was met. By placing all trigger regions such that they perfectly overlapped, this allowed the event to trigger only those sound modules for which the parameter values were correct.

All other solutions proposed were variations or hybrids of the above.

  • You must to post comments
1
1

I do footsteps with a parameter and place the events in the parameter timeline and have the normal timeline empty. Then I simply play the event when the footstep should be used and set the surface via the parameter. Ie: SurfaceType = 1 and the param goes to 1 and only plays the event on 1.

You can place events directly into the parameter timeline and bypass the normal linear timeline completely.

  • Joseph Harvey

    This is a good solution. (Note that, while all timelines are parameters, not all parameters are timelines.)

  • Joseph Harvey

    @JesseLyon I’m afraid I don’t understand this constraint. Why not simply put multiple parameters in a single event? There is no limit to the number of parameters an event can have, and each of an event’s parameters can hold content.

  • Jesse Lyon

    And just an FYI, we’ll likely have about 10-15 surfaces and 10-15 shoe types in the end, so these events are going to be pretty massive/complex. The only way it will break down is if we end up having to split them out into separate banks for dynamic loading, in which case Im back to having them in separate events and controlling the logic/bank loading in UE4.

  • Anders Jakobsen Hofsten

    For what it’s worth ,a clarification of how it was solved would help others. For me, I am interested in how it was solved as well as I am always eager to learn. :)

  • Joseph Harvey

    @AndersJakobsenHofsten I have updated the accepted answer with a description of the solutions we proposed.

1
1

If you must have only one sample playing in the end, you can place each corresponding step at the parameter value (say, surface 1, place your event on 1 (or even a bit before as sometimes 1 might be 0.999999999999999999..9 instead), and keep the timeline empty. This way, the event set to the parameter will play meaning that you can have 3 parameters and use them as you want but only play one sample instead of 3 layers.

However, I would use the surface as a horizontal parameter that selects surfaces. Use the shoe-type as a horizontal parameter playing events on a second track based on what type of shoes (here, I assume that you can to select the type of shoes and surface independently of one another), and a third parameter used like a boolean (01) either plays the slow steps or turns those events off with parameter conditions and turns the fast steps on.

Ideally you would figure out when each foot hits the ground and play the event there instead, and skip the speed-parameter all together and just play each step when the character places its foot on the ground. You could of course use the speed-parameter here to gradually switch between slow steps and fast steps then instead of a bool.

  • Jesse Lyon

    Hi Anders, thansk for your reply. My generic “Foot Down” events are being sent via animation tags when the foot contacts the ground. Yes, I could get more specific with the foot down events (FootDownWalk, FootDownJog, FootDownSprint, etc), but I would rather handle this logic more systematically with a speed parameter, as we will have hundreds of other animations to tag/maintain throughout development.

    I read through your other comments re. horizontal parameters, but Im not sure Im quite following what you mean. I have no way of playing more then one horizontal parameter at a time with samples independent of each other, there would be two samples playing at once. I can use a parameter condition which would allow me to play one horizontal and then many vertical tracks independently, but thats it, Im limited to two parameters.

    Cheers,
    JL

  • You must to post comments
Showing 3 results
Your Answer

Please first to submit.