The Making of Power Down : a Mini Jam Game


HTML


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.  

  • Samblez: The first person to join the team. They are a talented pixel artist based out of Washington, and this was their first game jam. 
  • Cool Coder Studios: They are another pixel artist based out of Kyrgyzstan. They clearly had knowledge of game dev before but this was also their first game jam. Despite the massive time zone difference, they were surprisingly one of the most responsive members of the team. 
  • Zig Zag: Was a programmer and part-time musician who also joined up as part of their first game jam. They are based out on the East Coast of the USA and just starting college. 
  • Agent Track the Narrator: Also known as Noland. A musician on the team who I don’t know much about. I know they are on the other side of the globe as me, and due to that time zone difference, I never got a chance to interact with them much. I also think they were on another team at the same time.

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.

Mini Jam 110: Sacrifice officially began on Thursday, July 7th at 9 pm PST. For some reason, I thought it started on Friday and not Thursday. Luckily I found out my mistake only a few minutes after the jam started and was still able to begin on Thursday. Within the next hour, most of us got on discord and were able to brainstorm some more and narrow down exactly what we were making.

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.

Once we got the idea we divided up the workload and began. As normal I took the coding, beginning with player movement and working my way up from there. Coder and Sam got together and made all the pixel art for the game. Early on they both agreed on using the Leobolds Dream color palette (Link Below) which gave the game a cohesive look. They also decided to go for a retro sci-fi aesthetic. In the end, Coder made all the small asset sprites (the player, enemies, projectiles, and various UI Icons) well Sam made the large backgrounds and menus. Both spent the entire jam working on their art and did a really impressive job of it. Noland made a single 43-second music track for the game that ended up being used during the gameplay.(Link Below) Zig Zag made a single music track that ended up going over the main menu and also made the code for the main menu and pause menu. Even despite the time zone differences between just about all of us we each pulled together and made a solid game.  

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.  

This system does have some limitations. You need to make sure you have a consistent way of reading and writing to these scriptable objects. This can be hard to keep consistent as you are rapidly iterating during a game jam. Secondly, the fact that the values in these scriptable objects are consistent across scenes or even between play sessions can create problems as well. For example, if you need some values to reset every time a scene loads. Like the player's health being reset, or the score. And well there were several other smaller tricks I learned, like messing around with UI masks to create a health bar, using scriptable objects like this was my main takeaway.

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.

With all that out of the way, we were luckily able to add all the art and music we wanted into the game in time. I even added some SFX, particles, and general polish to the game. Sadly we ran into a game-breaking bug with the enemy counter in the last hour. Hotfixing it took some time and made us a few minutes late in submitting the game. Luckily we were able to submit it late.

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

Files

Power Down (1.01) Web.zip Play in browser
Jul 26, 2022
Power Down (1.02) Win.zip 32 MB
Jul 26, 2022
Power Down (1.0) Mac.zip 41 MB
Jul 26, 2022

Get Power Down

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.