Weekly - Implementation, Trial and Error


 

Getting started working on my major project meant that I would have to get a few things in place and under control as my first priority, and this meant getting Fmod working properly both on my end, and that of the developers (Travis). So I figured I would try and take the weight off of his end of the production by looking at how to integrate Fmod into Unreal Engine 4 for myself, and maybe I could advise him through the process. From what I had seen on Fmod's official YouTube, it was simply a matter of downloading the necessary integration software for UE4 and installing it in the right places, great, easy. Not Easy.

After getting Travis to follow the steps on Fmod's YouTube and also on their website, I decided I would send him a basic Fmod build of the project with a music loop event that he could incorporate into his current project, which is absolutely not how Fmod works by the way. He followed the steps that we determined logical by reading a couple of rather vague instructions supplied by Fmod and tried to implement the build I had sent him, which I'm sure you can deduce, did not work. After a couple of back and forth messages on Facebook, we jumped on a discord session together to try and work out what exactly wasn't working with our process.







Disclaimer: If you know how to use and implement Fmod this is going to be a very painful read.


3. Hours.


We spent 3 hours, trying to figure this out.


Our build folder looked like it was in the right place, but still nothing about Fmod was showing in UE4. Okay so maybe the implementation wasn't installed properly, so we'll try and reinstall that.

Nope.

Well Travis is using an older version of UE4 so maybe we need to match up versions so that that it recognises Fmod.

Nope.

Maybe there's some documentation that we haven't seen yet or missed while we were installing, or not; turns out we'd seen everything worth looking at and everything else was super vague.

The build folder I sent Travis was built from a different version of Fmod to the one that he's now running in conjunction with UE4 so I might need to get that version.

So I downloaded the same version, rebuilt the session and sent it off to Travis.

Guess what?

Still didn't work...


Honestly, we were back and forth for so long because we wanted to figure it out ourselves, because it's so industry standard and so widely used that we should be able to figure it out for ourselves. But no, we couldn't, so at the end of our 3rd hour I caved and decided to ask my buddy Ryan, who has used Fmod before in conjunction with UE4. A 5 minute phone call concluded with the fact that Travis actually needed a copy of Fmod as well, from which he could build directly into his UE4 folders, as opposed to me sending him a copy of the folder.


God knows, why it needs to be done this way. I have to put my two cents in and say that it feels like a super outdated and counter productive process. Instead of being able to send a developer a small build file, I have to send him an entire project that he then has to build directly into the game, which also means that he has to have a small understanding of Fmod. I know that this probably isn't a problem when you're working with a larger developer, or maybe even closer to the developer than I am currently, but in this day and age where people are collaborating across the world through the internet, the process needs revision.


Once Travis and I got over ourselves about how annoying the process is, we got to work trying to incorporate some Fmod events.


On a lighter note, aside from Fmod's limited short comings, it opens up a million possibilities when it comes to the control I have as a sound designer and engineer working in the realm of video games. With this in mind, I decided I wanted more than just a simple, repetitive loop to play during gameplay, I wanted some dynamic audio. So I recorded a rough version of the music I wanted for the Garden Level, and then arranged it into 5 different sections, each with more musical elements than the last. The idea is that as the player progresses through the level and collects pollen, the music would increase in musical complexity to reflect their progress.


Here's the arrangement in FL Studio, which I recorded and mixed in;


And here's the implementation in Fmod;

The first 4 bars are set up to play when the game loads, and the next 4 bars are exactly the same but will loop until the parameters are changed and trigger the next loop. The reason I've left 4 bars prior before the loop is because there is a fair amount of reverb and sustained notes in this arrangement, and when we first tried out the loop in the game you could definitely tell it was looping because the sustained notes and reverb would suddenly stop and start again. This set up allows loop to begin with all the reverb and sustain of the last 4 bars, so it sounds a lot smoother and more natural.


The loops change according to parameters I have set and discussed with Travis. We decided that the parameters would be linked to the amount of pollen the player has collected and so Travis calculated how much pollen there is to collect in each level, divided that number by 4 (the amount of loops in the arrangement) and then set each of these quarter increments to a value between 0 and 100. This leaves me with the job of deciding what values the loops are going to be triggered by. As the values are set in quarters, I decided to set the first loop as any value between 0 - 25, the second as 26 - 50, the third as 51 - 75 and forth as 76 - 100. This gives Travis the freedom to set the quarter increments in UE4 as any number between these values.

Travis has set the value for the loop conditions in UE4 as 25, 26, 51 and 76. I tried simplifying this process and making the parameters 0 - 4 (e.g. first loop value 1, second 2, etc.) but for some reason this didn't work and so far what I've learned that if it works, it works, don't change it.


Yes, we messed around a lot when we could have just phoned a friend so to speak, but I'm glad we at least tried to work it out for ourselves before relying on someone else. Now that we have it all working and have a workflow that we're comfortable with, I'm excited to use Fmod for this project. The fact that I have this much control over what goes on in the game engine is an absolute blessing, and as long as Travis and I keep up communications about new implementations, I think it's going to work really well. All we can do is keep testing new elements and I create them and keep improving the way we implement.


More progress blogs to come, stay tuned!