BRENT VOS
The Forsaken Soul - BHP
The Forsaken Soul is a first-person horror game in which you explore an abandoned prison, used by BHP in Leeuwarden to attract young-adults to their museum.
Total Time: 5 months
Development Time: 1.5 months
Team: Bertho Molenkamp, Thijs Doodkorte, Sara van Elferen, Annefleur Reynhout & Brent Vos
The Forsaken Soul was made to attract young adults to visit Blokhuispoort, a museum in Leeuwarden that showcases the old prison. The level-design is heavily inspired by the Blokhuispoort, and the story implemented into the game is partially based on one of its past prisoners.
Contribution
During this project I was in charge of the programming and lighting. For this project I made various features, like a cutscene- interaction & inventory system. However I was the proudest of a custom event-system that I had built. As this event-system allowed me to add and edit a lot behaviours inside of the game very easily. More about this can be read in the "Technical (with context)" section down below.
Asides from this, I was greatly involved in the design phases of the project. This includes storytelling, visiting the museum for inspiration & testing with the target audience.
Technical

On the left is an example of a child-class I made deriving from my own event-system. This class is a "Cutscene" event that will play a cutscene whenever the player moves inside of a trigger.
​
Above the red line in the image are the global parameters of an event. The event-system has multiple functionalities, such as handling triggers (like moving inside of an object, completing an event or interacting with an object). The system supports having to trigger multiple triggers, triggering multiple times, and the choice between having to trigger all triggers, or only one of the possible ones.
​
Underneath the red line are the specific parameters for the child-class. This was the cutscene at the end of the game, so it played a cutscene, and disabled the player's input.

On the left is another example of the event-system. The event is simply turning an object active/inactive. However as seen on the image, it requires the player to interact with one of the two pickups.
By setting the boolean at the top "OnlyCompleteOneTrigger", the player only has to interact with one of the pickups for the event to occur.

On the left is a small snippet of the event-system, this function is used to check whether the event has cleared all of its conditions.
​
I did my best to divide all the behaviours of the code in different functions like this, for the sake of readability and maintainability.

Lastly, on the left is an image of the cutscene-system I made inside of the Unity inspector. The cutscene-system mostly consists of events playing one after the other. With the exception being behaviours that affected the cutscene-camera directly, such as the ROTATE element (marked using a blue square)
​
The system also supports playing events independent of the element order, this can be seen in the yellow-marked element. This element its "Timing" parameter has the "Unique Moment" value, and its "Time in Sequence" is marked as 1. This means that regardless of other events, this will play 1 second into the cutscene.
​
This system was the catalyst for my event-system, as I initially had many different type of "Actions" and realised this wasn't working. By making an event-system that were playable within a sequence like this, I was able to create an incredibly easy environment for myself to make cutscenes.
​
I do however think the system looks chaotic. If I were to work on this again, I would either try to make it using ScriptableObjects, or attempt on making a custom inspector.