The Descent

The Project

The Descent is a rogue-like third-person action-horror game made in Unreal Engine 5, and was developed over four weeks by a group of seven people. The Descent’s base game design was procedurally generated with ChatGPT, and then tuned by the team’s designer.

The player fights two enemies from across a pit room.

In The Descent, the player plays as a journalist seeking the truth about a strange derelict research facility. Upon entering, they are accosted by swarms of strange fleshy creatures and must fight their way to the facility’s heart. Strangely, the floors are always ascending despite the game’s name…

Each of the game’s two levels is made from a chain of ten pre-made tiles randomly connected via their doors. Doors lock behind the player when they enter a room, and then re-open once the rooms are cleared. Death at any point means a hard reset: this is a rogue-like, after all.

If players reach the end of the second level, they can then face off against the final boss: The Descent. If the player manages to defeat The Descent, they can exit the game victorious.


My Role

During development of The Descent, I worked as both lead and systems programmer. The highlight of my work is the game’s generation system, which constructs simple procedural levels using standardized level tiles attached via doorways. As the programming lead, I also managed project integration.

The player faces off against The Descent in the final boss room.

The Descent’s procedural generation system was written with C++ with the details handled via data Blueprints. The source code can be viewed using the GitHub link below.

The system works by dynamically streaming tile levels into an empty game level using per-tile attributes stored in a data file. For each tile, the generator picks a door, checks to see if there is already a tile occupying the space, and then selects another tile if none are occluding. Doors and “room manager” actors are then spawned in to control room behavior during runtime.

Beyond the generation system, I also handled creating assets that fell outside of the scope of our other gameplay engineer, such as level transitions, cross-level player states, and making the final build of the game.