Role: Technical Systems Designer
Paid Internship - Developed multiple core gameplay systems for Faycrest Studios on their racing game Dead Pedal.
During this internship I created entire systems from concept to finish, including the development of SFX and VFX. Additionally, I regularly wrote up documentation outlining the programming choices of each system, and instructions on how to customize them.
Primary Responsibilities
● Power-Up System: Designed and implemented a modular power-up system, including unique abilities, SFX, and VFX for each power-up.
● Cinematic Camera System: Built a modular camera system with GTA-style tracking and configurable spectator views.
● Flip Tricks: Implemented a vehicle flip trick system inspired by 'Tony Hawk: Pro Skater', giving players the ability to perform flips and rolls with their vehicle while tracking and awarding points.
● Cel Shader & Post Processing: Crafted a flexible cel shader to enhance the project's cartoony/comic style theme.
Documentation
During my time at Faycrest I kept extensive documentation on how and why the systems I developed were created the way they were. Below you will find buttons that will find 3 buttons that will lead to these very documents.
Progress Updates
“Flip Tricks”
07/08/25
This system initially started off while I was looking for a way to make a car flip after it gets hit by an explosion. But very soon I realized how fun it was to intentionally do flips off of jumps!
The programmer leads also saw it’s potential and encouraged me to keep running with it, so I cleaned it up and developed a ‘Tony Hawk: Pro Skater’ inspired point and UI system as well!
“Cinematic Camera System”
07/01/25
“GTA” inspired cinematic camera system that allows a player so swap to different camera angles on the car, as well as snap the camera to other racers. Further created a spline based system that’s responsible for moving the camera to a point nearest to their predicted location.
“Power Up Pick Up Functionality”
06/26/25
Added functionality for each power up type to be picked up and stored by the player. As well as integrated the new power up system into the previously existing UI.
“Sandworm”
06/24/25
This was created to test the ease of adding additional actors for the ‘Environmental Altering’ power up. It’s design and functionality is heavily inspired by the ‘Earth Leviathan’ from Lethal Company.
“Giant Crocodile”
06/22/25
(My personal favorite)
I was originally tasked with creating a system for their ‘Environmental Altering’ power up, which was to essentially be a one time use track trigger for a nearby event. However, I wanted to take it further and develop something a lot more unique and functional to demonstrate it’s capabilities.
“Paintbomb”
06/08/25 - 06/14/25
The Paintbomb power up initially started as a stationary device that would be planted by the player which would then spray slippery paint that would disrupt the handling of overlapping cars.
While this functioned well, I was challenged to make it a bit more mobile, to have it have it arch and bounce along the track and leave trails of paint in it’s wake. So after a bit of creativity with some physics and the projectile movement component, I managed to create this version you see here.
Furthermore, this particular power up contains a good deal more customizability in terms of modifying the paint mixes, arc length, bounces, and more!
“EMP”
06/16/25
The task with this power up was to create an EMP that would disable rival racers from being able to use any power ups. I decided to take it a bit further and make it capable of disabling a variety of power ups that were already active prior to the EMP’s detonation.
“Smokescreen”
06/05/25
This power up was initially concepted to me as a sort of smoke burst akin to a burn out. However with considering the usefulness of such a design would be to a player, it prompted me to pitch this more refined version that acted more as a smoke grenade that is held and then released by the player.
This power up was to also be accompanied by screen masking effect (akin to the squid in ‘Mario Kart’), and considering there’s no easy way for an actor to tell if it’s overlapping a particle effect or not, this required me to get creative.
My first idea was to have a sort of ‘Drag Chute’ type of collision sphere that would drag behind the smoke grenade and always be in the densest part of of the smoke. However, this posed a variety of issues, the biggest of which involved how the collision would always follow the shortest path possible. So if the player was taking a turn while activating the smoke, that would mean the collision would drag across the track away from the arcing smoke trail.
My second attempt was to make a sort of “Leap Frogging” set of collision spheres that would start by periodically detaching themselves from the smoke grenade and resting at that location for a short period of time. This would continue until each collision was placed, next the oldest collision placed would be moved to the current location of the smoke grenade and stay at that location for a period of time. This worked brilliantly, not only did it solve the issue of the collision moving outside an area the smoke was in, but it allowed for much more complex paths of smoke to maintain collision, such as going through a loop for example.
“Orbital Laser”
06/03/25
The ‘Orbital Laser’ power up was set to be similar to the Blue Shell power up in ‘Mario Kart’. It starts with a slow build up before firing and disabling the targeted players vehicle. This buildup would give the player either find/use a power up to counter the laser, or to gain enough speed to out maneuver the laser when it fires.
“Homing Missile”
05/31/25
The homing missile was a relatively simple power up which utilized the ‘Projectile Movement’ component to home in on a target, and then a radial force burst being applied at the impact site.
However, a bit later on I was challenged with making a ‘pooling’ system for explosions, which would allow for a reduction in the cost of creating and destroying actors during runtime.
This led to me developing an explosion system which stored a set amount of explosions at the games start, as well as a single shared ‘Radial Force Component’. Any actor within the game would then be able to request an explosion by calling to an event in the explosion systems actor, only needing to supply it with a world location.