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.