Mathematics/ Code Explanation
The full mathematical formula for calculating in game time from score, for runs of less than 5 minutes in-game time, is:
(210,000 - (N * 100,000 / M)) * (3 / 400)
The full mathematical formula for calculating in game time from score, for runs of 5 to 15 minutes, is:
(175,000 - (N * 100,000 / M)) * (3 / 50)
Let N = The Score shown on screen.
Let M = The Bonuses and
Penalties added up.
Each Silent Assassin Bonus (Objectives Complete, Never Spotted, No Noticed Kills, No Bodies Found, No Recordings) is 20k points towards the M value, while each nontarget kill is -5k points towards the M value. Note that the Time Bonus does not count towards the M value. The maximum M value is 100,000.
Since most players do not show Detailed Score Menu in their run submissions, this site runs a script to account for all 20 possible M values, and calculates 20 possible decimal times as a result. The user is asked to report the the time shown on the rating screen (which rounds down to the nearest second). The calculated decimal time that is closest to the time shown on the rating screen is displayed to the user.
Usage Quirks
-
This formula does not work when the N value (Score) and/or M value (Penalties/Bonuses) are 0. Note that one of the Silent Assassin bonuses is "Objectives Complete", and you are almost guaranteed to get points for this simply by killing all targets and exiting the mission. The score can become 0 either due to:
-
Killing too many nontargets (each nontarget kill is -5k in the Bonuses and Penalties (M) score).
-
Finishing the mission in less than 7 seconds (IOI's "anticheat", currently this only applies to Dubai any% in terms of main missions).
-
Any decimal values smaller than a millisecond in the final result are rounded down to the nearest millisecond.
- Example: 26.1857 rounds down to 26.185.
Error Calculation
-
Disclaimer: The calculated decimal score is not quite accurate (due
to the game internally tracking decimals in the score). These can be
manually rounded to the next fastest second as needed for
leaderboard purposes.
-
To be precise:
Error = (Z * 100,000 / M) * (3 / 400)
- Where M = the penalties and bonuses added up (each SA bonus 20k, each nontarget kill -5k, etc).
- And Z = how much the score shown on screen is off, between -0.5 and 0.5.
- Assuming -0.5 < Z <= 0.5, the error can be as low as ±0.00375 seconds (for SA run) or as high as ±0.75 seconds (any% run with M score of 5k).
-
Example (calculated time is higher than expected):
- SCORE (N): 113593
-
Example (calculated time is lower than expected):
-
SCORE: 204667
- Actual Time shown on Rating Screen: 40.xxx
- Original Time Calc: 0:39.997
- Time Calc Error Range: (0:39.993, 0:40.001]
- Margin of Error (Seconds): ± 0.00375
- M value: 100000
- Result for SRC (tentative): Due to the time shown on rating screen taking precedent, use 40.000 for leaderboard ranking (if using milliseconds)
- PS: This case seems to confirm that the score rounds up to the next value, with a rounding cutoff near .5 mark (score decimals of less than .5 = round down, greater than or equal to .5 = round up)
-
SCORE: 204667
-
To be precise:
Error = (Z * 100,000 / M) * (3 / 400)