Downhill Dash.
OVERVIEW
-
Role - Gameplay Programmer, Programming Lead
-
Tools - Unity, C#
-
Team Size -
-
Timeline - 4 Weeks
LINKS.
NOTABLE TASKS.
-
Programming Lead and Version Control Manager
-
As a programming lead, this project was a highly educational experience. I learned to be more aware of the structure of the codebase for the entire project.
-
I learned to effectively communicate with the design and art team about their needs and wants and converting that to programming tasks within different sub categories and distributing these tasks within the programming team.
-
I held frequent code reviews within the team and made sure the entire programming team was aware of each other's tasks, workflows and best practices. This also helped with smoother transitions whenever a programmer was taking over a feature from another programmer or working with/extending another programmer's scripts.
-
The project overall was a huge lesson in scope management and communicating effective timelines with the design and the art team.
2. Custom Physics Character Controller
-
Our designers communicated that they wanted the player movement to be physics based but still highly customizable in terms of arcade-esque response to player input.
-
This led me to implement player movement using custom physics equations and the collide and slide method of capsule movement which allowed for a highly tunable movement.
Custom Physics Equations Used to Apply Linear Movement
Collide and Slide for Capsule Travelrsal
-
The player states are handled using a finite state machine.
-
The player is smoothly aligned to the terrain using a smoothed normal based on four traces around the player capsule. This helps ignore tiny bumps and high frequency terrain changes.
The calculated Terrain Normal

Collide and Slide Method

-
This normal is also put through a recency weighted average to reduce further vibrations.
-
If any of the traces is not hit, just one part of the equation is used.
3. Input Stacking for Combos and Trajectory Prediction for Smooth Landings
-
The original project was built for android, but after the project was finished, I worked on it to add controller support as well as implement some tricks and input combos.
In Air Predicted Trajectory
-
I added a trajectory prediction function when the player was in the air to predict where the player would land. This helped with smoothly aligning the player to the terrain it would land on, which made the game feel much more fluid, especially on curved ramps.

4. Level Design Tool to Replace Scene Objects with Assets
-
I wrote in more detail about this here.
-
This tool allows level designers or artists to replace the blockout shapes in the scene with final art assets (or replace any scene object with any asset/GameObject)

5. Other Responsibilities
-
Animation and VFX implementation
-
Player "ghost" recording and playback
-
Shader support for artists
-
Perforce manager