Warning: Page containes gifs with flashing lights
Polyrhythm is a two-button rhythm game for musicians. Instead of a typical rhythm game, where players test their timing, reactions, and memory, polyrhythm tests the player's ability to recognize musical patterns and play them precisely in two hands. The game consists of a series of "loops" that repeat a rhythmic pattern in both hands, like drums. The player must recognize the pattern and play it to fill up the background with a new color, at which point the music seamlessly transitions to the next loop (with a light show along the way). As my first solo project in Unity, I learned a lot making polyrhythm, especially about planning out game-wide systems and electronic music.
Itch.io GitHubAdaptive Soundtrack
Polyrhythm's adaptive soundtrack was entirely produced and implemented by me in Logic and FMOD. It consists of several loop areas that may repeat indefinitely, often with variations or evolutions to keep them fresh, and musical flourishes linking them. However, the intro is more generative, changing the tempo, notes, and mixing of the music to build tension depending on how far the player has filled the background bar with correct hits, and releasing it if they start missing. The full FMOD project is included in the GitHub repository, and the soundtrack is at the bottom of the page.
Mapping Pipeline
All visuals are determined from the FMOD project, where I used the marker callback system to send messages to Unity where they were parsed. These messages could trigger notes, color changes, game environment changes like percentage fill per hit, or custom functions, each with parameters. This pipeline abstracted mapping away from coding, and allowed me to trigger things very precisely with the music. This could certainly be improved, as manually placing every note is cumbersome. If given time, I would instead trigger patterns of notes from text files instead of individual notes.
Effects & Accessibility
Because I am not an artist, I decided on a simple geometric style with lots of bloom, chromatic aberration, and other effects to get a cool look programmatically. Some effects, like shake and particles, were added to give better feedback to the player. However, these effects proved to be overstimulating for some players in play testing, so I added a functional options menu. Because of the nature of the game, I did not have to pause the music while paused, so I simply paused hit calculations and applied a low pass filter for the menu.
Design Process
When I started to design polyrhythm, my goal was to emphasize musical skill over reaction speed and timing in a typical rhythm game, and everything followed from there. The most obvious solution, then, was to remove note hit indicators, since players didn't need any sense of musical timing when they could just react to note indicators. However, this created a big problem - if you didn't know notes were coming, it would feel unfair to be punished for missing one. Thus, I had to create a rhythm game that allowed the player to miss notes, yet still required them to hit them. Then, it hit me - If the music only progressed when the player hit the notes, then the player would be able to miss as many notes as they wanted. Thus, polyrhythm was born - the adaptive soundtrack allows the music to loop indefinitely until the player masters the pattern in each "loop", at which point the music continues. The goal of the player is to master the patterns as quickly as possible, thereby getting a faster time through the song.