Despair Mario's Gambit 64 - 53 Star

Scoring Overview

When a league is live, runs are collected from Speedrun.com every few minutes. The system collects only runs that are relevant to the league, i.e. runs submitted by league participants, during the league timeframe.

Once the runs have been collected, each participant's "league PB" is determined, for each category. The league PBs are then ranked, scored, and placed on the league category leaderboards.

In other words, you earn points by improving your league PBs. You don't get more points for simply submitting more runs.

The specific scoring system used for each category is decided by the league creator(s). You can find out more about this category's scoring system in the following sections.

Scoring for this Category

The scoring system for League 2022 is based on PB improvements. Each runner will start the league with an initial PB in each category, and then earn points by improving those PBs throughout the league.

As your PB improves, further improvements will become more and more difficult. Each category has a set of "tiers", to account for this. The better your PB, the more points you'll earn per second of improvement.

There is also an additional bonus, which guarantees you a baseline number of points just for beating your initial PB at all, even if the improvement is only very small. The bonus amount depends on your initial PB - the better it is, the higher the bonus.

Note that you won't receive any points if you don't beat your initial PB.

For more information on this scoring system, head over to the SM64 Romhacks Discord server.

Formula

The formula below shows the exact calculation that is used to score runs for this league category.

The formula is controlled by the admin user(s) running the league. They can make changes to it during the league, if need be.
tier_1_score = 2 * max(0, min(3000, initial_pb_in_seconds_floor) - max(2730, league_pb_in_seconds_floor))
tier_2_score = 4 * max(0, min(2730, initial_pb_in_seconds_floor) - max(2520, league_pb_in_seconds_floor))
tier_3_score = 6 * max(0, min(2520, initial_pb_in_seconds_floor) - max(2355, league_pb_in_seconds_floor))
tier_4_score = 8 * max(0, min(2355, initial_pb_in_seconds_floor) - max(2190, league_pb_in_seconds_floor))
tier_5_score = 11 * max(0, min(2190, initial_pb_in_seconds_floor) - max(2055, league_pb_in_seconds_floor))
tier_6_score = 21 * max(0, min(2055, initial_pb_in_seconds_floor) - max(1965, league_pb_in_seconds_floor))
tier_7_score = 37 * max(0, min(1965, initial_pb_in_seconds_floor) - max(1905, league_pb_in_seconds_floor))
tier_8_score = 102 * max(0, min(1905, initial_pb_in_seconds_floor) - max(1860, league_pb_in_seconds_floor))
tier_9_score = 153 * max(0, min(1860, initial_pb_in_seconds_floor) - max(0, league_pb_in_seconds_floor))

main_score = tier_1_score + tier_2_score + tier_3_score + tier_4_score + tier_5_score + tier_6_score + tier_7_score + tier_8_score + tier_9_score

tier_1_bonus = 250 - (250 * min(270, max(0, initial_pb_in_seconds_floor - 2730))) // 270
tier_2_bonus = 250 - (250 * min(210, max(0, initial_pb_in_seconds_floor - 2520))) // 210
tier_3_bonus = 250 - (250 * min(165, max(0, initial_pb_in_seconds_floor - 2355))) // 165
tier_4_bonus = 250 - (250 * min(165, max(0, initial_pb_in_seconds_floor - 2190))) // 165
tier_5_bonus = 250 - (250 * min(135, max(0, initial_pb_in_seconds_floor - 2055))) // 135
tier_6_bonus = 250 - (250 * min(90, max(0, initial_pb_in_seconds_floor - 1965))) // 90
tier_7_bonus = 250 - (250 * min(60, max(0, initial_pb_in_seconds_floor - 1905))) // 60
tier_8_bonus = 250 - (250 * min(45, max(0, initial_pb_in_seconds_floor - 1860))) // 45
tier_9_bonus = 250 - (250 * min(1860, max(0, initial_pb_in_seconds_floor - 0))) // 1860

bonus = 250 + tier_1_bonus + tier_2_bonus + tier_3_bonus + tier_4_bonus + tier_5_bonus + tier_6_bonus + tier_7_bonus + tier_8_bonus + tier_9_bonus

final_score = (main_score + bonus) * min(1, max(0, initial_pb_in_seconds_floor - league_pb_in_seconds_floor))

Calculator

You can try the scoring system out for yourself, using this calculator. Plug in some hypothetical (or actual) speedrun details, and see how much it would score.

This can help you get a feel for the scoring system. It can also be useful throughout the league. For example, you can experiment with it, when deciding which league categories to focus on next.

Note that having no initial PB is equivalent to having an initial PB of 999h 59m 59s 999ms.
Result