Interstellar Racing League

Game Description:

Interstellar Racing League is a high-speed, 4 player racing experience. Players are racing along gravity-defying tracks through alien planets to compete for the title of the Galaxy’s Best Racer.

Development Specification:

  • Role: Gameplay/Physics Programmer
  • Engine: Unreal Engine 4.17.2
  • Development Time: 2.5 Months
  • Team Size: 56
  • Number of Programmers: 15

Screenshots

Responsibilities

  • Created a polished hovercraft physics model that enables a racer to move through multi-axis levels.
  • Built a vehicle architecture that enabled the creation of independent modularized components. This enabled fast and easy iteration. 
  • Implemented a camera system that offers a good perspective while at the same time ensuring that it doesn’t hinder the feel of the game.
  • Ensured that collisions with other track objects are working as you would expect when you’re racing high speed.
  • Stabilized the hovering of the car and make the bumps feel natural to the vehicle.
  • Implemented a re-orientation feature that helped player’s reorient the vehicle with a time penalty if they were knocked into facing the wrong way.

Vehicle Architecture

Collision System

My team was tasked with handling collision responses and dispatching appropriate events based on what the vehicles collided with. We successfully created a collision system that facilitated player-player collision and player-wall collision by generating the necessary collision responses and the appropriate events to notify other systems of the collision events.  

  1. Set up event dispatchers for different collision types, for eg. Wall vs Vehicle.
  2. Set up impulse responses for player-wall and player-player collisions.
  3. Created the functionality for speed penalty on collision.
  4. Communicated the usage of event dispatchers to other teams.

Player-Player Collision

Player-Wall Collision

Note: The Unreal Engine Blueprints below are interactive. Please feel free to zoom into individual aspects by scrolling the mouse. Hold right mouse and pan to move around. 

Camera System

I was tasked with developing a camera system that would ensure that the game’s perspective of speed was well conveyed. It also had to be easily tweakable so that the designers could iterate on the camera’s parameters effortlessly and fast. 

  1. Built a camera that follows the player vehicle with lag depending on the speed of the car.
  2. Built a system that adjusts the pitch and FOV of the camera based on the speed to convey high speed to the player.
  3. Built a rotation lag into the camera that reveals more of the corners while turning.
  4. Data drove the camera parameters for designers to iterate fast. 

Camera Rotation Lag

Camera FOV and Pitch

Note: The Unreal Engine Blueprints below are interactive. Please feel free to zoom into individual aspects by scrolling the mouse. Hold right mouse and pan to move around.

Reorientation

After a lot of playtesting sessions we noticed that players used the knock power up a lot to spin off other players. This spin off led to players facing the wrong direction most of the time. To make the power up more forgiving, I had to implement a Reorientation mechanic that would rotate the vehicle towards the track’s forward direction. 

  1. Communicated with other programming teams to see how we define moving in the wrong direction.
  2. Figured out when reorientation is needed and fired the necessary event dispatchers to enable other teams like UI, convey information to the player. 
  3. Figured out the math to solve the problem because the reorientation plane is different for every part of the track.
  4. Data drove the speed and threshold for reorientation to enable designers to tweak values. 

Personal Postmortem

Team Postmortem