Groovekeeper Logo

Groovekeeper

In Spring 2026, I led the team for Groovekeeper while also being the head programmer. Groovekeeper is a boss battle rhythm game where you need to punch notes to the rhythm of the song to survive the bosses' attacks in the chase phase and defeat them in the boss battle phase. I was in charge of the art and music direction and help lead the game to have its coherent visual and audio style. I also implemented a lot of the UI art and gave it visually pleasing animations.

Role Team Lead & Gameplay/UI Programmer
Team Size 30 Developers
Duration 3 Months
Engine/Tools Unity / C#

Song Select Menu

I wanted Groovekeeper's song select menu to be very (word for visually pleasing animation-wise) so using the drawn assets that our UI artists provided, I implemented a carousel system for the song select menu. This way players can navigate through different songs quickly and then can see the information of the song, by clicking on the middle-most selected song button.


Beatmap System

I initially planned to use MIDI files to write Groovekeeper's beatmaps, however, Unity natively cannot read MIDI files so I had to come up with another solution. I then learned MIDI files can be easily converted to BYTES files. Using that knowledge, I wrote a script that parses bytes files and reads data such as the note's SPN and length, which determines factors like which lane the note is in, if its a double or hold note, and more.


Music Sync

One of the most important elements of rhythm games to me is that the actions are synced to the music that is being played, so I wanted to make sure Groovekeeper didn't have any issues with that. I created a system that starts the spawning of notes and the music simultaneously, including parameters so the other team members that were implementing new songs could adjust the start delay of the music/notes, the speed in which notes move across the screen, add beatmaps for different difficulties, and more. This sped up our implementation speed a lot.


Boss Battle

With a desire to add a more intense bout with the boss of a song, I discussed with my team and we decided a boss battle portion to the game. I was in charge of programming the UI as well as the system that this mode runs on. The system uses the same music playing script as the main gameplay, but instead of parsing a beatmap at the beginning, each boss has a set of attacks they can do the beat. Each attack is a struct that holds the move type, and the beats from when the attack starts that the attack is done on. The system will send a message saying the boss should start its attack and then the boss will animate to perform the set of attacks in sync with the song's bpm.

Back to Games