Song Select Menu
I wanted Groovekeeper's song select menu to be very dynamic and fluid. Using the custom assets provided by our UI artists, I implemented a carousel selection system. This allows players to rapidly navigate through available tracks and bring up dedicated song metadata, difficulty charts, and track details simply by selecting the central, active song slot.
Beatmap System
While I initially planned to use MIDI files to write Groovekeeper's rhythm charts, Unity natively cannot parse MIDI files. To get around this, I converted the files into standard BYTES data. I then set up a custom parser script to read the raw bytes and read data like pitch notation (SPN) and duration to map note lanes, double notes, and hold notes.
Music Sync
A perfect audio-visual sync is critical for a rhythm game, so I made an audio engine to prevent any visual latency. The system starts note scrolling and audio playback concurrently, providing inspector variables so designers can configure offset delays, custom note speeds, and difficulty data. This system significantly sped up the team's level implementation process.
Boss Battle
To increase gameplay stakes, I worked with my team to design a boss battle mode. I programmed the backend logic and the user interface for this mode, using the core audio tracker to sync actions. Instead of reading a rhythm chart, bosses cycle through attacks structured as custom structs, containing move types and beat timings. Boss animations are triggered in rhythm with the tracks BPM as well.