Prototyping // 2022
ROLE
Sound Designer, Songwriter & Producer
Responsibilities
Sound Design, Foley, Music, Dialogue processing, C# Programming and implementing audio-based features in-engine (Unity) & General feature programming
Deadline
14th October 2022
PLATFORM
Windows
Info
Continuing with Beetroot Brotherhood, the team that I worked with to create Interspersed.
We're using the summer to prototype our next game which we'll be developing for the next year while I look for a sound design position in the industry to start my career now that I've graduated.
There are around 5 or so ideas being prototyped, and I'm developing the audio systems which myself aswell as the rest of our audio team will be using for the next year.
I've decided to use this as an opportunity to integrate FMOD into their project so I can improve my middleware knowledge as now that I've finished University, I'm looking for a job within the industry and want to stay sharp, challenging myself to learn more.
Audio Systems
Footstep system
I used a video by "Omnisepher Game & Sound" for the script as I've never integrated FMOD with Unity and have never programmed a raycasting system.
I altered this script to include a material check for each foot, checking the material name under each foot instead of a single check for the material under the center of the player. This makes the system much more accurate.
I created a couple of public transforms to allow for the left & right foot to be selected as the origin points for the raycasts and cloned the raycasting function, naming them "PlayStepLeft" & "PlayStepRight", these are then called through animation events within the player's animations.
Here's how I've laid it out in FMOD, using a labelled parameter sheet:
Here's the script I used and edited to suit my idea for the footstep system:
Here are the animation events within the walking animation, calling the functions "PlayStepLeft" & "PlayStepRight".
The same approach will be applied when adding jumping & landing sounds aswell as creating different walk & run varients.
Audio Occlusion
I've implemented audio occlusion, this uses a script from Scott Game Sounds, with the only edits removing some conflicted and out-dated code which was preventing the script from working.
The script essentially raycasts towards an audio source and alters the values of an occlusion parameter sheet I have set up in FMOD according to how many lines are blocked by environment obstacles.
In my first test scene I have a radio, extractor fan and a person talking to test this system.
I've since created a larger scale test, however it's more chaotic than demonstrative, but take a look anyway:
Furthermore, since finishing the prototypes and starting work on the decided game, I've added in the ability to disable / enable the visual line casts on an individual basis so debugging is much easier now as well as extremely tidy as you can opt to have no line visuals at all.
Radio
I've created a parameter sheet for the radio, giving it an off and off state. This will allow the player to turn the radio on and off during gameplay. Whether we use it for an enemy distraction system or purely just for world building, I currently don't know.
Turning the radio on plays some static and a radio tuning sound, turning the radio off plays some more static as it fades out.
The state can be swapped in-game, also using a debug slider I added to the inspector window.
I wrote a script for the radio's functionality and merged the occlusion script into it to allow for the radio to have occlusion applied to it aswell as being able to turn on and off.
Menu & Music
One of our artists, Lenny, designed a lot of nice assets for the Latch prototype as well as creating a scene to populate with his work. I found a nice area and designed a 3D main menu, tweaking some asset placement and creating animations for the hanging corpse and camera.
Onto my actual job, I developed and implemented some sound design work to give the scene some atmosphere and wrote some background music that I felt fit the atmostphere portrayed on the menu.