
Hell Girl: Ultimate Revenge is a 2.5D action-roguelike developed in Unity over 6 months alongside 3 other classmates as our course's capstone project. The goal for this project was to create an engaging gameplay-focused roguelike following our unconventional and villainous protagonist, Helena Harlowe, as she battles through hell in a revenge-fueled journey to return to the surface and continue her rampage on those who have wronged her.
Assuming the role of both game designer and programmer, my core responsibilities were to design and implement core gameplay systems and mechanics that capture the fun of our game and the action-roguelike genre. Some of the things I worked on include the procedural map generation, room functionality, player combat, audio implementation, and all the little connections that link everything together.
Procedural generation is at the heart of most roguelike games, creating variety, dynamic gameplay scenarios and fostering a sense of discovery and exploration with each new run.
The procedural map generation is one of the first features I worked on after our project entered the production stage. First, I set up an algorithm to generate a variable number of connected rooms on a 2D grid with the starting room at the centre before assigning each room type, ensuring special rooms such as the item room and boss room aren't adjacent to each other.
Then I set it up so the physical rooms are spawned using room prefabs. This allows us to hand-craft a variety of room layouts for more intentional design and then pull from a pool of layouts when spawning each room for more variety.
When generated, each room has a path at the top, bottom, left and right of the room depending on whether there is an adjacent room in the corresponding direction, allowing the player to travel between rooms by teleporting the player from one room's path trigger to the other room's corresponding entry point.
I also made it so that only the current room is enabled, optimising performance and hiding the rooms in the background for a more immersive experience.
Procedural Map Generation

Audio Implementation
Another element of the project I worked on was implementing the audio created by our audio designer. Audio is incredibly valuable for immersion, game feel and for communicating information to the player, especially information they may have otherwise missed visual indicators for, such as when they take damage, when enemies are spawning or when a room is cleared. For most SFX, I added subtle pitch shifting to make the sound effect more interesting and less repetitive. I also made the sound effect for the health/mana pickups slowly pitch up based on your current health/mana to subtly indicate how full the resource is. An addition I particularly like is the use of the same sound effect for the main menu's 'Play' button and when the player dies, because when the player starts a run after hitting play is narratively when Helena first dies.
Project Overview


Player Combat
I was also responsible for implementing the player combat, including the player movement, animation system, weapon attacks and spellcasting. The game currently contains 2 weapons and 2 spells, with each item designed to have its own strengths and weaknesses, enable unique playstyles and create risk-reward gameplay.
One feature I particularly like is the player's ability to aim their weapon attacks in a small range of motion on either side, shown by the aim indicator on the ground and inspired by a similar feature in Rotwood by Klei Entertainment. This improves the combat and game feel by giving the player a little more control over their attacks than solely left and right, making attacking feel more dynamic and maneuverable in the 2.5D space.
