Soulsworn Manor

Soulsworn Manor

Soulsworn Manor is a 3D terror runner made in Unreal Engine 5. As a group of 3 developers, we cooperated in making this school project a success. The game is set in a dark manor, where the player needs to collect a total of 5 souls and find an exit to win. Meanwhile a monster, the so called questing beast, is patrolling the area and hunts the player down. This game was created between March and June 2025 in the course 3D Game Project at the Polytechnic Institute of Leiria.

Game Trailer for Soulsworn Manor, showcasing gameplay and atmosphere.

Interaction

A key aspect of this game is its interaction system. The player can interact with doors and collectables.

Interaction

GIF showcasing the door interaction.

To ensure scalability, a interface was used to implement the interaction system. A interactionbox is attached to the player, whenever an object that implements the interface enters the box, it will be stored in an actor array. On leaving, it is removed again. When the player presses the interact button, the interface interact function is called on all actors within the array.

AI (State Tree)

The questing beast's behaviour is programmed using Unreal Engine's State Tree system. It switches between three states: Patrol, Hunt and Rage.

AI (State Tree)

GIF showing how the AI hunts down the player.

The AI can open and close doors when patrolling. While in hunt or rage mode, it will break them instead. This however stalls it for a short moment. Once the player collects all 5 souls, the AI automatically enters rage mode, and is not only faster, but also knows his position at all times. The AI can perceive the player by sight and sound, noise is only triggered on movement, while the player is visible as long as he is within the AIs line of sight and not hidden behind an obstacle. When the AI looses sight of the players, it patrols the area, he was last seen in for a moment after losing sight of him. Afterwards it then returns back to its patrol routine.

Pathfinding / Navigation

The AI uses Unreal Engine's navigation system to find paths through the level to its respective patrol points and the players position. It allows the AI to dynamically adapt its path based on changes in the environment. An example of this are the doors, they are a bit special: when they are closed, they do not influence the Navigation, once open however, they do. This prevents the AI from being stuck by walking against an open door that did not get registered as an hindrance to its path - for this to work, the NavMesh had to be set to dynamic.

For the AI perception, Unreal Engine's perception component has been used. It worked out of the box and registered the player either by sight or by sound as target, and triggered changes in the State Tree behaviour - starting and ending the Hunt state and its behaviour for example.

Random Item Distribution

Multiple Spawn locations for the collectable souls are pre-defined in the level. A Spawn controller assigns the actual collectables randomly among them.

Random Item Distribution

GIF demonstration of the random item distribution mechanic, during the pre-production phase.

Escape Door and Level Transition

There are multiple escape doors placed in the level. One of them will be unlocked and activated, once the player has collected all souls. On entering it, the player wins and is given the option to return to the main menu.

Escape Door and Level Transition

GIF showing the active escape door and the level transition upon entering it.