← Back to GamesHORROR PUZZLE / 2025

The Curse Of
Brookings Hall

A 3D horror puzzle game set in WashU’s Brookings Hall, where players uncover secrets through exploration and solving physical puzzles.

THE GAMEHORROR · PUZZLE · UNITY

About the Game

Set in a lab under Washington University's iconic Brookings Hall. Here, players use text based clues and solve puzzles to demystify the lab's past. As players explore the lab, however, they are kept on edge by the eerily colored camera filters, interactive puzzles and decayed environment.

A dimly lit laboratory room with cold storage drawers and a tiled floor
Abandoned desks and chairs in a dark classroom
A damaged laboratory room with overturned furniture

Design Goals

The goal was to create atmospheric and information feedback loops to keep players engaged. Before building in Unity, The map and interaction flow was first sketched on paper as shown below, planning out each room and clue placements. This visualized how players would move through the space and allowed me to create a invisible guide that leads player towards the ending.

Hand-drawn first-level map with rooms, clues, and arrows showing player progression
Hand-drawn second-level map showing connected rooms and puzzle routes
Overview of the connected laboratory rooms built in 3D

Technical Goals

The enemy was created in Mixamo, which automatically generated a full skeletal to the 3D model. The NavMeshAgent handles navigation between random patrol points set on the map, switching to idle for randomized intervals before walking again. A raycast projects forward from the enemy’s chest; if it hits the player within a set distance, the AI cancels patrol and begins chasing, switching animation states dynamically to sprint.

When the enemy reaches the player, it triggers the jumpscare sequence: swapping to a high priority Cinemachine camera at a preset point, enabling a flashing light, playing audio, and switching the Animator to a jumpscare trigger. After a short delay, the scene transitions to a death screen. Coroutines control idle and chase durations, making behavior timing simple. This system created a believable patrol/chase loop that's easily tunable through inspector fields for speed, distances, and timing.

Handwritten enemy state diagram connecting idle, patrol, chase, jumpscare, and death
Unity Inspector showing enemy AI speeds, distances, timers, and jumpscare references
Enemy model with Mixamo rigging markers on its joints

Challenges

The biggest challenge for this project was communication between team members. I learned the importance of communication and progress checks when working on larger projects for a long duration.

On the technical side, one of my main challenges was learning how to handle lighting in Unity. I experimented with both baked and real time lighting. One can be time consuming to iterate on, while the other is very performance heavy.