
What is Curse Breakers?
Cursebreakers is a first-person, online multiplayer, social horror game where you and your friends are tasked with breaking the curse in a manor before it seeps out into the rest of the world. Navigate through the twisting halls, collect items, and overcome challenges to dispel the curse that has possessed one of your friends. Can you prevent the end of the world?
The game was showcased at Imagine RIT 2026 and was a finalist for Technical Excellence at RPI Gamefest 2026.
Core Gameplay Features
-
Asymmetrical online multiplayer game made in Unity, utilizing Steamworks.
-
3D PCG system, using Wave Function Collapse along with Weighted Graph navigation in order to create a fully semantic multi-floor level.
-
First-person gameplay system, including player inventory, environment interaction, and combat.
-
Random Haunt and Objective are chosen each run from multiple options based on the player's gameplay.
-
3 Haunt monsters, offering unique gameplay with their own abilities and traversal type.


House PCG
For Curse Breakers, I designed and developed a multi-floor procedural house generation system built in Unity that creates unique haunted mansions each playthrough while preserving gameplay quality.
Inspired by Wave Function Collapse techniques, the system assembles rooms using modular tiles, semantic placement rules, and connectivity logic to ensure every layout feels handcrafted rather than random.
The generator supports multiple floors, vertical traversal, unique gameplay spaces, and controlled room distribution, allowing key locations such as entrances, altars, and objective rooms to appear in meaningful places.



I also created a post-generation validation and repair system that analyzes the house after creation and intelligently fixes unreachable rooms or broken paths, ensuring every level is fully playable. This project combined technical design, systems thinking, and level design philosophy—balancing replayability, horror pacing, and architectural believability to create spaces that feel both unpredictable and intentionally designed.
Alongside the generation systems, I was responsible for creating many of the house’s handcrafted room modules and their gameplay identities. Rather than designing rooms as simple visual spaces, I treated each one as a self-contained encounter meant to surprise players and reinforce the haunted unpredictability of Curse Breakers. Examples include the Evil Tree Room, where a cursed tree tracks and attacks players once it spots them; the Casino Room, a risk-versus-reward tribute to The Binding of Isaac built around chance and temptation; and the Floor Drop Room, where unstable flooring collapses beneath the player, sending them crashing to the level below. My goal was to ensure every special room introduced a memorable mechanic, environmental story, or moment of tension, turning exploration into a constant mix of discovery, danger, and player-driven stories.


Modular Gameplay Framework
I designed and implemented a modular, Inspector-driven gameplay framework connecting the game’s pickups, environmental interactions, shared variables, and haunt objectives.
Instead of requiring a unique script for every item, designers can create pickups by combining reusable use types, targeting rules, and gameplay outcomes. Items can be configured as single-use, multi-use, charge-based, or placeable in space. They can affect the player holding them, nearby players, filtered player groups, or the entire match.
Reusable pickup outcomes include changing health, stunning players, spawning objects, activating environmental elements, applying visual effects, playing sounds and animations, modifying player statistics, and updating shared haunt variables. These outcomes can occur when an item is used, collected, dropped, or repeatedly while it remains active.

The same framework supports placeable multiplayer objects such as traps. Players receive a visual placement preview that changes appearance depending on whether the selected location is valid. Once placed, the preview is converted into a registered world object that can detect collisions, filter valid targets, and trigger its configured effects.
I also built the environmental interaction system around reusable interaction profiles. A single object can support several different interactions based on what the player is holding and the current state of the game. Each profile can define its required item, press-or-hold duration, prompt text, interaction decay, usability, one-time behavior, and ordered list of outcomes.This allows designers to create multi-stage interactions without writing additional object-specific code.
For example, a cauldron can initially accept an ingredient, update a shared variable, disable the ingredient profile, and then enable a second profile that allows the player to stir it with a spoon. Interaction outcomes can also contain conditions based on shared integer, Boolean, or string variables. This allows environmental objects to react to quest progress, previously completed actions, or values stored on the player’s held item. Interactables can also update their own settings during play, allowing them to function as configurable state machines assembled directly through the Unity Inspector

What is Curse Breakers?
Cursebreakers is a first-person, online multiplayer, social horror game where you and your friends are tasked with breaking the curse in a manor before it seeps out into the rest of the world. Navigate through the twisting halls, collect items, and overcome challenges to dispel the curse that has possessed one of your friends. Can you prevent the end of the world?
The game was showcased at Imagine RIT 2026 and was a finalist for Technical Excellence at RPI Gamefest 2026.
Core Gameplay Features
-
Asymmetrical online multiplayer game made in Unity, utilizing Steamworks.
-
3D PCG system, using Wave Function Collapse along with Weighted Graph navigation in order to create a fully semantic multi-floor level.
-
First-person gameplay system, including player inventory, environment interaction, and combat.
-
Random Haunt and Objective are chosen each run from multiple options based on the player's gameplay.
-
3 Haunt monsters, offering unique gameplay with their own abilities and traversal type.


House PCG
For Curse Breakers, I designed and developed a multi-floor procedural house generation system built in Unity that creates unique haunted mansions each playthrough while preserving gameplay quality.
Inspired by Wave Function Collapse techniques, the system assembles rooms using modular tiles, semantic placement rules, and connectivity logic to ensure every layout feels handcrafted rather than random.
The generator supports multiple floors, vertical traversal, unique gameplay spaces, and controlled room distribution, allowing key locations such as entrances, altars, and objective rooms to appear in meaningful places.



I also created a post-generation validation and repair system that analyzes the house after creation and intelligently fixes unreachable rooms or broken paths, ensuring every level is fully playable. This project combined technical design, systems thinking, and level design philosophy—balancing replayability, horror pacing, and architectural believability to create spaces that feel both unpredictable and intentionally designed.
Alongside the generation systems, I was responsible for creating many of the house’s handcrafted room modules and their gameplay identities. Rather than designing rooms as simple visual spaces, I treated each one as a self-contained encounter meant to surprise players and reinforce the haunted unpredictability of Curse Breakers. Examples include the Evil Tree Room, where a cursed tree tracks and attacks players once it spots them; the Casino Room, a risk-versus-reward tribute to The Binding of Isaac built around chance and temptation; and the Floor Drop Room, where unstable flooring collapses beneath the player, sending them crashing to the level below. My goal was to ensure every special room introduced a memorable mechanic, environmental story, or moment of tension, turning exploration into a constant mix of discovery, danger, and player-driven stories.


Modular Gameplay Framework
I designed and implemented a modular, Inspector-driven gameplay framework connecting the game’s pickups, environmental interactions, shared variables, and haunt objectives.
Instead of requiring a unique script for every item, designers can create pickups by combining reusable use types, targeting rules, and gameplay outcomes. Items can be configured as single-use, multi-use, charge-based, or placeable in space. They can affect the player holding them, nearby players, filtered player groups, or the entire match.
Reusable pickup outcomes include changing health, stunning players, spawning objects, activating environmental elements, applying visual effects, playing sounds and animations, modifying player statistics, and updating shared haunt variables. These outcomes can occur when an item is used, collected, dropped, or repeatedly while it remains active.

The same framework supports placeable multiplayer objects such as traps. Players receive a visual placement preview that changes appearance depending on whether the selected location is valid. Once placed, the preview is converted into a registered world object that can detect collisions, filter valid targets, and trigger its configured effects.
I also built the environmental interaction system around reusable interaction profiles. A single object can support several different interactions based on what the player is holding and the current state of the game. Each profile can define its required item, press-or-hold duration, prompt text, interaction decay, usability, one-time behavior, and ordered list of outcomes.This allows designers to create multi-stage interactions without writing additional object-specific code.
For example, a cauldron can initially accept an ingredient, update a shared variable, disable the ingredient profile, and then enable a second profile that allows the player to stir it with a spoon. Interaction outcomes can also contain conditions based on shared integer, Boolean, or string variables. This allows environmental objects to react to quest progress, previously completed actions, or values stored on the player’s held item. Interactables can also update their own settings during play, allowing them to function as configurable state machines assembled directly through the Unity Inspector
