top of page
Samat Imanalin
Technical game designer
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
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.
Player journal
Project information
Genre:
Development time:
Team size:
Platform:
Primary Role:
Third person stealth
September 2021 - June 2022
25
PC, Consoles
Technical design
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.
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)
OpenLock Component
Level Design Tools
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.
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.
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
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.
It works by activating physics behaviour on the sign when the collision area around it is overlapped with a player's projectile.
Physics behaviour is deactivated after a period of waiting, during which, the blueprint checks if it has been hit again.
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 signs
bottom of page