I am excited to share my latest jam project, Swap Drop, with everyone! It’s the start of a new year, and that means RVA Game Jams has hosted their annual local game jam event. It is the biggest event RVA Game Jams hosts, and the first jam I ever participated in a year ago. This year’s event is a little different, so let me share a bit about that with you, and then I’ll get into my process for the game I worked on, Swap Drop!
New Year, New Personal Growth
My involvement with RVA Local Game Jam this year started out before the event took place. It also marks some new opportunities I had for personal growth.
The first opportunity happened at the very beginning of this year with MAGFest. This really should be its own post at some point, but to summarize, I had an incredible experience meeting up with RVA game jam folks and meeting new people in the game dev scene. I was able to meet Sam Eng, a game dev based in New York who just released Skate Story. I’m mentioning this here because Sam was the guest speaker for our local jam event! Getting to hear his perspective about his game during the jam, but also getting to know him a little bit personally, was such a big privilege. One that I would not have even imagined when I started my game dev journey a year ago.
After Sam Eng’s keynote presentation, the RVA Game Jam crew had their own presentation. This presentation consisted mostly of tips and tricks for newcomers, as well as experienced jammers. A week before this event kicked off, I was invited to be a part of this presentation to talk about game audio! I really couldn’t believe I was considered to share my knowledge with everyone at the jam event. It was funny, because I remembered a year ago, they had no one during the presentation to talk about game audio. I remembered during that time, I told myself, “Someday I will be the one to give that talk during the local game jam event.” I’m not even joking, I was daydreaming about it, and it actually came true! I can’t thank Momin and Valentina enough for trusting me enough to share what I know.
If anyone reading this wants to see the talk I gave on game audio, here is the video! I even have it queued up to when I speak!
Just thinking about where I was a year ago, and then where I’m at now, I am excited for what is to come. I am leveling up in many aspects of my game audio journey. This leveling up outside of making the actual game audio is welcomed, but let me talk about my next personal milestone with the game Swap Drop.
Calm Before the Storm
The jam started out just like the other jams I’ve been involved with; with a reshuffling of teams! Once we knew who was on our teams, we got started with ideation of our game. I was really excited about this jam because I finally was able to get the opportunity to work with Momin Khan. Momin is someone I’ve gotten to know over the year being in RVA game jams, as well as RVA language exchange. Not only is he a great friend, but he’s a very talented programmer that successfully shipped Wheel World a few months back.
Our team had a few short hours to come up with the concept of our game before we hunkered down in our homes. This jam happened just before the big winter storm hit the east coast, so we all had the meta challenge of completing the game before any potential power outages!
The theme for the jam, as given by Sam Eng, was “Textural”. This was related to Sam’s talk on Skate Story, where he took the sounds and textures of New York to create that game. Momin immediately tried to come up with ideas for games that no one else would think about. What we quickly came up with as a team was a hybrid 2D/3D game, similar to Paper Mario, where the character would throw textures to “paint” the surfaces of the game world. We initially came up with multiple ideas for textures, but due to the 48 hour time limit, we limited ourselves to 2. These textures are Metal and Jelly. The Jelly texture in particular would turn any surface into a bouncy surface. Below is our rough sketch of the idea

Now that we had the basic idea for our game, it was time to make the game! I will be going over in the next sections how I did the SFX and music for our game.
Sound Effects!
For much of the audio in Swap Drop, I was inspired by the talk that Sam Eng gave during the kickoff. During the talk, Sam talked about how the band, Blood Cultures, would go around with a microphone, recording the sounds of New York. This later turned into a sound library where they were able to pull these recordings into the songs they made for Skate Story. Since the theme of the jam was Textural, I thought this would be a perfect opportunity to incorporate some of these techniques into Swap Drop.
What was perfect about this technique is that, recently, RVA Game Jams hosted its very first audio safari event! In this event, sound nerds gathered at the main street train station to record audio. This would then turn into a sound library that would be free to use for jam games. It was so much fun being able to connect with other audio nerds and spend time recording cool sounds together! I was able to gather some great sounds of electrical waves from vending machines. There was even this old school payphone that I was able to record. To commemorate this outing, I took a picture with the group I was with, recording a vending machine! I unfortunately could not be in this photo as I was the one who took the photo.

This audio safari library is free to use and can be downloaded on this itch page.
Since I spent some time helping record this audio library, I wanted to take the textural idea to its limit and use only sounds from this audio library in Swap Drop. I mostly succeeded in this goal. In terms of sound effects, every sound was derived from this sound library.
For the simple sounds, I just took some sounds, cleaned them up, and implemented them in the game with very little processing. Things like ambience and footstep sounds were things that people in the audio safari already recorded.
Some of the more exotic sounds, like the sound of the player throwing the orb, were really tricky to pull off with the limited sound library. The way I achieved this was through some layering of sounds and reversing some sounds. The one sound that really came in handy for this particular effect was the sound of cloth being thrown by my friend James Krasner. The sound really had a nice impact, even reversed. For the throw, I reversed this sound and then layered some leaf rustling and wood scratching sounds from the audio safari sound library. Then, for the impact orb sound, I used the same cloth throw sound and threw in Valhalla Supermassive. I mainly wanted to use Supermassive for its warp knob feature. I was able to automate that to create a sort of boinging sound. It was really simple, but a pretty effective way to convey a magical orb sound.

The only other complex sound that took a bit of processing was the sound of a player bouncing on a jelly texture. This took me a while to come up with a solution that only uses the audio safari recordings. What I ended up doing was layering several sounds of a metal box being hit. I layered them with varying pitches. With one instance of the sound, I automated the Kilohearts pitch shifting tool to go up and down in pitch. This was to simulate and reinforce the idea of bouncing up and down on something. It ended up sounding pretty good. It almost reminds me of a trampoline sound…kind of.
Adaptive Music
The process I described above of creating my sound effects is something I’ve done before. Nothing is really new from what I’ve done in past jams. The one thing I really want to talk about is something that I’ve wanted to do for a while, but never really got a chance to practice, until now. That’s right, you read the heading, it’s time to talk about adaptive music!
I’ve always wanted to practice adaptive music using audio middleware. The reason it took me so long to get a chance is really a combination of 2 reasons. The first being that I had no idea how to get audio middleware implemented into a project in the first place. The second is that the programmers in the past did not really know how to get audio middleware implemented into a project, as well. On that second point, I remember mentioning this a while ago with Momin at a past hangout, and he said if we’d work on a team, he’d be able to help get that set up. I finally took him up on this offer for this jam.
I initially thought about using Wwise. It was the software that I was (and still am) learning, and it’s standard in the AAA gaming industry. I decided in the end to use FMOD for this project, and you can thank Sam Eng for that. What happened was during the ideation stage of the jam, Sam was sitting at our table, hanging out. I was talking about using Wwise for the project with Sam, and he pretty much told me, “Why not just use FMOD?” That really stuck in my head, because I always thought FMOD was the “musicians” audio middleware. It feels like middleware that I could learn in an afternoon, compared to Wwise, so I put off learning it for a later time. Since this was a weekend jam, with limited time, I decided to jump in and use FMOD for the first time.
I can say that I pretty much learned the basics of FMOD in an afternoon! It was a bit of a learning curve to get used to the conventions of how to do things, but a lot of the software really reminded me of Ableton. I’m not an Ableton user, but I’ve played around here and there with it, so it wasn’t too bad to pick up. Here’s a comparison image, first FMOD then Ableton, so you can see what I mean.


Not exact, but very similar, especially the effects chain on the bottom.
Early on, I knew the type of adaptive music I wanted to do involved the song evolving as the level changed. Our character has a metal texture and a jelly texture that can be painted on the game world. I decided to have one instrument represent each texture, so that as the player adds more of one texture, the instrument gets more complex. The player can remove textures from the world, so the complexity of that instrument would go down as well.
During ideation, we had a bunch of textures, so I set out to make a song that included a bunch of instruments. I don’t know what it was, but due to either some small burnout or bad weather, I really had a hard time coming up with a song. My main roadblock was coming up with the right instruments that would sound great. In the end, I just ended up scaling back and going with a simple piano and drum song. The drum kit I used was all sampled from the Audio Safari library, of various wood and metal surfaces being hit. The piano I used was from the Arturia collection, and remains the only sound in the entire game to not use the Audio Safari sound library. Though I really tried, I couldn’t find an instrument lead sound I liked from that sound library. I even tried using train horns!
I kinda composed the music in a bit of an odd way. I started with the piano chord progression, which became the middle complexity track, and then scaled that back a couple of iterations. So it essentially went from a 4ish chord progression down to the piano only playing 2 long notes. Afterwards, I came up with a more complex piano version with some staggered note chords, along with an arpeggio. A similar process happened with programming the drum pattern.
Each iteration of the instrument complexity is all the same tempo and all the same key. So I grabbed all the tracks and layered them in one timeline sheet in FMOD. I also made sure to loop the song.

After that, I created 2 parameters, both for the piano and the drum complexity, going from a score of 1 all the way to 4. I applied a gain effect to every audio track and gated them so that, for example, if complexity 2 is playing, the gain of track 2 would be 0Db, while the other tracks would have a gain of -infinity Db. I did that for every audio track for both instruments. It was very tedious doing it this way, but it really was the only way that I found to have FMOD play these tracks in sync, while also allowing the ability to seamlessly transition from one instrument complexity track to another on the fly.
This would all happen in a “main theme piano” or “main theme drum” event. I would then pull these events into an event called “main theme” as nested events, so that the game can call the main theme event to play both of these events at the same time. The drum and piano complexity parameters were global parameters. Our programmers for the game would be able to tie these parameters to how many of a specific texture exists in the game world. It turned out to be a very effective system, and one that really made the game world feel alive as the music gets complex, and more textures are added to the world.

The last thing I did to make the music shine in this game was add a secret instrument to the mix. It’s a melody line that uses a fantasy piano preset in Arturia Piano. This melody line would only play when the complexity score of both piano and drums reached its maximum value. I thought this needed to be programmed on the engine side of things, but I was surprised I could do this very easily within FMOD.
Overall, my first introduction to FMOD was a very positive experience! It was easy for me to wrap my head around the software, and it took me no time to start feeling like a pro in it. I will probably use this as my go-to tool for quick audio implementation; however, I still want to learn Wwise. I hope one day I’ll have the courage to dive headfirst into Wwise, but for now, I really enjoy FMOD!
Conclusion
We ended up with a pretty rough prototype of the game at the end of the jam, but I’m really proud of what I was able to accomplish with this game. I was able to push my sound effects creation to its limits while successfully using audio middleware for the first time!
I want to thank Momin, programmer Alex, Angelo, Dylan, and Sketchcast for being amazing teammates. I really enjoyed collaborating with everyone on this game!
I also want to thank RVA Game Jams for providing me with the incredible opportunities I’ve had for growth, both as a presenter and for the chance to network outside of jams.

Leave a Reply