Role: Programming & Design
Mondi is a single player 3D platforming game where you play as a slime trying to escape a post apocalyptic research facility. But escaping is not that easy. You must navigate through a dangerous environment collecting seeds while seeking your way to the surface.
During the project I acted as a Gameplay Programmer. I was responsible for the main character’s wall sticking, and collectibles.
The Wall Sticking
When the player tries to stick, a sphere check will see if there are any stickable object close to mondi. If there is, I then do a Linetrace towards that object. The information from that linetrace is then used to set Mondi on the correct position on the wall.
TickTryStickToWall macro in the Character Blueprint
The stamina system was implemented to give the player freedom of movement while still restricting them from going to unintended places. While sticking on walls the player has 8 jumps before they have to land to regain their wall jumps. The restriction allows level designers to make jumping puzzles or challenges which are based on the number of jumps.
To show the number of jumps I wrote a in-game UI blueprint which stays on top of the character and always faces the camera. With the meter close to the character the player never has to look away from the action which is very important when making precise jumps.
We wanted the wall stick mechanic to be simple enough that a new player could pick it up and have fun, but also have enough depth that an experienced player would find it interesting and not restricting. The solution I came up with is having continuous sticking input.
It means while you hold down the right trigger Mondi will enter a sticking state, indicated by his glow turning red, where he will stick to the first surface possible. Holding down the trigger will keep Mondi stuck. Jumping away from the wall while still holding the trigger will give the player a short grace period before Mondi can stick.
This type of input simplifies the process. Because you can now hold the trigger, point the control stick where you want to go and then press the Jump button to get there. But if you are an experienced player then you can time your jumps with better precision and cover more ground than a normal player.