Behind the Sound of I Am Fish

游戏音频 / 声音设计

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

Audio Designer

Ali Tocher

Audio Designer

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

评论

留下回复

您的电子邮件地址将不会被公布。

更多文章

一款先上线再研发的游戏音频流水账

项目情况简介 《Moments:choose your story》,最开始没人能想到,一群女孩子做策划的游戏,海外上线至今多次进入苹果的 App Store...

8.7.2019 - 作者:张志伟

利用 Wwise 为游戏制作母带 | 第 1 部分:游戏的音频母带制作

无论是使用带有 3D Audio 的耳机、立体声 TV 扬声器还是豪华的 7.1.4 Atmos...

14.5.2024 - 作者:Loïc Couthier & Danjeli Schembri

如何使用 Wwise 和 Unity 创建可对音频作出反应的对象

在此,我想向大家展示如何使用 RTPC 在 Unity 中移动游戏对象,并创建由音频驱动/可对音频作出反应的对象。本文要求读者具备 Wwise-101...

28.5.2024 - 作者:Tomokazu Hiroki

《Scars Above》中的 Wwise Spatial Audio 实现流程

这篇文章是关于什么的?何为 Spatial Audio API?Spatial Audio API 工作流程Room 和 Portal素材组织和命名规范命名规范Wwise 对象组织Unreal...

12.6.2024 - 作者:Milan Antić

Sound Haven Highway | Step Up Your Sound Game Jam

本文是在第二届 Step Up Your Sound Game Jam 之后撰写的。在这次一年一度的 Android 手游 Game Jam 上,参赛团队要结合 Wwise 使用 Dolby...

24.7.2024 - 作者:Petricore

《星球大战 绝地:幸存者》背后的声音设计 | Respawn 音频团队访谈

《星球大战 绝地:幸存者》是 Respawn Entertainment 与 Lucasfilm Games...

16.10.2024 - 作者:Respawn Entertainment (重生娱乐)

更多文章

一款先上线再研发的游戏音频流水账

项目情况简介 《Moments:choose your story》,最开始没人能想到,一群女孩子做策划的游戏,海外上线至今多次进入苹果的 App Store...

利用 Wwise 为游戏制作母带 | 第 1 部分:游戏的音频母带制作

无论是使用带有 3D Audio 的耳机、立体声 TV 扬声器还是豪华的 7.1.4 Atmos...

如何使用 Wwise 和 Unity 创建可对音频作出反应的对象

在此,我想向大家展示如何使用 RTPC 在 Unity 中移动游戏对象,并创建由音频驱动/可对音频作出反应的对象。本文要求读者具备 Wwise-101...