Winter Update: New Audio System

This was one of the problems that has put me off playing PC since the winter update. It is really heartening to see Matthew so on top of this and so communicative! Someone give that man a raise!
 

Matthew Florianz

Senior Audio Designer- Elite: Dangerous
Frontier
I wondering if it is worth investigation what happens between adjusting the fall off to 35m as suggested to allowing two instances? Could this in affect mean that two instances (when the player uses them correctly) could actually reduce the overhead by using the effectively compared to using 2 or 3 speakers to do the same thing.
As said before, it's not as simple as setting up a new speaker with a different attenuation (=distance) range.

Our code side virtualization system (the optimization that makes sure we can "cap" the amount of work that the audio engine has to do) is fast because it only has to look for one range of speakers. It would have to be altered to support multiple speakers.

Speakers with same music applied will be in sync because we decode the user music once and then distribute it to those speakers that have that music applied. This is already much slower from a hard disc (user music) than it is from memory (soundbanks = our music).
Two instances of the same track means we have to decode it twice. This is exponentially slower because reading the same file from your hard-disc is slow. You might have noticed copying two large batches of files simultaneously is slower than copying them sequentially.

Finally we have choose for a not music optimized sound engine (=super low latency) so the two instances would likely get out of sync, meaning the music will be out of time. The reason to choose reliability over performance is that we can never guarantee a fixed frame-rate and in those cases it's better to have a bit more buffers in place ad allow some slack on audio. People from alpha 2 might remember we got quite a few reports of staggered and even cutting out of audio.


We have had long discussions and experimentation's on a possible two speaker solution and it's not un-doable (nothing is) it just requires a large time investment and lots of testing.


Practically: I've changed the ranges for ambiances and placeable speakers, including user music, to be 35m. That should give you a bit more (or actually less ; ) space to play with.
 
Last edited:

Matthew Florianz

Senior Audio Designer- Elite: Dangerous
Frontier
But as said, I can only speak for myself. My vote would be a +1 for reducing the range to 35 m (or 24 m, let's just call it pre-winter update :) ).

Hallo Wim! I have to apologize about the 35m/75m confusion, "Ik had het fout" = I was wrong : )

It was indeed 75m for ambiances and speakers. The 35m was a suggestion from you guys,

...but...

there was an implementation mistake routing user music through the coaster speaker setup (includes tracked / water rides from a sound perspective).

And that has a 50m radius on it, doh!

So you guys were closer to being right without me realizing so !

New values in post below : )
 
Last edited:
Hallo Matthew, thanks for your reply (Bedankt :) )

I was part of that confusion. Thanks for your and the teams effort to make things even better than they are right now. i will be happy to try things out when the moment comes you deem things right to roll out.

One thing that i maybe misunderstand is the following: in your replies you constantly mention the 'coaster speaker', where I speak of the multi-directional speakers with sounds like 'batcave' and so on. Are we talking about the same thing or is this another one of those confusion thingies? :)
 
Last edited:

Matthew Florianz

Senior Audio Designer- Elite: Dangerous
Frontier
One thing that i maybe misunderstand is the following: in your replies you constantly mention the 'coaster speaker', where I speak of the multi-directional speakers with sounds like 'batcave' and so on. Are we talking about the same thing or is this another one of those confusion thingies? :)
Ah yes, for 1.1 we got these types of (relevant) audio objects:

  1. Ambiences - omni speaker. [Doesn't support user content]
  2. Placeable music - cone attenuated speaker. [Supports user content routed into 6]
  3. Triggered effects - cone attenuated speaker. [Doesn't support user content]
  4. Rides - omni speaker. [Supports user content routed into 6]
  5. Coasters - omni speaker. [Supports user content routed into 6]
  6. User Music
My local build looks like this:

  1. Ambiences - omni speaker - 40m
  2. Placeable music - cone attenuated speaker - frontier supplied audio - 35m
  3. Placeable music - cone attenuated speaker - user - 35m
  4. Triggered effects - cone attenuated speaker - 50m
  5. Rides - omni speaker - frontier supplied audio - 600m
  6. Rides - omni speaker - user - 600m
  7. Coasters - omni speaker - frontier supplied audio - 50m
  8. Coasters - omni speaker - user - 50m
Anything bold is changed downwards.
600m btw is not a typo, Flatrides have a bespoke system where we only ever play three pieces of music. We can do that because Flatrides have larger footprints so there's less of them in the same space as speakers. We also thought it important for music bleeding through far away even if it's very quiet at 100 meters. In a busy park it doesn't interfere but when looking at the park from a hill it adds a touch. Our technical sound designer genius; Stephen Hollis, is now overhauling the way this sounds at a distance. He's adding a nice big *thump* to electronic music like you get from a car with a big sub-woofer, passing by at a distance.

Furthermore we have:
  • Reduced the early reflections (echo) on music speakers.
  • Added / tweaked cone attenuation so sounds behind a speaker are more muffled.
  • Fixed speakers not being muffled by terrain.
On our "nice to have list":
  • we think it should be possible for item 4. to receive a user component also. But that would be with a lot of restrictions in place (like only ever hear one or two of them at the same). Requires a significant time investment so currently not planned for.
  • we think it should be possible to give some combined range/volume control on placeable speakers. This is a super tricky technical problem which requires making changes to our audio middle-ware (which we'd rather avoid). Requires a significant time investment so currently not planned for.

Matthew
 
Last edited:
Ah yes, for 1.1 we got these types of (relevant) audio objects:

  1. Ambiences - omni speaker. [Doesn't support user content]
  2. Placeable music - cone attenuated speaker. [Supports user content routed into 6]
  3. Triggered effects - cone attenuated speaker. [Doesn't support user content]
  4. Rides - omni speaker. [Supports user content routed into 6]
  5. Coasters - omni speaker. [Supports user content routed into 6]
  6. User Music
My local build looks like this:

  1. Ambiences - omni speaker - 40m
  2. Placeable music - cone attenuated speaker - frontier supplied audio - 35m
  3. Placeable music - cone attenuated speaker - user - 35m
  4. Triggered effects - cone attenuated speaker - 50m
  5. Rides - omni speaker - frontier supplied audio - 600m
  6. Rides - omni speaker - user - 600m
  7. Coasters - omni speaker - frontier supplied audio - 50m
  8. Coasters - omni speaker - user - 50m
Anything bold is changed downwards.
600m btw is not a typo, Flatrides have a bespoke system where we only ever play three pieces of music. We can do that because Flatrides have larger footprints so there's less of them in the same space as speakers. We also thought it important for music bleeding through far away even if it's very quiet at 100 meters. In a busy park it doesn't interfere but when looking at the park from a hill it adds a touch. Our technical sound designer genius; Stephen Hollis, is now overhauling the way this sounds at a distance. He's adding a nice big *thump* to electronic music like you get from a car with a big sub-woofer, passing by at a distance.

Furthermore we have:
  • Reduced the early reflections (echo) on music speakers.
  • Added / tweaked cone attenuation so sounds behind a speaker are more muffled.
  • Fixed speakers not being muffled by terrain.
On our "nice to have list":
  • we think it should be possible for item 4. to receive a user component also. But that would be with a lot of restrictions in place (like only ever hear one or two of them at the same). Requires a significant time investment so currently not planned for.
  • we think it should be possible to give some combined range/volume control on placeable speakers. This is a super tricky technical problem which requires making changes to our audio middle-ware (which we'd rather avoid). Requires a significant time investment so currently not planned for.

Matthew
Thanks for all the insight! [happy]
Makes it much easier to comprehend what's behind the changes [yesnod]
 
I don't have anything to add to this thread that hasn't already been said. I just wanted to thank Matthew for his amazingly open and exemplary discussion. It would be nice if we could get conversations like this going with developers in regards to management and content.
 

Joël

Volunteer Moderator
Thank you Matthew for your generous insight into the audio system of Planet Coaster : ) [up]
 

Matthew Florianz

Senior Audio Designer- Elite: Dangerous
Frontier
Thank you Matthew for your generous insight into the audio system of Planet Coaster : ) [up]
I wish we always had the time to do this but we are usually completely swamped in work. it does take a bit of time to write all of this down so please don't hate me when things get busier again and it's harder to find time to respond : )
 
I wish we always had the time to do this but we are usually completely swamped in work. it does take a bit of time to write all of this down so please don't hate me when things get busier again and it's harder to find time to respond : )
That's it!! We need to petition upper management to make all days like the holidays! :)
 
No more updates, just hang out on the forums all day!

It's a lovely place and you're all incredible people, but just like we love seeing your creations, I bet you like us working on our games ; )
Yeah yeah... How about a rotating shift then? Make us glorious creations for 85% of your work week and then 15% of the week you can decompress (kinda) by hanging out with us? :)
 

Joël

Volunteer Moderator
I wish we always had the time to do this but we are usually completely swamped in work. it does take a bit of time to write all of this down so please don't hate me when things get busier again and it's harder to find time to respond : )
I won't hate anyone of you. I find it great that you take the time to explain in-depth things about the game with us. No hard feelings from me when you don't have time for in-depth insights anymore, though I will always like it when you do have time ; )

No more updates, just hang out on the forums all day!

It's a lovely place and you're all incredible people, but just like we love seeing your creations, I bet you like us working on our games ; )
I sure do like you to work on your games, as much as I like to play your games (I'm sure a lot of members agree on this)
It's great to have team members hang around with us on the forums. [big grin]
 

Vampiro

Volunteer Moderator
No more updates, just hang out on the forums all day!
No!!...just NO [sulk] I love this game and i would love to see the game grow so go back to work as soon as possible [tongue]

On a more serious note... It's indeed great to read such in-dept explanations on how stuff works. Thank you very much for taking the time to explain all this stuff! It's well appreciated.
(You still can't imagine how happy i am that custom music was added!)
 
Last edited:
As said before, it's not as simple as setting up a new speaker with a different attenuation (=distance) range.

Our code side virtualization system (the optimization that makes sure we can "cap" the amount of work that the audio engine has to do) is fast because it only has to look for one range of speakers. It would have to be altered to support multiple speakers.

Speakers with same music applied will be in sync because we decode the user music once and then distribute it to those speakers that have that music applied. This is already much slower from a hard disc (user music) than it is from memory (soundbanks = our music).
Two instances of the same track means we have to decode it twice. This is exponentially slower because reading the same file from your hard-disc is slow. You might have noticed copying two large batches of files simultaneously is slower than copying them sequentially.

Finally we have choose for a not music optimized sound engine (=super low latency) so the two instances would likely get out of sync, meaning the music will be out of time. The reason to choose reliability over performance is that we can never guarantee a fixed frame-rate and in those cases it's better to have a bit more buffers in place ad allow some slack on audio. People from alpha 2 might remember we got quite a few reports of staggered and even cutting out of audio.


We have had long discussions and experimentation's on a possible two speaker solution and it's not un-doable (nothing is) it just requires a large time investment and lots of testing.


Practically: I've changed the ranges for ambiances and placeable speakers, including user music, to be 35m. That should give you a bit more (or actually less ; ) space to play with.
So the volume set from our track plays at a set volume in game. If we make our track quieter out of game and then it plays does the game recode the volume to suit?

Makes sense. Was just wondering what the fall off was if limiting how many times the track re-instance to once rather than multiple times we could get away with it. However with your further detail I could see the issue. I play using M.2 drive so assume I wouldn't have such an issue although still not as fast as memory of course.

But thank you and I am glad to know that you have looked at the two speaker solution at least :)

And brilliant. Thank you for doing so :) I know you may get some flak later from others where they suddenly can't here things but hopefully we can get this post in the next update notes (well your one with new distances) so that people can understand why it has been done.

Thanks again for your posts.
 
No hard feelings at all if this is it for the time being.
Just having been able to discuss this topic in such depth with someone of the development team is a true gem in my gaming experiences. Thanks for that.
 

Matthew Florianz

Senior Audio Designer- Elite: Dangerous
Frontier
If we make our track quieter out of game and then it plays does the game recode the volume to suit?
If I understand you correctly, not quite : )

We don't re-code your tracks, just encode.

If you make your track quieter outside the game, it will be quieter in game too. That doesn't change how far out you can hear it, just that at the same distance, your quieter track will be quieter... hope that makes sense and of course, it also works the other way round!

Things we do:

Slightly boost the volume of user music in our audio middle-ware (wwise) and then put a compressor-limiter on the end result. This is like having a mix engineer listen to your track constantly and if it gets too loud, she/he will reduce the volume a little to make sure it never passes a threshold. I tried doing it also for when your music gets to quiet so that it's always above a certain level, but it frankly sounded atrocious. Really good mix-engineers spend hours getting that right so a real time solution running inside a game engine which also happens to simulate an entire park... well, it was ambitious ! : )

The other thing we have done is that dependent on how loud your game is (ie. a tracked ride or a coaster going full speed // which is a big volume difference) we boost / reduce the volume of triggered effects and (user) placeable speakers. It's not a huge difference, but it just means it doesn't stick out so much anymore when the game is nice and relaxing.

But perhaps that is what you meant?


It is all meant to make the experience more enjoyable. We are prepared for when you'll find us a few more cases that we need to tighten up afterwards, it's a complex game with many of edge cases ; )
 

Vampiro

Volunteer Moderator
Things we do:

Slightly boost the volume of user music in our audio middle-ware (wwise) and then put a compressor-limiter on the end result. This is like having a mix engineer listen to your track constantly and if it gets too loud, she/he will reduce the volume a little to make sure it never passes a threshold. I tried doing it also for when your music gets to quiet so that it's always above a certain level, but it frankly sounded atrocious. Really good mix-engineers spend hours getting that right so a real time solution running inside a game engine which also happens to simulate an entire park... well, it was ambitious ! : )

The other thing we have done is that dependent on how loud your game is (ie. a tracked ride or a coaster going full speed // which is a big volume difference) we boost / reduce the volume of triggered effects and (user) placeable speakers. It's not a huge difference, but it just means it doesn't stick out so much anymore when the game is nice and relaxing.
The more you explain the more amazed i am at how complex this game is.
I never imagined there are so much mechanics involved in processing a piece of music/sound.
 

Matthew Florianz

Senior Audio Designer- Elite: Dangerous
Frontier
The more you explain the more amazed i am at how complex this game is. I never imagined there are so much mechanics involved in processing a piece of music/sound.
Games are incredibly complex beasts and the trick we perform daily is to hide that from sight ; )

There's always emergent problems.

Speaker music sounded fine to my ears, but place them inside a building and pause the game and strange things happen. With hindsight, that should have been spotted, but we didn't spot it because there's a thousand more combinations like that possible.

That's not even looking at how all the games' systems from all departments combined constantly grow and change and their dependencies change or even break accordingly.

When the art department has to change the name of a ride (for whatever valid reason and despite everyone Skywalker-ing Noooooooo) every other department that uses the name will see their implementation based on it break. There are ways around it but I can't read a wwise project where coasters are named like this ID="{78BC1D64-9CD3-43D3-9FA2-207D3}" instead of CloudRunner : )

Adding a new coaster also isn't as easy as just creating a new "coaster" file. It's telling all other departments where the coaster is, how it works, what animations and seats it supports, how to translate it into another language, how and where it shows up in the UI, what sounds it should use, which values make sense for it and many...many...many... more. You're quickly talking about dozens and dozens of files and references that all need to link to the right spot. and that's just letting the game know there's a new coaster, it doesn't actually exist then, all the sounds, visuals, behavior and integrations then need to be added still. The previous step was just setting up its existence, its birth certificate so to speak.

Here's a really fun/interesting read on the subject by Liz England:
http://www.lizengland.com/blog/2014/04/the-door-problem/

And that's still not describing everything!
For audio alone a few more things can be thought of:

  • What happens if the door is half opened, but the person decides to close it again halfway through, does the sound stay in sync?
  • What happens when you go through the door, is the audio from outside blocked by it closing?
  • What happens if you bump into the door without even opening it?
  • What happens if you interact with the door physically with a melee or weapon attack.
  • What happens if the door can be opened by interaction and thus slowly, or fast, or just going back and forth, rather that a button press.
  • What happens if there’s physics object near the door, and the door collides with them?
  • How can I define the different bits of the door, like glass and wood, sounding different when interacted with?
  • If the door is opened by a puzzle mechanism, but it’s too far away to be heard, do I design special audio to communicate (hint)?

Having done all our work to get something in game, we can't ever be sure that something that worked "when we put it in" still works when we are two months further. So not only are we constantly managing new content, we're also always looking over our shoulder to keep an eye on the ever growing amount of work we've already done (maintenance) .

We have an amazing QA team that helps us out with this, they are absolutely invaluable as a first line of defense and deserve a lot of credit for the quality of our games. Sam is our audio QA hero and saved us from a lot of audio embarrassment : )

But your help too has very often been invaluable in assisting the audio department with the maintenance and guiding of new content! We're really thankful for that!

With that, it's time to wish you all a very Merry Christmas, Happy Holidays and a fantastic New Year!
 
Last edited:
Top Bottom