top of page

Tempo

2D Rhythm Platform Fighter
Gameplay Engineer // Designer
April 2023
Made in Unreal 5

About

Tempo was a 1 month project for a class made with 2 others during my 1st year at USC. It is a Local Multiplayer 2D Platform Fighter which mixes in rhythm game mechanics. Players must fight their friends to the beat of a song to have any hope of winning the fight! Tempo features dynamic gameplay accompanied by a juicy UI system.

Highlights

  • Rhythm-Driven combat system that was used throughout player combat state machines and interactions

  • Anti Drift Metronome that could keep beat timings even through game stutters

  • UI engineering on scene flow as well as UI tweening animations

  • Local multiplayer functionality

  • Persistent singleton architecture that accepts mockable data

Rhythm Driven Combat System

  • State machine is driven by attacks as states which allows the state machine to check if the states are triggering on beat

  • Depending on if states are triggered on beat or off beat different functionality occurs​

  • Easy customizable hurtbox that calculates knockback and handles the getting damaged logic

Normal Attack

Special Attack​

Charged Attack

Aerial Normal Attack

If an attack is off tempo, the animation will still run just like normal. However the attack will do no damage and will give the other players time to capitalize.

TempoStateEditor.png

Attacks being states leads to easy hitbox frame timing as well as other setting adjustments. 

Currently states are hardcoded for the sole character in the game due to time constraints. In the future I would like to explore a system where I drive everything through animation or at least attacks and simplify the current state machine into basically 1 state of "play animation" and connect all logic through the animations.

Anti Drift Metronome System

  • No use of delta time removed metronome depedency on frame rate making sure that the beat didn't drift far and confuse players

  • Metronome could also tell how "on beat" an input was to determine the effects and damage of an attack

  • Heavily customizable bpm, offset, accuracy settings to work with future songs if this project is ever revisited

MetronomeSettings.png

Customizable Metronome Settings

MetronomeVisualizer.png

Metronome Visualizer

UI Engineering

Circular start menu navigator that uses linear interpolation and math to create robust UI animations that can survive input spam

Syncing menu UI to audio spectrum to add some flavor to the game

  • UI Flow system that could control flow of UI as well as handle multiple inputs being sent from different controllers at the same time

  • Tweening animations for many of the game's UI such as the Let's Bop message, victory message, metronome, etc.

Other Features

  • Basic local multiplayer functionality such as join and leave

  • Local multiplayer inputs were not dependent on the character allowing for easy addition of more characters that work with the local multiplayer system.

  • System that allowed persistent singletons that live between scenes to load in mock data instead of having to start up the game from the start screen everytime to test features

  • Camera Code that allowed for dynamic movement and zooming of the camera to any dynamic target that existed in the scene whether that was a player or could just be a random prop on a stage

bottom of page