top of page

1st person stealth set in 18th century Edinburgh

General information

My contributions

Player journal

This is a UI  blueprint that fulfills several purposes:
- Checks which collectables the player has found and checks how many collectables have been found
- Pulls out images and small bits of narrative text out of the collectable's data asset
- Displays greyed out collectables that haven't been found yet
- Adds new display lines for new collectables
- Connects to the player inventory and quest log

ezgif.com-gif-maker (12).gif

Approach

Purpose
To encourage the players to explore the world we use setting-appropriate collectables with narrative text attached to them. They are spread around the game world, encouraging player exploration and we needed a place to display them.

The system is built around 2 blueprints: Journal widget and journal entry
Journal entries pull images and narrative text from the data asset of the found collectables and translate it to the journal widget. Here it also handles some minor functionality, like counting found items for the achievements.

Journal entry 1.png
Player journal

Project information

Genre:

Development time: 

Team size: 

Platform:

Primary Role:

Third person stealth

September 2021 - June 2022

25

PC, Consoles
Technical design

Description

Suddenly orphaned and cast away onto the streets, young Katherine must quickly learn how to hide and steal to survive on the streets of Edinburgh.

Full blueprint (click "Fullscreen" for a better view)

Another bit of experience I've gained on this blueprint was working with external plugins. We used one for setting up button navigation in our UI. It  turned out to be a good tool but I certainly had to struggle a bit with it's quirks and occasional bugs before I could use it confidently.

Building navigation.png

The journal widget handles logic like:

Creating journal entries for found collectibles
This task required me to set up an updated system that would generate journal entries for every item the player has, complete with it's texture and information.
The way, I approached it was to create sub-widgets that integrated with the rest of the journal system and to make sure that the necessary item data was saved in data objects that I can easily pull from, like game instance. 
(Though in retrospect "Game Instance" quickly became bloated with data because I wasn't the only person saving things in there, so nowadays I'd do it differently)

Creating the journal entries.png
OpenLock Component

Level Design Tools

OpenLock Component.gif

Key/Lever opening Component
Early in the project, I started working on tools for level designers. For example: this component was made to set up a quick and easy way for the level designers to create gameplay challenges with doors by connecting them with "levers"(any activatable object) and adding "key"(Item or object that prevents the door opening until neutralized) functionality.

instigator1.png

Approach
The component first checks which objects belong to the array of connected doors and activates the "Open/Lock" function.

The function eventually activates an appropriate custom event in the gate blueprint that changes the world rotation of the gate mesh.

DoorOpener.png

As the development went on, I kept adding small bits of functionality that were requested by the team. Like this one that spawns a sound detectable by NPC's in a certain radius if a "Door" object is interacted with

Instigator.png

Full blueprints(please click fullscreen for a better view)

Sling interaction component
Since the sling is of the main ways for the player to interact with the world, I've decided to create a blueprint that would make certain objects react naturally to being hit with a sling.

LeSigns2.gif

It works by activating physics behaviour on the sign when the collision area around it is overlapped with a player's projectile.

Col_Hittable signs.png
ezgif.com-gif-maker (9).gif

Physics behaviour is deactivated after a period of waiting, during which, the blueprint checks if it has been hit again.

Winding down timer.png

After physics are deactivated, a small "winding down" animation is played on a timeline to mask the deactivation.
Additionally, the animation is quickly editable through the "speed of timeline" variable for convenience of environment artists

Hittable sign.png
ezgif.com-gif-maker (11).gif
Hittable signs
bottom of page