Dreadhurst Manor - Project Breakdown

This was my first project, I had spent a couple of months with Unreal Engine 5 and was overconfident. I has followed some tutorials that would encompass the bones of the game. Based on one of my favourite genres, survival horror. I set out to make the best prototype I could. 

As a solo project, I handled everything myself and the duration took around 2 months. This is a retrospective 2 years after I made this so forgive some hazy details!

First Attempt At Level Design!

-----------------------------------------------------------------------------------

As this was my first project I didn't utilise grey boxes correctly. I did a primitive form of grey boxes using basic shapes, but this was before I understood what a portfolio was, so I didn't document things!

For simplicity, this is a single level, a 2 floor manor with explorable areas around the perimeter and an exit gate, let's take a look at the level flow, despite me knowing nothing about level design or referencing at the time. Looking back on the project, I had the idea of making the level extremely dark, forcing the use of the flashlight. It makes the images hard to see, I'll show some images in the Lit version and some in the unlit version.


The player begins at the blue circle. A courtyard with a locked gate behind, a locked gat to the right has a slight visible gap that reveals a monster, left takes the player around the side of the building and straight ahead takes the player to the front door.

Having the player spawn in front of a large locked gate didn't really make sense, the player was supposed to be the child of a staff member who got locked inside, but the context wasn't given, and a very funny story as to why the main character is a child will be at the end!

While the red X's denote locked paths the green circle in the back signals the exit gate. The yellow path shows the player path, they can move around 2 floors of the mansion and the exterior path to the left. 


The foyer leads to the grand staircase with a swinging chandelier, there are 2 staircases to allow the player to loop around chasing enemies. 


As you can see the corridors exhibit how dark the game is without the flashlight. The corridors are indirectly lit by flashes of lighting. I had no concept of lighting at this time, thinking I didn't need lights in the scene as the flashlight and lightning carried the lighting. Thankfully it, worked, despite being harder to showcase!


The vast majority of the rooms in the mansion were single entranced rooms, however some were open, connecting to others. The dining room, connects to the kitchen, allowing the player to access both corridors to avoid enemies. 


The East and West wings both have staircases leading to the upper floor, the player has the freedom to explore, as do the enemies. This creates a simple loop area, but with no idea where enemies can be, a sense of dread is added.


Switching to an unlit view now, the second floor is home to a small gallery area and a reading nook. Combined with the staircase, it gives players plenty options to evade enemies. 


To make things slightly easier to see in the exterior scenes, the time of day is changed from pitch black to overcast daytime. Going left from the courtyard takes the player to the staff quarters, this leads onto a rushed staff entryway, it was meant to be an explorable garage area, but a simple shed was added.


The staff entryway leads to a construction site, to signify the expansion of the mansion as a small piece of world building, this leads onto a lake section that allows the player to walk around the circumference. 


This leads to the final piece of the level, the flower garden. Serving as a maze, it is the final place the player can use to avoid enemies.

The Game Loop

----------------------------------------------------------------------------------

The objective of the game is to find keys around the level and if the player has them all, they can escape out of the exit gate. They must avoid randomly roaming enemies that kill the player if they touch them. The game loop is tied together through a narrative told via a notes system.

Breaking down how the game was made, we begin with the Player Character:


Added to Begin Play is the in-built logic of getting the player input system, then adding a Fade widget for when the game starts.


A simple flashlight is added to the player, by adding a spot light to the character and toggling its visibility.


A primitive sprint system was added, a harsh cooldown was added to ensure enemies were threatening.


The player death system was simple to implement as a single hit from the enemy kills the player.


Looking back on the interaction system and yeah, it's quite bad! However I utilised the excellent sequence node. While the blueprints are needlessly complex,  the result worked great.

Next we look at the Enemy:


An AI controller and blackboard were created to define and the behaviour tree created the enemy loop logic. The enemy randomly roams the map in its search phase and stops and waits for a short while. If it sees the player it chases them and attacks them when it is close.


A pawn sensing component was added to the enemy, with its dominant sense set to sight. The logic for seeing the player is added on a loop and if no longer sees the player, the chase music fades away.


Similarly, the chase logic fades the chase music in if it does see the player and increases the enemy movement speed. Due to loud ambient chase music and background music the enemy moves very slowly, this was done to ensure the enemies didn't kill the player too quickly.


The attack logic was quite simple, if the enemy is attacking the player, the animation plays and a sphere trace checks for the player and applies the damage if it connects. 

Let's move onto a quick look at the UI:


A simple main menu (The pause menu was identical), not much to say here. I wasn't too sure on how to handle widget switches back then so I added the controls to both the main menu and the pause menu and note the effort to add controller support (Though it didn't work in the menus)!


The options menu is interesting, as it barely worked! The resolution settings worked fine, but the other settings didn't. An inefficient system and scope creep. 

We end the UI section with the final UI element, leading into the Notes System:


A paper texture was added and the sample text was bound to a variable.


A notes BP with the variable is placed in the world, with editable instances and exposed on spawn, this allows text to to be added per note. 

A quick look at a couple of other Blueprints:


The first screengrab shows the gate system. It checks to see if the player has enough keys and opens the main menu if they do (win condition) and plays a sound if they don't.


One of the biggest headaches was making a swinging chandelier, I made a simple timeline animation, it just about worked.


An interesting mechanic was a hiding spot, this works by changing the player transform when they interact with it and places them outside the spot when they interact again. It is a good mechanic but not needed given how easy it was to escape the enemies.


The final mechanic was the door system, it is a brute force method and one I remember struggling with, 

Final Thoughts
----------------------------------------------------------------------------------
Despite not having any level design experience, I was quite happy with how the level flowed. The lighting was poor and the number of rooms didn't make sense. While I ensured there was logic to how areas connect, it was slightly too compact. I used the Ultra Dynamic Sky plugin really well, the lighting seeping through the windows was extremely effective as well as the rain material I added to the windows. While I was overly reliant on fog, conceptually it was a good idea.

The game loop was simple and hard to mess up, as was the enemy logic. I struggled with systems like the doors and the chandelier but managed to get something together. There are a few extra systems, like audio elements playing when the players nears them that add to the experience.

I am very proud of the narrative and how I set up the notes system. Some notes give hints to where keys are founded and most of the give context to the narrative itself. I smartly created a cast of character and lined the notes up to make logical sense of relationships and an evening turned sour. I contextualised everything with a strong lore that back ended everything. 

Why is the character a child? Originally they weren't, despite this being my first project I had the opportunity to showcase this project at a public games festival. An unmissable opportunity, it felt amazing to hear positive feedback, but equally important to see problems transpire in real time. Seeing people break the game was great and I learned an important lesson in scaling, the character was far too small! So yeah, the character is now a child!

This is a project I would love to redo with the knowledge I have now. 









Comments

Popular posts from this blog

Creating a simple dialogue system in Unreal Engine 5

Remaking Mario in Unreal Engine 5 (Part 1)

Stylised Landscape - Project Breakdown