Ultra-realistic footsteps with real-time reverb and echo!

Hiya!
I’ve been working on a spatial acoustic system recently, and as our studio is aiming to push Roblox’s capabilities to it’s limits when it comes down to realism, I decided this would be a good feature to implement.
Here is a showcase of it in action!:

The house in the video was converted into ice to showcase the echo - it isn’t that “loud” usually.

What do you think of it? would you use this in your own game, if you had the chance to?
Thank you cipharius for the help with the math! Couldn’t have done it without him :grinning_face_with_smiling_eyes:

For those interested in the more tech-aspects, this is how it works:
image
I send raycasts from the player towards everything around it, compute the reverb, and use the average reverb of all raycasts for the ReverbSoundEffect. Each material has a different absorption rate, so if you for example were to be in a cathedral made out of marble, granite, glass and so on, you would notice that it has way more reverb than a house made out of stone or wood! This allows for ultra-realistic sounds :grinning_face_with_smiling_eyes:

32 Likes

It looks like something I actually wanted to do a time ago. I just haven’t figured it out. It seems groundbreaking. What’s the math?

2 Likes

you are literally in the SH discord, check #questions-tier-2 lol
(EDIT: Sorry about that, thought you were optikk, who’s always active in that discord server lol)

1 Like

Ah, I never check that server at all. But if I did, it would always be something trivial.

1 Like

Update: I’ve also added new footstep SFX - combined with the real-time reverb, this makes for some insanely sick footage that I am very proud over :slightly_smiling_face:

3 Likes

Is this laggy with multiple players in game? Are the raycasts casted on the server or client? If it’s the client how are you replicating footsteps from one player to another?

It’s all on client, and as for lag, uhh…
image
Lag will be the least of your worries :stuck_out_tongue:
As for how they will replicate across clients, each client will just calculate all the sounds of other players. Now this may sound bad initially, but in reality it would at most go from 0.6ms to 5-6ms, which is 5/1000 seconds. That would barely have any performance impact. If it still somehow does end up lagging, you can just disable the reverb option for other players - what’s most important is that the sound effects of your own character are realistic!

4 Likes

the last one was kinda bad. audio was really short

1 Like

Where did you get the sounds? I need it for a project

This is a great idea!
I tried to replicate this effect but I have run into an issue I fail to understand how you manage the reverb sound effect based on the value range of 0 to 1.
Are you willing to share how the absorption rates affect the sound effect directly?

Edit: Played around a little bit and found a solution.

you can calculate the raycasts from other characters directly essentially making remote events unnecessary.

I didn’t even mention that and how does that make a difference?

By simply raycasting on other “people’s” characters instead of only your character.

running animations are replicated across clients so you can just grab their animations???

You don’t?? You can just get their current running animations.

1 Like

This is cool… Did you ever publish it as a plugin or model or place? I’d love to see how you did this exactly.