DEV LOG: Assignment Submission: Fire Raiders!
Over the course of the semester, I kept working on expanding the Fire spreading prototype into my final project: Fire Raiders! Inspired by superhero games like Spider-Man and Incredibles and my childhood dream career of becoming a Firefighter, this demo was born! The goal was to make a full action game which focused solely on saving people. I added a twist to the firefighter philosophy: What happens if fire is the only way to save someone?
The Level Design
I designed each level like an apartment/house, greyboxing kitchens, living rooms, and various rooms levels you need to traverse to find civilians. Based on playtest feedback, players struggled to learn the mechanics, due to multiple new ones being introduced together. The way the levels were initially structured introduced:
putting out fires → saving civilians → setting fires + the smoke meter
This confused players because they didn’t realize why a firefighter would be setting fires because they had been taught to put them out in all the prior levels, making them think that was the goal of the game. My intended player goal was: save people, even if you have to break the rules to do it sometimes. So I restructured the levels to be:
movement mechanics → saving civilians → putting out fires + setting fires → smoke meter.
This pacing helped players form rules in their head and quickly break them, while also showing them what to prioritize.
Making a living Comic Book with Shaders
I also doubled down on the comic style by creating cel-shaders with ink-like outline and halftone effects inspired by the Spider-Verse movies, and games like “XIII” and “Jet Set Radio”. To create the comic-style shader I followed a couple tutorials which highlighted Unreal’s lighting system and Lumen specifically. Basically, what they outlined was a method for physically based cell shading using post processing, reacting naturally to changes in lighting, especially with how Lumen handles dynamic lights.
I first wanted to focus on seeing the character through objects since there was so much going on in the game, with a lot of environmental props and particles, so I used a stencil buffer to highlight the player and other objects that are of interest when they are obscured behind objects using the depth pass.
The next step was to apply outlines to the material to emphasize the hand-drawn comic feel, so I used kernels to apply a laplacian post-process effect to the depth buffer of the scene. I tried using a sobel filter at first but because that is direction based, a laplacian filter seemed like a better choice since I wanted to sample the uv in all directions in order to reduce any artifacts or noise that could be formed from the samples, especially since the game has a lot of dynamically moving objects and particles.
After getting the outlines combined with the laplacian filter, I wanted to add a finishing touch to highlight in the way classic comics do, using halftones to give a print-like effect to the overall piece. To achieve this effect, I used a scaled UV grid drawing a circle in each cell, and adjusting the size of that circle based on how much light is hitting the pixel. I found a cool tutorial online which created the circle based on the cyan, magenta, yellow color model with each color being rotated a certain amount of degrees to create black, and that is how prints used to be originally created. After following this tutorial, I ended up with the following result and was ready to add it to the toon shader.
After achieving the halftone look, I inverted it so the dots would decrease with shadows and increase with lights. I added the effect onto the cell-shader color pass then multiplied it by the laplacian filter, so the dots were not affected by the lines when being drawn.
Newest Version
This is the latest build of the game in action! Lots of jumping, saving people, and putting out fires! I even got to show it at NYU Winter Showcase 2024 and had a blast letting people play it and hear their thoughts! I hope to keep expanding it going into the next semester!
PS. I got an A+ from Professor Shawn Pierre