Posted July 26, 2022 by Digx7
About one and a half weeks ago I started planning for the Mini-Jam 110: Sacrifice Game Jam. I started reaching out to a few people I met online trying to get a team together. Here’s the team we got.
Once we got the team together we all met up a week beforehand (July 2nd, 7 pm-9 pm PST) to brainstorm some general ideas. We only knew the theme was Sacrifice but we didn’t know the limitation. Even still it was a good chance to meet most of the team for the first time and get down a few general ideas. (See First Brainstorming Notes) After that, we planned to meet up once the jam started and narrow it down to a more specific idea.
The theme we were working with was Sacrifice and the Limitation was Failure is Inevitable. With those in mind, we landed on making a reverse bullet hell game where the player must survive an endless number of waves. But between each wave, they must sacrifice something by choosing between one of three debuffs. The players would get scored based on how many waves they survived.
I can’t speak to anyone else on the team as to what they learned. But for me, there were a few things I got to try out for this game. The main one was stretching my knowledge of using ScriptableObjects as middlemen for my game events. There’s an excellent article written by Ryan Hipple (Link Below) about this that you should check out. But the idea is you take scriptableobjects, which are scene-independent objects that can hold data, and use them to store values that multiple things need to access without creating a bunch of dependencies between a lot of different systems. For example, you could have a scriptable object that stores the player's health. This would make it a single int value that anything could access, without needing to know who else was accessing it or modifying it. By storing the player's health this way you can update the UI without your UI system needing to know anything about the player object. You can have the enemies start to act differently as your health gets lower without needing every single enemy to have a reference to the player object. Expanding upon this idea you could do this with more complex data types. Like the player's position or their stats. You could even do this with an enumerator to store the game state.
I guess one other notable event during the game jam was how I got the music for the game. Noland made one music track for the game. Which is fine. However, when he sent us the track he didn’t send us a .wav file but instead sent us a link to a private project on BandLab. Of course, I didn’t realize this until the last few hours of the game jam when I was trying to implement the music. And due to timezone differences, Noland wouldn’t be available for the rest of the jam. Well, I debated just not adding the music I did some poking around on the web page in inspect mode. See I knew that for the music to play in my browser there had to be an audio file that it was playing somewhere. And if I could find that file maybe I could extract and use it in the game. Initially, I looked under the sources section of the inspector. Hoping to find an audio file in there somewhere. Sadly they don’t make it that easy. I almost gave up thinking that of course, BandLab wouldn’t make it that easy for anyone to just rip someone’s music like that off their site. But I decided to keep looking a little bit longer. I checked the network tab that shows you all the packets that the browser receives as it receives them. I didn’t recognize most of them as they weren't designed to be human-readable. But I noticed that whenever I started playing the music a couple of media packets were sent to the browser. Three packets always got sent and they all looked the same thing in the inspector. It was then that I noticed there was a link for each packet. Out of curiosity, I tried copying and pasting that link into a new tab. Immediately my browser downloaded the song. This caught me completely off guard as I thought that it was a lost cause at that point. But luckily it meant I was able to get Noland’s music into the game.
In the end, it was both a fun and interesting experience working on this game jam. I met some strangers on the internet who I had never met before, worked together with them, and made a game in 3 days. I’m impressed with how the game turned out and how cohesive the art style was. I don’t know if I’ll ever interact with these people again or see them. But I’m glad I got to work with them.
Up next I got the 2022 GMTK Game Jam this next weekend. I guess it’s time to start planning for that.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sources
First Brainstorming Notes: Notes
Leabolds Dream Color Palette: Palette
Noland’s Music: Music
Ryan Hipple’s Article: Article