This year's scoring system is based on two factors: leaderboard positions, and fixed time barriers. Like in League 2023, the higher your run sits on the category leaderboard, the more "rank points" you'll earn. But in addition to that, you'll also earn "time points" for beating certain times.
As before, each rank you climb will earn you one extra rank point. Once you enter the top 10, you'll get two points per rank. And when you enter the top 5, you'll get three points per rank.
Time points work differently. Each category has a baseline time to beat. For example, 1 hour. Beating that time will earn you one time point. Then beyond that, there are additional time barriers to be broken, spaced out evenly. For example, every 30 seconds. You'll earn one extra time point for each barrier you break.
So in the above example, a run of 58m 45s would earn 3 time points: one for beating the 1h barrier, one for beating the 59m 30s barrier, and one for beating the 59m barrier.
Whatever your time, you'll always earn some points. Exactly how many depends on the category. Longer categories pay out a few more points than shorter ones, to account for the extra effort that goes into learning and practicing longer categories.
The exact calculation used is shown in the formula below. You can try it out for yourself, using the calculator tool, further down the page.
For more information on scoring, head over to the SM64 Romhacks Discord server.
league_pb_rank
- the position of your league PB on the league category leaderboardnumber_of_league_participants
- the total number of participants in the leagueleague_pb_in_milliseconds
- the total time of your league PB, in millisecondsleague_pb_in_seconds_floor
- the total time of your league PB, in seconds, rounded downleague_pb_in_seconds_ceiling
- the total time of your league PB, in seconds, rounded upinitial_pb_in_milliseconds
- the total time of your initial PB, in millisecondsinitial_pb_in_seconds_floor
- the total time of your initial PB, in seconds, rounded downinitial_pb_in_seconds_ceiling
- the total time of your initial PB, in seconds, rounded upa * b
- a
multiplied by b
a ** b
- a
to the power of b
a // b
- how many full lots of a
fit into b
(also known as "integer divide")a % b
- a
modulo b
min(a, b, ...)
- the lowest of a, b, ...
max(a, b, ...)
- the highest of a, b, ...
abs(a)
- the absolute value of a
baseline = 10
rank_bonus_1 = max(0, number_of_league_participants + 2 - league_pb_rank)
rank_bonus_2 = max(0, 11 - league_pb_rank)
rank_bonus_3 = max(0, 6 - league_pb_rank)
time_bonus = max(0, 7200 - 1 + 30 - league_pb_in_seconds_floor) // 30
final_score = baseline + rank_bonus_1 + rank_bonus_2 + rank_bonus_3 + time_bonus