Part of Me
Technologies Used:
GitHub Page:
Team project that consists of 8 people done in 4 weeks.
​
My contribution is including but not limited to:
-
Player Movement including Leaning and Vaulting
-
Player Interactions with interactable objects works with code and blueprints so designers can implement their own solutions as well
-
Sound component, examples walking and breathing sounds of the player.
-
Light subsystem, acts as a container for all the light in the scene
-
Player Visibility Component, where the visibility scales how bright the player is, this is done to have a similar stealth mechanic that has been in the Thief : The Dark Project game.
-
I have also helped with some blueprint implementations.
Unfortunately the repository is private, and I am not the owner
-
C++
-
Unreal Engine
-
Jira
-
Perforce
-
Visual Studio
-
GitHub
Details:
Part of Me is a stealth horror game, the inspirations for this game are Payday, Hello Neighbor, Phasmophobia and Outlast. The goal of the player is to go though the house and collect as many artworks as possible. However the more you collect art, more morbid they start to get.
My main role in this project was to be a Systems Programmer but I also helped with some gameplayer related aspects as well.
This project was developed in Unreal by team of 8 people and it has been done in 4 weeks and was part of the Futuregames education. The present roles were designers and programmers, for some of the art assets in this project, we have created an art asset list and school provided us with them. My responsibilities were mostly programming but I have also helped in game direction.
As a programmer, I most likely worked in almost every aspect of the game as long as it was related to source code or blueprints, but some of my highlight are following
-
Player visibility component
-
Player movement
Player Visibility Component
Since we were making a sneaking game, it felt natural to have the player's detection gets effected by how lit up they are. For this reason I have took inspiration from the game, Thief: Dark Project. My first implementation of the light detection is I have placed a camera on top of the player and using a render target, I tried to capture an image after certain number of frames. When I get the image, I have calculated the Luminance using the standard formula. This has worked well in an empty project but when I moved the code to the main project, the data that has been gathered from render target was too large and in order for performance to not take a hit, I had to find different approach.
My other solution is to register all the light in a light subsystem and this component gets the closest lights in a list, and calculates a total brightness score based on the distance of the lights. However light behave differently in certain environments, like water, and games is not and exception to this. Therefore I have used a different formula than what you would have used normally.
This list of relevant lights gets updated as the game goes on. For performance reasons, every 3 frames this component checks if the relevant lights are still close enough, and every 10 frames this component checks if there are more lights needed to add to the list
Player Movement
One of my responsibilities as a programmer was to create the leaning and vaulting over objects movement of the player.
For leaning I have two invisible cubes near the head of the player so that the designers can place them in their desired position as well. Then the code checks if there is an obstruction or not. if so starts moving the camera to the lean position and gives it a slight tilt. When on key release the camera returns back to the original position
Another movement functionality is vaulting. Small obstacles like tables can be vaulted. To solve this problem, using LineTrace, I have checked if there is an obstacle in front of the player, if there is it continues, five times to check if they can find the ground afterwards. When it does, it moves the player to the ground by disabling players collider during the movement to block it from messing up with the movement and when the movement is finished, player collider is enabled again.
What is my take on the project
During the project we have good momentum from the start, which continued for the entirety of the project. We decided on what the game should be as a group on day one and started on the project at the same day as well. And the workflow was really efficient, given the short time frame that we had I believe we created a really good game. Even so during the jury day, jury got scared while playing the game. We have run into some issues like the education license for Perforce from our school expired in the second week and we moved the entire project to GitHub on the same day and kept continuing the next day.
I feel like with good leadership and compatible teammates, really good projects can be done even in a short period of time.