I was making a rhythm game and thought that some people might’ve wanted to do the same! So, I made a customizable module to simplify the process, but allow developers to measure rhythm however they want.
Feature summary:
Get accuracy data based on customizable tolerance levels
Lower Rating = More on-beat, but nil means the player completely missed
An event (OnIdle) fires if no input is given and a key passes
Here’s an example that prints accuracy when a player jumps to the beat:
Good for some games, but there is a BIG problem.
isn’t it will be hard for moving the rythm blocks and perfectly timing it with wait() or tick()
you would an API for development if it’s mainly based on rythm mechanics.
Move the Stopwatch and Sound properties to the RhythmService table
Add long (holding) note support
Add new optional noHold parameter to :CheckRhythm
Tables can now be stored using :SetKeys
for example, RhythmService:SetKeys({0.5, {1, 2}}) will create a key at the 0.5-second mark and follow your tolerance definitions normally. this will also create a normal key at the 1-second mark but it will be continuously measured until the 2-second mark (accounting for your tolerance definitions) or when the stopwatch ends. a code example can be found here
change :ToggleKey’s keepPosition parameter type to boolean
perhaps a plugin can be made to play the song, and the dev can press a button to the rhythm, which would give the module the chart they want. i’ll think more about that