menu
 

Wild Bastards | Music & Nested Switch Containers

게임 오디오

Hey! My name is Ryan Roth, I’m the audio director over here at Blue Manchu, I’ve done some other cool games you might have played (Guacamelee 2, The Beginner’s Guide). I did Void Bastards with the Blue Manchu team over in Canberra, Australia; and the newest game we just finished is Wild Bastards.

Wild Bastards is a first person shooter, with three layers of strategy. When designing audio for three separate game phases, it’s important to distinguish how much time the player is going to spend on each screen, and how to make that engaging. Wwise’s music engine allows you to make sure each time the player engages with these phases, they’re hearing something different. Wild Bastards also has a lot of dialogue, and real-time character swapping, so I’m also going to talk about how nested switch containers can help make that work!

The Planet Map

While the core action of Wild Bastards takes place in first person combat, a large portion of the game takes place on the strategy (planet) map. This phase of the game allows players to spend their movement points to navigate around the planet. We have six planet types in Wild Bastards: a desert, swamp, ice, moon, forest, and a fancy estate-type planet. I decided each planet needed musical accompaniment, as well as some BG elements to sell the particular planet type.

Wild-bastards-hostile-planet-gameplay

Hostile (moon) planet

I initially put some one-stem stereo loops in here, but thought maybe it would be much better if I made the music procedural to break up the monotony instead of hearing the same thing every time. Here’s where the fun starts.

Preparing the Music

Firstly, I had to stem out all my tracks so that I could have Wwise play each instrument separately. Without getting into too much music theory, I ensure all my music is in the same key and tempo. Also another important part of this was making sure my stems were not all the same length, however still cut on a downbeat. Making sure stems are looped on the same beat, but not all the same duration ensures they will potentially start and end at different times in the playlist container, but still be tempo accurate. Let’s get into that now.

Wild-bastards-bounced-files

It ends up being a lot of stems

Getting Stems into Wwise Music Engine

I made a playlist container and added all of my stems into one music segment. Then I create the same number of sub-tracks as stems per instrument. Set that music segment to random step and then that instrument is ready to go. Copy this technique for all the instruments in the track, ensuring to set each playlist container to play that one random step segment infinitely. Another important step is to add one or two extra sub-tracks, but keep that sub-track empty. This works especially with heavy melodies, or even rhythmic elements. Because the segment is set to random step - sometimes Wwise will choose a sub-track with nothing in it, which can add a lot! Sometimes not playing something can be as interesting as playing something.

Wild-bastards-random-step-stems

Random step stems w/blank tracks

Night and Day Cycles

Wild Bastards also has a day/night cycle on the planet map. I wanted night to sound a bit different than the daytime stems. All I did is stem out the music the same way I did for the day cycle. Compositionally, I just kept a lot of the same midi data, but used different instruments/samples to play the melodic material.

Wild-bastards-night-day-cycle

Day/Night cycle on the Planet Map

Once all the night playlist containers were ready, I just posted them on the same event I used to play the planet map music. How do we get them to play not all at once though? So for that, I just created a day/night cycle state. In each playlist container, I go to the states tab and literally just set the playlists I want to post when it’s day to have -108 voice volume during the night, and vice versa. The default transition time for a state change is 1 second, but I adjusted this to 3, because it felt better when switching from day to night in the game. I feel like I kind of cheated for this one, but it works great!

Wild-bastards-set-night-stems-Wwise

Set day stems to -108 for the night state

Additionally, I added a nice stereo BG layer (blowing sand, windy, etc) to the event for extra planet-specific context. I set this with the day/night cycle in mind, so when that state gets switched, so does the BG. On top of that, I added a little bonus event that has a chicken crowing/wolf howling, so when the state change happens in the code, this gets posted too. You get an extra little sonic indicator about what time of day it is.

Try it!

After all this is done, you should have a whole bunch of playlist containers with all your music. Post all these at the same time in one event and listen to Wwise choose random stems to play and never quite sound the exact same, but still sound like a coherent singular track!

You can get some really cool combinations, sometimes you’ll only hear one instrument playing and then a whole bunch of stuff comes in on the next bar. This worked very well on the planet map; the player can hang out for as long as they want to, trying to figure out their strategy and never hear the same thing twice.

Auditioning Alpine (snow) planet map a few times in Wwise to hear it play differently each time

Nested Switch Containers and Character Switching

Since Wild Bastards has a lot of characters, and a lot of dialogue that needs to happen at certain very specific times during the FPS portion of the game, I had to make a system that would be robust enough to support all kinds of different actions. At first when I initially made this system, I had a hard time figuring out myself where I should put different lines of dialogue as I cut them - I would often say to myself: “wait…how did I set this up?” It got easier as I went along.

I Played Final Fantasy 7 Remake


Character switching dialogue from FF7 Remake

The header says it all: I played Final Fantasy 7 Remake and I really liked the way they handle character swapping in combat. You can switch between one character to another and the character you’re switching from will say something along the lines of “you take over!” The character you then switch to will respond to them with “guess it’s my turn!” Sometimes these character swaps are contextual, someone might have low health, etc.

Since Wild Bastards has a similar mechanic during the first person combat, where you can swap between two outlaws at any moment - I wanted to lift at least some of this system from Final Fantasy 7 Remake.

Two States

How do we set this up so it’s easy on the programmers? You can do a lot of this logic in Wwise. We just have to figure out what outlaw is active, and what outlaw is inactive. First, I made two state groups which include every outlaw available in Wild Bastards (13 of them). One is “Character” which is the active character you’re controlling, and the second I called “Last_Character” which is the outlaw offscreen, but available to swap to.

Wild-bastards-character-states-wwise

Character states (every outlaw available)

I made one switch container called “Vox_Out,” and “Vox_Outlaw_Arrive.” I popped all of my swapping dialogue in there. The switch container uses the “Character” state to choose which outlaw is active and posts these two events (Vox_Out, Vox_Outlaw_Arrive) in succession (with a delay on the latter so they’re spaced out enough to make it sound like they’re responding to each other.

 

Doc Casino and Spider Rosa swapping out and responding to each other

But what if the offscreen character has low health? With the low health dialogue recorded, I put in two more switch containers inside the original switch containers. These I named “Fine” and “Low.” I then created another state called “Health” with two state parameters (Fine and Low). Then I put all the lines in their assigned health state switch container. So first Wwise will figure out if the outlaw you’re switching to or from has low health, then after, choose which outlaw line to post, all from one event!

nested-switch-container-Wild-Bastards-Wwise

Nested switch container with low/fine health states on top, and outlaw states underneath

Offscreen Outlaws Specific Commentary

I wanted to have outlaws speak and comment on the active character’s actions. Once I got the dialogue recorded - I basically just needed to do a similar nested switch container situation. This is where the “Last_Character” state comes into play. If I’ve got dialogue praising a specific outlaw for a nice take-down the player just performed, we need to know what outlaw is active, and what outlaw is speaking. The first switch container decides what outlaw is active, then decides amongst the 13 switch containers inside that for every available outlaw that could be offscreen. The bottom level switch container will have every line that outlaw could say about every active outlaw (except for themselves, of course). All you have to do is track these two states, and again, the game will play the correct line with just one event.

more-nested-Switch-containers-Wwise-wild-bastards

More nested switch containers with Character state on top, and Last_Character state underneath

Auditioning the nested switch containers, by changing “Character” & “Last_Character” states

Hope you enjoyed this little blog post - Wwise is super robust, I’m sure there are a whole bunch of different ways to achieve what I did on Wild Bastards with these two particular situations!

You can check out the game here on steam: Wild Bastards.

Cheers,
-Ryan

Ryan Roth

Ryan Roth

Ryan Roth is a Canadian sound designer and composer known for his work on Guacamelee 2, Void Bastards, and The Beginner’s Guide. With over two decades of experience in game development, Ryan excels at creating impactful sound design while blending gameplay with harmony and voice-leading techniques. He enjoys large-scale projects, and also values collaborating on game jams and smaller games, recently winning Ludum Dare 53.

www.dualryan.com

 @dualryan

댓글

댓글 달기

이메일 주소는 공개되지 않습니다.

다른 글

Total War: WARHAMMER 2 (토탈 워: 워해머 2): 음악 구조 제작과 체계적 사용법

Total War 시리즈를 잘 모르시는 분들을 위해 설명 드리자면 Total War는 턴 방식의 전략 게임으로 대규모의 실시간 전쟁이 특징적인 게임입니다. 중세 유럽, 봉건 일본,...

21.8.2019 - 작성자: CREATIVE ASSEMBLY (크리에이티브 어셈블리)

Wwise 미디 기본 지식: 뉴 슈퍼 럭키스 테일(New Super Lucky Tale)의 폭스베리 타이머 음악적 미디 마법!

안녕하세요 멋진 Wwise 사용자분들 :) 게임 오디오 업계에서 살아남기 위한 필수적인 스킬은 바로 문제를 해결하는 능력입니다. 사용하는 도구의 크고 작은 모든 면을 아는 것은...

8.2.2021 - 작성자: 애론 브라운(AARON BROWN)

Wwise 라이선스 및 가격 책정에 대해

"도대체 어떤 방식으로 책정되는거죠??"전 세계 스튜디오의 어두운 구석 어딘가에서 Wwise의 가격 모델이 조금... 복잡하다는 속삭임들이 있어 왔습니다. 완전히 틀린 말은 아닐...

13.4.2023 - 작성자: 마이크 드러멜스미스 (Mike Drummelsmith)

상호작용 음악: '여러분이 직접 선택하는 모험' 스타일의 발라드

2018년 크라우드 펀딩 캠페인을 성공적으로 마친 inXile Entertainment(인엑사일 엔터테인먼트)는 '웨이스트 랜드 3(Wasteland 3)' 게임의 본격적인 제작에...

23.5.2023 - 작성자: Alexander Brandon (알렉산더 브랜드)

BPM: 불렛 퍼 미닛(Bullets Per Minute)에서 음악과 게임플레이 동기화하기

어떤 리듬의 FPS를 만들지 결정하기 BPM: 불렛 퍼 미닛(Bullets Per Minute)은 박자에 맞춰 총을 쏘고, 재장전하고, 점프하고, 피하는 리듬 액션 FPS...

11.12.2024 - 작성자: Awe Interactive (어 인터랙티브)

에이지 오브 엠파이어 IV의 음악

안녕하세요, 저는 린 가디너(Lin Gardiner)라고 합니다. Relic Entertainment(렐릭 엔터테인먼트)의 수석 오디오 디자이너이자 에이지 오브 엠파이어...

22.1.2025 - 작성자: 린 가디너(Lin Gardiner)

다른 글

Total War: WARHAMMER 2 (토탈 워: 워해머 2): 음악 구조 제작과 체계적 사용법

Total War 시리즈를 잘 모르시는 분들을 위해 설명 드리자면 Total War는 턴 방식의 전략 게임으로 대규모의 실시간 전쟁이 특징적인 게임입니다. 중세 유럽, 봉건 일본,...

Wwise 미디 기본 지식: 뉴 슈퍼 럭키스 테일(New Super Lucky Tale)의 폭스베리 타이머 음악적 미디 마법!

안녕하세요 멋진 Wwise 사용자분들 :) 게임 오디오 업계에서 살아남기 위한 필수적인 스킬은 바로 문제를 해결하는 능력입니다. 사용하는 도구의 크고 작은 모든 면을 아는 것은...

Wwise 라이선스 및 가격 책정에 대해

"도대체 어떤 방식으로 책정되는거죠??"전 세계 스튜디오의 어두운 구석 어딘가에서 Wwise의 가격 모델이 조금... 복잡하다는 속삭임들이 있어 왔습니다. 완전히 틀린 말은 아닐...