Spooky Boi Advance
Submitted for Scream Jam 2021
October 23, 2021Ranked #8 / 224 in Enjoyment
Short game jams are already hard. 2-3 days is a typical length, which often means you have to make your scope pretty small. What many people don't know is that longer game jams are just as, if not more, difficult. We settled on a spooky, Warioware-inspired game that would feature a secondary mechanic, inspired by Five Nights at Freddy's 4. The summary of the gameplay was that you would be trying to complete 30 minigames, lasting no more than 6 seconds, while trying to survive a monster constantly trying to kill you.
I created the minigame manager, transitions, and UI system, as well as some of the minigames. I made sure that the transitions between games were flush and rendered onto the Spooky Boi console without hiccups, coding the monster mechanic that would creep up to you, separate from the minigames you play. This created an interesting, asymmetric style of gameplay,
Key things I learned
Camera Render Textures
When we decided to make a Warioware-styled game, someone brought up the idea of making it look like it was being played on a handheld console. Coincidentally, I had recently learned a little bit about projecting camera views onto render textures, through an afternoon project I had played with a couple of weeks prior.
This wound up being a trickier problem than I initially expected. We wanted to make the view flush at all times, and able to bob and be moved a little bit, to be used with a separate monster mechanic later, so it required using a few techniques. I created a transition manager to asynchronously load/unload scenes additively, carefully coordinating the transition coroutine so that the current and next camera changed their render target properly, so there wouldn't be any visual hiccups. As well, making sure the scenes were fully loaded by the time the transition hit the halfway point. This was a persistent challenge for a good chunk of the jam, but I think it ended up being a really nice feature that added to a sense of immersion, once I got it working.
Another challenge that this brought was the UI. Creating a prefab to put into every scene has the potential to be a solution, but could easily go wrong if overrides weren't saved. I made a simple script to be placed on each camera in the minigame scenes, which would force the UI to project its canvas on to said camera, which would then make sure the UI stayed synced to the render texture as well. A secondary benefit to this ended up being that we were able to still test our minigames in their own scenes, without needing to play from the main menu.
Unity Audio Design
Audio has been an area of Unity I felt pretty inexperienced with, outside of the most basic functionality. I had used groups a little bit, as my project starter template used separate groups to be able to configure volume for each of them individually, but that was about it - for anything outside code. Alejandro Heinz was our composer and sound designer for this project, who I had many discussions with about how to tackle our main audio-related mechanic we wanted to implement: keeping our Spooky Boi sounds separate from our "IRL" sounds, such as the ambient noises, and the monsters' sounds.
The easy part was making separate mixer groups, but trying to attenuate the volume and adjust the pass filters was going to be very tedious to brute-force through code. What I ended up learning about were snapshots: the perfect solution to this issue. We set up our pass filters on a master group for the spooky boi audio, and I learned about using sends and receive audio effects easily to the child groups all at once. Once we had our configurations set up, it was just a matter of hooking up the snapshot transitions and executing them at the right moments.
Overall, this project taught me a lot about using vanilla audio effects provided by Unity, how to set up groups and snapshots to be able to effectively use them, and a bit more about how to architect code around audio. The end product felt very immersive, and although it was a fairly small detail, I really enjoyed it.