Role: Gameplay Engineer
Time Spent: 1 month
Engine: Unreal Engine 4
Language: C++
Platforms: PC
Developer: Aerosabre Team
Team Size: 7
Where to Play: build available upon request
Movement Mechanics:
I handled all the movement mechanics with the exception of the speed boost and slide mechanics (the latter of which I overhauled and reworked). I did this all in C++. Using nothing but Unreal Engine 4's Third Person Character template as a starting point, I added wall running, grappling, and flight (and I almost entirely reworked the sliding mechanic). The wall running was implemented in a "plug-and-play" fashion, by which I mean the wall running is not dependent on the environment pieces in any way; the player could simply be dropped into a new environment and could wall run without any tagged walls or other additional work being needed. This environment independence is true of all the mechanics I implemented.
The wall running keeps the player along the wall and turns the camera for the player. I added detection for when the player should be wall running, and I made it so the player can wall jump while wall running or drop to the ground if they choose. Wall jumping is influenced by the direction the player is facing (i.e., we gauge where we think the player is trying to jump) and their momentum.
Grappling has two different "modes." There's one where the grappling hook remains at a fixed distance while a button is held. This allows the player to swing somewhat realistically, like a pendulum, kind of like the way Spider-Man swings. The other mode is used when the player releases the button, which causes the grapple to retract and propel the player, similar to grappling hooks in Titan-Fall. If the player hits a surface or propels themselves such that they're moving away from the grappled point, the grapple will disengage. The former is to allow players to grapple onto a surface and have that transition into a wall run. The latter is to allow players to launch themselves with the grapple without the grapple being pulled taut and catching them.
The flight rotates the player to face the direction that their velocity is heading, and their velocity is redirected towards the direction that the camera is facing. The player is still somewhat affected by gravity, meaning a dive can help you gain speed, and you will lose speed if you are attempting to fly upwards. I added the "combat" element of the game as well, which is that if you collide with an enemy with your wings, they will take damage and be killed.
My sliding rework made slide with little friction that would cause you to slowly decelerate, and you would decelerate at a faster rate if you attempted to turn while sliding. Part of my rework involved factoring in gravity, so it would be possible to accelerate downhill and potentially slide forever (well, until you run out of hill). And the opposite was true as well, factoring in gravity made you decelerate more quickly when attempting to slide uphill.
I added a system for making the player acceleration and max speed increase as movement abilities are used. This was tied to when the player could begin flying, and it would build up a flight meter. I handled the flight meter as well, which would deplete as the player would fly.
Other Contributions:
I did all of the UI implementation, including the combo system. I also added the player health and a system by which you regain health by killing enemies. I also did the bulk of the work on the simple enemies, making them aim at you and get shattered when killed (the challenge here was trying to make an animated character seem to break with a destructible mesh). I did some work on the camera (like the tilt) and the animation blueprints (though I didn't make the animations).
I was initially the only engineer on this project. Eventually another engineer that joined who worked only on enemy AI. A producer on the team added the speed boost mechanic and the initial implementation for the sliding mechanic. Other than those, everything that you see in this game was engineered by me (of course excluding Epic's initial work on the Third Person Character and the engine itself).