Tutorial: Game Audio Integration Workflow with FMOD & Unity Is a new song from a very high talented artist Pro Sound Effects, listen and download it here for free in mp3 format.
#GameAudio #VideoGameSounds #Gaming
SPECIAL OFFER: Download the CORE Free Sampler for 250+ world-class sound effects: https://bit.ly/3poOoJh
–––––––––––
🎮 Learn more here: https://bit.ly/3qTogWB
Join game audio sound designer John Pata as he demonstrates his approach to building game sound effects in FMOD Studio & implementing them into Unity.
[00:00] Intro
[01:21] Designed Sound Effects
[03:13] FMOD Integration
[05:00] New 3D Event
[07:51] New Looped Event/ Nested Events
[11:36] Master Track
[13:50] New 2D Event
[15:55] Master Bank
[16:39] Unity Implementation
[20:03] Test Play Back & Live Mixing
[22:00] Conclusion
00:03 hey y’all it’s john patel with pro sound
00:04 effects
00:05 in today’s video i’m gonna be going over
00:07 my kind of uh day-to-day process that i
00:09 use
00:10 as audio lead for last epoch so i head
00:13 up audio
00:14 at 11th hour games and we’re currently
00:16 creating last epoch which is in early
00:17 access
00:18 um and yeah today what we’re going to do
00:21 is just design some new assets
00:23 and show the whole process from creating
00:25 the assets putting them in fmob which is
00:27 our audio middleware that we use to
00:29 manage our audio systems
00:30 and then integrating them into unity
00:32 which is the game engine that the last
00:33 epoch is created in so the sounds we’re
00:35 going to be working on today are for the
00:36 time rifts in last last epoch so it’s a
00:38 significant part of the narrative
00:40 in epoch is time travel and so in the
00:43 game
00:43 the the the main player can stumble upon
00:46 time rifts the the riffs will open they
00:48 can enter them and then kind of be
00:49 sucked into a wormhole and pop out at a
00:52 different period of time i’m not going
00:53 to go too in depth with the design
00:54 process i’m going to focus mostly on the
00:56 integration
00:57 and implementation process between f mod
01:00 and unity
01:01 so yeah i’m going to put these sounds
01:02 together and we’ll go from there
01:15 [Music]
01:20 okay so we’ve put our sounds together
01:22 i’m just gonna quickly
01:23 sort of show what we’ve got so what i’ve
01:25 put together for the event in the game
01:27 so we’ve got
01:27 um the sound for when the portal is
01:30 actually sort of opened in the level
01:39 cool um this is a loop i put
01:42 actually i don’t need them
01:45 um so the loop is um uh just the sort of
01:48 environmental sound that will keep going
01:50 as the portal remains in the level
01:54 it’s not too complicated
01:58 yep so i’ll just keep looping um i’ve
02:00 got the activate sound
02:02 so this is for when the the player
02:03 actually clicks on the portal
02:09 [Music]
02:14 yep and the time warp or whatever you
02:17 want to call it
02:18 um is uh just just when um that visual
02:20 comes up and the players going through
02:21 the kind of wormhole
02:35 cool all right so they’re the sounds
02:36 that i’ve put together um thankfully
02:38 with this kind of events um because it
02:39 doesn’t happen but happen very often in
02:41 the game i don’t need to make any sort
02:42 of variations on it i could if i wanted
02:44 to but because it’s more of a cinematic
02:45 event it doesn’t doesn’t really need too
02:47 much variation on it
02:48 um any variation um i do put on it
02:51 whether it be pitch modulation or volume
02:53 modulation or something like that i can
02:55 do within f mod
02:56 but we’ll get to that in a sec so yeah
02:58 let’s um let’s get these sounds
03:00 rendered i’ll just render them out um
03:03 has sort of separated audio files but i
03:05 i’ll explain in f mod sort of
03:06 how i rented them out and um and why why
03:09 i did it for the events that we’re going
03:11 to make so
03:11 yeah let’s get into fmod all righty so
03:13 now we’ve got our session open in
03:15 f mod uh what we’re going to do is kind
03:17 of just go from start to finish
03:19 uh create our f mod events that we’re
03:22 gonna use
03:23 in the game engine and i’ll just kind of
03:25 go over
03:27 uh what what we do and sort of why we’re
03:29 doing it as we go
03:30 so um i’ve just created a folder here in
03:32 my fmod events
03:33 um tree so i need to kind of think of
03:36 like what events i need in the
03:38 uh for for the event in the game so like
03:40 we’ve got
03:41 the portal opens so when it’s activated
03:43 the portal um
03:44 when it’s looping so there’s another
03:46 looping event which is separate to the
03:47 first one then there’s a like an
03:50 activation when the
03:51 the player clicks on it um
03:55 and then the the wormhole event which
03:57 the last two can probably be combined
03:59 into one but
04:00 we’ll see how we go so so let’s um hop
04:03 into our
04:04 folder here we’ll make some 3d events
04:08 uh difference between 3d and 2d events
04:10 is essentially a 3d event
04:11 can move around in a 3d space in the
04:14 game engine whereas a 2d event will just
04:16 play
04:17 dead center left and right without any
04:20 panty
04:22 um right so we’ve got a 3d event so
04:25 i’ll just call it
04:29 open um and then we want
04:33 let’s just call this similar thing
04:38 look all right so time rift open we’ve
04:41 got
04:42 our audio file here which is just the
04:43 one shot that we made earlier
04:51 it works um cool so what we’re gonna do
04:54 now
04:56 is kind of just oh i should mention the
04:59 audio bin so the audio bin is kind of
05:01 just a
05:02 a file explorer within fmod that allows
05:05 you to
05:07 look through so after you export your
05:08 sounds you you
05:10 put them in the fmod assets folder and
05:13 then
05:14 rather than dealing with like the your
05:16 computer’s file explorer you can get the
05:17 audio bin and that way when you drag
05:19 audio files it won’t
05:20 um it won’t get confused with any file
05:23 directories and stuff so yeah
05:25 if you go up to your window go audio bin
05:28 uh and then it’ll allow you to just drag
05:30 and drop the sounds you need for
05:31 whatever events
05:32 you’re creating so um so yeah what i’m
05:35 going to do
05:36 i’m going to adjust the size and
05:38 attenuation of the sound in the game
05:40 level and i can use the 3d preview
05:41 module here to do that so
05:44 um probably turn it down a bit just for
05:46 the example so we’ve got our 3d panner
05:48 down here
05:49 this thing will allow us to
05:52 sort of spa place the the sound in the
05:55 world
05:56 um sort of more accurate more accurately
05:58 in how we want it to so we can
05:59 increase the sound size so
06:03 it’ll just generally increase the size
06:04 of the sound
06:06 in relation to where the player is and
06:08 we can sort of make the minimum maximum
06:10 distance to where the player will hear
06:11 it i’ll just make it a bit
06:13 um i’ll make it a bit larger so that
06:17 so the player can actually hear the
06:19 sound from like a lot further away
06:20 because it’s quite a
06:22 you know i think i would notice if a
06:24 portal exploded next to me so
06:26 um right um and so
06:30 what we can do
06:34 we can preview it with this 3d preview
06:36 so that’s dead center
06:37 just say the sounds over here
06:42 cool hear it very clearly about further
06:44 away
06:47 yeah what about over here cool that’s
06:50 got some pretty cool coverage
06:51 um and then what i would do
06:55 is i’d probably change the instances so
06:58 that
06:59 this this like it won’t really matter
07:00 with this sound but it’ll just make sure
07:01 that no more than
07:02 four it won’t happen but no more than
07:06 four of these sounds are played at any
07:07 one time but i’ll make that i’ll make
07:08 sure there’s a cool down
07:09 of 60 seconds just in case so what that
07:12 does the cooldown actually
07:14 about 60 seconds 60 milliseconds so the
07:17 cooldown allows you to
07:18 so just just say for some reason six of
07:21 these rifts opened at once
07:22 wouldn’t happen but just say it did um
07:25 it would only play one of the rift
07:27 sounds because all six of these objects
07:28 would trigger
07:29 a rift sound effect the cooldown allows
07:32 it to
07:32 to say no we’re only playing one until
07:34 after 60 milliseconds then after 60
07:36 milliseconds
07:37 if it triggers again it’ll play one so
07:40 um it’s just to help tidy up the the mix
07:42 in the game so all right so
07:46 pretty happy with that for now we’ll
07:48 adjust levels as we get testing in game
07:51 um now for the loop so i’ll get my audio
07:52 bin back
07:54 uh what we’ve got so we got i bounced
07:56 them out as two separate loops the the
07:58 two audio files that i
07:59 i made um so
08:03 what i’m going to do here is create
08:05 event instruments so this is making
08:07 it’s sort of like creating events within
08:09 events
08:10 two events within an event um
08:14 and what i’m gonna do if you double
08:16 click on that it takes you to that
08:17 that um nested event i’m gonna take this
08:21 first loop that we made
08:23 create a loop make sure it’s looping
08:42 wonderful that one loops try the next
08:44 one
08:45 get this loop in here
08:50 stick to the end
08:59 cool no one loops great so both of
09:02 things successfully
09:03 loop uh now i’m going to create
09:07 over those nested events and another
09:08 loop region so this will make sure that
09:12 um the loops within these nests of
09:15 nested events are looping and then
09:16 this looping event on top of that will
09:19 loop those nested events so
09:21 one massive loop um right so what we
09:24 want to do
09:25 get rid of my audio bin uh
09:28 same deal let’s um change the sort of
09:30 size and
09:32 distance attenuation of the sound um
09:37 i don’t want this one to be too because
09:38 it’s a constant sound i don’t want it to
09:40 be like
09:41 massive i just want it to be very
09:43 environmental and kind of just
09:45 you know as the player walks walks
09:47 towards it or walks by it you can you
09:49 can hear an obvious sort of looping
09:50 sound so
09:51 probably turn it down
09:55 so 15.
10:06 cool that’ll do for now so something i
10:08 like to do with looping
10:09 nested events um like these ones is when
10:13 you click on nested event there’s a
10:14 setting called start offset
10:16 down here um so essentially what this
10:18 does
10:19 like if i solder this first loop i’ll
10:21 put the start off set to 65
10:24 that means if you see the playhead here
10:26 playhead here
10:27 it starts 65 down the timeline of the
10:32 the the nested audio in here so what i’m
10:35 going to do
10:37 is in fmod you can actually set up
10:38 randomized modulation so if i put random
10:41 modulation to the start offset
10:44 and then i set this to 50 the start off
10:46 set is halfway down the audio timeline
10:48 but it’s randomized so it’s essentially
10:49 going to start
10:50 anywhere on the timeline so if i play
10:52 this started there
10:54 started there started there started down
10:58 here
10:59 started down there started there so
11:02 you get the idea so if i do the same to
11:04 the other audio loop
11:06 modulation random start offset
11:12 50.
11:15 cool you can see the playheads are
11:18 jumping around they’re playing
11:19 they’re starting from different spots in
11:21 the timeline so what this is doing is
11:23 just
11:23 making it so every time the event is
11:24 triggered it’s going to be a unique
11:26 loop and this is this is a great
11:29 especially if you have
11:30 several instances of the audio
11:33 you know level at once uh lastly what
11:35 we’re going to do is going to go to the
11:37 master track
11:38 find the volume put an envelope
11:42 on the uh master volume so what this
11:44 will do is that
11:45 uh rather than when it’s triggering uh
11:48 triggering the game engine rather than
11:49 having it
11:50 um just stop and start um cut to zero
11:54 um instantly uh what we can do is we can
11:57 give it a fade in and fade out and just
11:58 adjust the
12:01 envelope however we want so all i want
12:03 is
12:04 so considering that there’s a huge
12:07 explosion
12:09 um when the the portal is activated
12:12 um it doesn’t it needs it doesn’t need
12:15 like a super fast fade in
12:16 it can it can have a little bit of room
12:18 to breathe because there’s an explosion
12:19 and then if we give that explosion some
12:21 space in the mix then we can let this
12:22 loop fade in
12:24 so maybe i don’t know two seconds see
12:26 how that sounds
12:31 that’s good and fade out probably the
12:34 same
12:34 really let’s give it two
12:47 wonderful uh and maybe same thing let’s
12:50 change the instancing and the cool down
12:52 blah blah blah
12:54 actually no i might not do that because
12:56 i think there can actually be more than
12:57 one
12:58 rifts more than one rift open in a level
13:01 at once so
13:01 i’m going to not change the cooldown
13:04 because if i did that then when
13:06 the when the um the multiple riffs are
13:09 spawned
13:09 in level in the game then that would
13:13 cancel out
13:14 a bunch of loops so we don’t want that
13:17 so yeah so we’ll leave the
13:18 cooldown to zero because we we sometimes
13:20 want multiple to be triggered at once
13:23 um but i will change i will keep the
13:25 instancing down to
13:26 i don’t know maybe 10 just in case
13:31 um you know you don’t want 100 loops um
13:34 going at once
13:35 uh right cool so that’s our loop done so
13:38 so far we’ve got our
13:42 opening and after that we’ll come out
13:44 loop
13:47 then for the next one i’m just going to
13:49 duplicate that
13:51 delete that
13:55 time rift let’s just call it enter
13:58 because it’s when the player enters the
14:01 actual rift let’s get our audio bin back
14:05 all right now so this is a couple of
14:09 um audio files we’ve got these are just
14:11 it’s it’s not
14:14 um
14:17 um yeah these ones aren’t too crazy but
14:20 i’m just
14:21 kind of going to i’ve i’ve bounced them
14:24 out into two separate
14:25 audio sort of tracks so that i can just
14:28 adjust levels
14:29 within f mode rather than relying on
14:31 backed in audio
14:32 so i’ll just try and place and see how
14:34 it sounds like that
14:37 [Music]
14:38 ah because i duplicated it it has a
14:42 envelope on the master i don’t want that
14:45 gives me a
14:46 really long attack
14:48 [Music]
14:55 cool and then the second one
14:58 [Music]
15:12 ah one thing i did wrong with this is
15:14 because i duplicated it it’s actually a
15:15 3d
15:16 event we don’t want that uh the reason i
15:18 don’t want that is because it’s like you
15:19 know
15:19 in the game the um the entire screen is
15:22 covered by the visuals so it’s going to
15:23 be a 2d event
15:24 um and like i said before 2d just means
15:28 it’s not going to be panning and moving
15:30 around in the in the world as we play
15:32 so i’m just going to delete the 3d panna
15:34 and that’ll just
15:36 turn the sound into a 2d event
15:53 cool um all right so there are events
15:57 i think that’s all we need so um what
16:00 i’m going to do
16:01 for now is just assign these to our
16:04 master bank
16:06 um i’ll just assign it to master for now
16:09 but then
16:09 yeah um so essentially you need to
16:12 assign them to your bank because then
16:13 when you press f7
16:15 and build your banks this is essentially
16:17 creating the compressed
16:19 um audio bank that unity uses to read
16:22 all the changes you’ve made and all the
16:24 f mod events you have in your session so
16:27 um yeah once that finishes building then
16:30 we can get into unity it’ll import the
16:32 fmod banks automatically and then we can
16:36 get implementing so let’s do that okay
16:38 so we’re in unity now and we’re gonna
16:41 actually implement the sounds we met so
16:43 um what i’ve done is i’ve
16:44 i’ve just set up a little test
16:46 environment where the player can just
16:48 walk through a um
16:51 a trigger volume sort of thing and it’ll
16:53 activate the time left so we can test it
16:55 [Music]
16:57 and so yeah let’s just go step by step
16:59 add in the sounds as we go so i’ve got
17:00 the time rep
17:01 time rift dropped in the level here um
17:04 and i’ve added a play one shot component
17:06 that’s just a custom component that
17:08 um our programmers made
17:11 and it essentially just plays an f mod
17:13 event of our choice
17:15 when um whenever um the lifetime of this
17:20 the whenever the time rift is enabled in
17:22 the level so i’ll just set that to
17:24 our um
17:27 event that we made so that would be time
17:29 rift open so that’s why we made an fmod
17:33 and so now we need to make a looping
17:35 sound now i had to do this one a little
17:36 bit different
17:38 so on the time rift
17:42 component itself i added in the
17:45 hierarchy
17:46 a just a blank component and then i
17:50 added a place
17:51 sound while active script which is
17:54 another custom component from our
17:55 programmers
17:56 and this essentially we’ll
18:01 loop our environmental sound for the for
18:03 the time riff so i’ll just
18:04 add
18:07 time rift there so the way that’s
18:09 working is play sound while active does
18:11 just as the name states it’ll play
18:13 that selected f mod event for as long as
18:16 the time rift is active in the level
18:20 what we also want though is for when the
18:22 player clicks on the time rift
18:24 we want the the looping sound to stop so
18:28 the way i’m going to do that is uh on
18:31 the time rift object
18:33 in the same place where our opening
18:35 sound effects
18:36 sound effect is triggered there’s a
18:38 deactivate game object
18:40 on interaction script so that’s another
18:42 custom component from our programmers
18:44 and so just as the name says as soon as
18:46 the player interacts with
18:48 this object it’s going to deactivate
18:50 whatever we assigned to this
18:52 this space here so i’m going to assign
18:54 our portal loop sound
18:57 component that we added earlier so yeah
19:00 so as soon as that it sets
19:01 that is interacted with it’s going to
19:03 turn off
19:04 our looping sound yeah so finally we
19:07 have our time travel
19:08 vfx which is like the visual effects
19:10 that trigger um
19:12 once the um once the time rift is
19:16 interacted with
19:17 so what we’re going to do is just grab
19:19 the
19:20 um the vfx object which is just here
19:24 i’ve added a play one shot when it’s
19:26 enabled
19:27 components it’s just saying the same
19:29 same object as um
19:31 for when the rift spawns in the level
19:33 and we’re going to add our
19:38 now enter sound event so let’s do that
19:42 time drift
19:50 enter
19:54 cool and that should be it so
19:58 let’s get in the level and give it a
20:04 test
20:06 all right so we’re in our level i’m
20:08 gonna walk through the trigger and
20:09 trigger the time rift
20:18 cool that worked so i think the
20:20 environmental looping sound could
20:22 actually use a bit of
20:23 love so i’m actually going to connect
20:26 to unity and sort of mix on the fly so
20:29 if i go down here and go live update off
20:32 um then i can connect to the game this
20:35 will essentially just make it so that f
20:37 mod synchronizes with the game engine
20:38 and i can
20:39 change levels change effects change
20:42 whatever i want
20:43 um so yeah i reckon
20:47 we can turn up the looping
20:50 sound effect so
20:53 i’ll just do it as an example but you
20:55 can see if i turn it up way too loud
20:58 you know i can control the volume
21:02 so what i’m gonna do is maybe make it so
21:04 i can hear it from a little bit further
21:06 and increase the size
21:08 let’s have a look
21:34 see how that feels
21:41 i think it sounds pretty good now let’s
21:42 see what happens when we interact with
21:43 it
21:59 cool it all worked um so yeah that was
22:02 sort of front to back
22:04 you know the um design process the f
22:07 mod event creation and implementation
22:10 into into unity and then yeah then we
22:13 tested it out in game and adjusted
22:15 things as we went so
22:16 thanks to everyone for watching um
22:18 remember to like and subscribe
22:20 and comment to let us know your thoughts
22:22 and let us know what you want pro sound
22:24 effects to cover next
22:26 see you later
22:43 you