Blog homepage

Behind the Sound of I Am Fish

Game Audio / Sound Design

I Am Fish is a charming, physics-based adventure which sees the player take the fortunes of four intrepid fish friends into their hands as they try to escape for the sea. It was developed by London-based Bossa Studios and is a spiritual successor to their earlier hit I Am Bread. The game features a variety of bizarre physics-based vehicle audio, dynamic music, a bunch of systems to handle water (would you believe), as well as the challenge of making the player feel like four very different fish. The audio designer for the project, Ali Tocher at LookListen Audio, was asked by Audiokinetic to share a few tricks, tips and takeaways from using Wwise on the game.

So let’s dive in! (Sorry, I will try to keep piscine puns to a minimum, but they were a mainstay on our team slack so I might have to Plaice a few in [groan])

fish key art

Dynamic Vehicle Audio

I Am Fish lets the player/fish control some unusual and bizarre vehicles which were a blast to make sounds for. Mop buckets, dumpsters, observation tanks, beer glasses, mine carts, large jars, a spherical fish bowl, luggage, a cube of ice, an inebriated human male and more! I wanted to share a couple of details on the design and usage of Wwise for two of these.

Spherical Glass Fish Bowl

The fish bowl audio needed to be readable at both very low speeds but could also reach very fast speeds for a decent amount of time. Initial tests on layers and processing for a rolling glass object showed that a traditional vehicle approach of pitch ramping through a blend of layers was not going to work. From recording and analysing a bunch of glass things rolling and spinning around, I realised that the main “sound of rolling” is defined by a sine sweep that describes a full rotation, and this should slow down and speed up based on roll speed. My first attempt of chopping up and recombining individual rotations was fruitless, so I settled on the approach of using an LFO in Wwise to create this shape dynamically in a designed piece of noise.

As you can see in the video, I set up a parametric EQ on the mix busses for rolling sounds, (in-picture left) then used a rolling speed parameter to control the Attack, Depth of Frequency of an LFO (in-picture right) to apply the “sound of rolling” to the noise layers.

A couple of notes beyond what’s shown here: 

• I’ve isolated just the rolling in the video, there are water layers and fish movement layers present too in-game. However, I kept the bowl impacts as they do a crucial job of covering some janky frames when the ball goes from very fast to stopped and also registers the ground.

• We do a check to see if the vehicle is grounded as there are plenty of airborne moments and this is a surface layer.

• You can hear it only faintly in this video example, but at high speeds a glassy texture is added as an alarm to let the player know they have reached a speed which will cause the bowl to smash if they don’t lose momentum.

Ice Cube Vehicle

I wanted to quickly share one thing about the ice-cube vehicle too, shown in the video. Mostly it was fairly straightforward to use this vehicle’s momentum to drive RTPCs, however I was struggling with the impacts; and they are the key layer for gameplay feel. I solved this by using angle of impact for the first time; so there are two types of designed impacts - scrapes (when the angle of impact is between 10-60 degrees) and hits (when the angle is 60-90 degrees), which are selected using Switch Groups. This seemed very obvious once I’d found the solution but took me a while to recognise.

img1

Water

I could trickle on at length about how we made the water sound splash off the screen… But I’ll just pick a couple of things.

Surfaces and edges

As those who have attempted it before know, water is a little bit tricky for object-based audio and the use of a spline system to move the sound source relative to the player is required. I focused on two uses of this to try and get good coverage for water audio. First was getting our graphics programmer to define a “surface boundary” for each body of water, shown with the red line. Secondly I also defined “traversable edge” regions (shown in yellow), for edge areas that were important to gameplay, usually because they were the player’s destination.

img2

As you can hear in the following video, the surface spline is located directly below the camera to enable the sound to attenuation for camera height, but importantly it also stops when it reaches the red marked boundary, and waits there until the player returns; as our puffer friend has a real penchant for getting out of bounds!

Water, music and how not to make it all sound dull

From day one of this project I had a big question on my mind. How do I make this game not sound dull and flat when I’m underwater, when I know that the allegory for underwater is to roll off a bunch of high frequencies? The answer came to me from the music. The score of I Am Fish is intended to mirror the emotional state of the fish, especially as the game plays a lot with things that seem unthreatening on their face but are rather different when you’re a 10cm goldfish. Fish like being in water, so I had the idea to flip the dampening idea on it’s head. What if the music was dampened when the camera is out of water (in the human domain) and full spectrum when the camera goes back underwater to the fish’s happy place! This gave me the added benefit of creating room in the mix for ambience above water while covering the LPF effect when submerging. They always say; you know a design solution is good when it starts solving other problems too! We also extended this to maintain full frequency music if the player is above the water and also using their special ability (ie. flying/rolling/biting). 

Fish Movement and Specials

Foley is always a treat to do, and that’s still true for fish! But get ready to unhook a lot of footstep concepts you’re used to! I’ll share a couple of things about how the sounds for the actual fish came together.

img3

Fishy footsteps?

This was another example of expectation reversal. The default view that “as video game character moves faster, more foley audio is heard” turned out to be untrue for our fish. The important player feedback and correct feel was that activity was heard from the fish’s tail mostly during maneuvering; ie. changes of direction or speed, but while the fish is heading in a sustained direction then water pad layers (or wind if airborne) were better to convey speed. Frankly I didn’t have the first clue how I was going to do the movement sounds for these fish coming in so it was very rewarding to find a solution that felt right. In the end a simple loop of high pitched bubbling that was processed using pitch and filters did the heavy lifting, as shown in the video.

Adding personality to the fish

The fish are the stars of the show in our game. Here are a couple of highlight sounds.

Pufferfish

The puffer fish’s special ability is to inflate, giving it the properties of a ball - rolling, bouncing etc. It reminded me of a semi-inflated foot[soccer]ball. 

Here it is in action:

Piranha

The piranha was, perhaps predictably, quite bitey. It reminded me of a small dog, so I scoured my library for snuffles, whines and gnawing and made a fun dynamic instrument. Having a dynamic loop helped out with a game design challenge too. When the piranha has successfully bitten a gameplay prop, the player must use the main input control to wiggle the prop free. With no sound this was confusing as the player could no longer move, but left-stick wiggle = more growly-barking exertion sounds seemed to get the message across well.

Thanks to Audiokinetic and Bossa for asking me to put this together. I hope you were able to take something useful away from it. I hope you all enjoy a well earned rest this coming holiday season!

Ali Tocher

Ali Tocher

Ali Tocher is a freelance audio designer and Director of LookListen Audio, based in Stroud, UK. He is a 2020 Bafta Breakthrough for games. Alongside working with a wide range of indie and AAA dev teams, Ali also makes audio for hospital and medical care projects using the power of game audio middleware.

 @Ali_LookListen

Comments

Leave a Reply

Your email address will not be published.

More articles

Game Audio Gamefication (Part 2)

In some of my own games we tried to implement a lot of cool audio features, linked a lot of things...

24.4.2018 - By Bjørn Jacobsen

Building a Career in Sound Today: Film, Games and Shades of Gray

On one side there’s sound for films- linear, on the other there’s sound for video games-...

9.7.2019 - By David Grinbaum

Lumote: Using Wwise to Drive In-Game Visual FX

Hello to everyone out there in Wwise user land! My name is Paul Ruskay and I am the Audio Director...

5.2.2020 - By Paul Ruskay

Generating Rain With Pure Synthesis

A few years ago, I wondered whether it was possible to synthesize whatever I wanted. I started by...

30.7.2020 - By Aleksandr Khilko

Event-Based Packaging Process Overview

What is Event-Based Packaging? Not long ago, the UE4 Integration of Wwise 2019.2 launched a new...

21.1.2021 - By Fan Runpeng

Syncing Music and Gameplay in BPM: Bullets Per Minute

Deciding what rhythm FPS to make BPM: Bullets Per Minute is a rhythm-action FPS, where you fire,...

13.1.2022 - By Awe Interactive

More articles

Game Audio Gamefication (Part 2)

In some of my own games we tried to implement a lot of cool audio features, linked a lot of things...

Building a Career in Sound Today: Film, Games and Shades of Gray

On one side there’s sound for films- linear, on the other there’s sound for video games-...

Lumote: Using Wwise to Drive In-Game Visual FX

Hello to everyone out there in Wwise user land! My name is Paul Ruskay and I am the Audio Director...