OverDrive is a synthwave themed rhythm/racing game for mobile. The player controls a car on an endless three lane road driving down the streets of miami, and can collect music notes to the beat of the music to increase their score and combo meter.Learn more about the game here!
I developed all of the art assets, including 3d models textures, and sprites. One of the biggest challenges this project posed was optimizing all of these assets to fit performance needs for mobile devices. This required limiting model complexity, texture resolution, and optimizing Unity's post processing effects. I wanted to get as much graphical performance as possible, while being able to run at 60fps on all supported mobile devices.
Another way I was able to fully optimize the game was by developing a custom shader for mobile. The shader utilizes basic textures for models, while limiting the amount of strain on mobile devices. Most importantly, the shader allows for texture interpolation, as shown below. This allows models to smoothly transition to an emitted state, which was essential to the core mechanic and aesthetic of the game.
One of the game's core scripts that I developed was an audio visualization script. This adds effect to the game by making the buildings bounce up and down, screen shake, and other visual effects that are rhythm to the music being played in game. I started by using Unity's API to receive an array of frequency data corresponding to the current audio source that is updated every frame. Using this data I was able to create a basic visualization structure:
After sorting through the data and dividing the values into the 8 frequency bands, it becomes much easier to deal with and visualize. The values farthest to the right correspond to the deeper bass frequencies, while the values to the left are the higher pitched frequencies. Using this data I was able to manipulate other in-game data to react to the music such as textures, lights, and scales.
One of the biggest aspects of the game is the option to customize the player's car. Using Substance Painter, I designed multiple skins that the player can purchase using the coins earned in game.