# Scoring and Judgment¶

The scoring system and judgment system in Bemuse focuses on both accuracy and combo.

## Judgment¶

When hitting the note, the accuracy of your button press will be judged according to this table:

Name | Maximum Offset (ms) | Accuracy Score |
---|---|---|

METICULOUS! | 20 | 100% |

PRECISE! | 50 | 80% |

GOOD! | 100 | 50% |

OFFBEAT! | 200 | 0% |

MISSED! | – | 0% |

Source code reference

- Defined at src/game/judgments.js:7-14 (judgment timegate)
- Defined at src/game/judgments.js:51-58 (judgment weight)

## Scoring¶

The player’s score is calculated from this formula:

\[\begin{split}\text{score} &= 500000 \times \text{accuracy}
+ 55555 \times \text{combo bonus} \\[10pt]
\text{accuracy} &= \frac{
\sum\text{accuracy score}
}{\sum\text{total combos}} \\[10pt]
\text{combo bonus} &= \frac{
\sum_{c \in \text{combos}}{\text{combo level}(c)}
}{\sum_{i = 1}^{\text{total combos}}{\text{combo level}(i)}} \\[10pt]
\text{combo level}(c) &= \begin{cases}
0 & c = 0 \\
1 & 1 \leq c \leq 22 \\
2 & 23 \leq c \leq 50 \\
3 & 51 \leq c \leq 91 \\
4 & 92 \leq c \leq 160 \\
6 & 161 \leq c
\end{cases}\end{split}\]

Here’s how the combo level formula comes from. Let’s assume, for simplicity, a player with 99% hit rate, regardless of difficulty. The probability that the player will attain \(c\) combos is \(0.99^c\).

Now we have 6 combo levels. The probability that the player will attain that level gradually decreases. Therefore, the minimum combo is \(\left\lceil\log_{0.99} p\right\rceil\).

Combo Level | Max. Probability | Min. Combo |
---|---|---|

1 | 100% | 1 |

2 | 80% | 23 |

3 | 60% | 51 |

4 | 40% | 92 |

5 | 20% | 161 |

Source code reference

- Defined at src/game/state/player-stats.js:27-29 (score) [outdated: 17be8477]
- Defined at src/game/state/player-stats.js:99-106 (combo)

## Grading¶

After playing the game, the grade is calculated according to this table:

Grade | Minimum Score |
---|---|

F | 0 |

D | 300000 |

C | 350000 |

B | 400000 |

A | 450000 |

S | 500000 |

Source code reference

- Defined at src/rules/grade.js:2-12 (grade)