# How the Time-Bonus is Calculated

#1

I don’t know, maybe this has already been revealed, but I couldnt find anything except complaints about it being bugged when the game was new, so I figured I’d reveal my findings.

Based on looking at the leaderboards and scores on youtube, as well as a couple of my own experiments, I believe what I have found is correct, but might be incomplete for playthroughs longer than 1 hour.

Basically, the time-bonus is calculated based on time as well as your total non-timed points. More specifically, the time you play a mission in yields you a percentage which is then used on the non-timed points to calculate the bonus.

So a perfect SA playthrough (which gives you 100,000 non-timed points) with 50% yielded from your time gives you a time bonus of 50,000 points and a total of 150,000 points for the entire mission.

The percentages are:

110% for 0 minutes (210,000 points in total with SA)
70% for 5 minutes (170,000 points in total with SA)
60% for 15 minutes (160,000 points in total with SA)
50% for 60 minutes. (150,000 points in total with SA)

The percentages for any other time are calculated as linear interpolations between these points, so for instance a playthrough of 2 minutes 30 seconds gives you a halfway point of 90%, while 30 minutes is a third the way from 60% to 50% and thus gives you approximately 56.67% as a bonus.

This gives you a theoretical upper cap of 210,000 points (which people got when the scoring was bugged), while most players who do SA will rarely go under 150,000 points (1 hour).

It also means that for certain times, someone who doesn’t get SA can still beat someone who gets SA,
For instance, if you get caught on camera and don’t delete the footage you can beat an SA score that was done in 1 hour if you do yours quicker than 2 minutes 48 seconds.

But if the SA score you want to beat while not deleting tapes is done in 5 minutes (for instance) you can’t defeat it, because you can get at most 168,000 points, while your opponent has 170,000 points.

There might be another data point after 60 minutes (I haven’t done the experiment yet), but it looks like it just continues in the same way as between 15 and 60, so hypothetically you might be able to get a negative time bonus (uness IO have put in another data point, or a cap at 0 %).

I dont know if this was of interest to anyone, or if perhaps it is already common knowledge, but in case it isn’t common knowledge I thought I’d share.

This also means if you want to break 200,000 points (with SA) it puts you one fourth the way from 110% to 70%, which corresponds to 1 minute 15 seconds.

#2

Interesting! Maybe a graph would be nice:
X-axis being a 4-symbols-run in time,
Y-axis being a 5-symbols-run (SA) in time,
And the graph shows at which times both are scorewise equal.

#3

I have to admit I dont know what qualifies as 4 symbols. Is it any run where you miss one of the main 20,000 point criteria?

#4

There was a contract I made that had this. But the time difference was about 2 minutes apart.

I had 3:20ish with perfect SA while another player had all bonuses, 2 non target kills (-10,000pts) and a time of 1:30ish. He still had more points than me.

#5

Yeeeeee20characteeeeees

#6

Yes but also no. You can have all bonus points but if you have a non target kill, it will still get you 4 stars.
So for every bonus you lose, you lose a star. But then at the same time, maybe if you start losing in 20,000 increments from non target kills, then you start losing stars according to that.

#7

3:20 corresponds to 200 seconds (2 thirds from 110% to 70%), yielding you 83,3%. Since your base is 100,000 points this should give you 183,300 points.

Your opponents base is 90,000 points, and so needs a percentage of around 104% (2,04 x 90,000 = 183,600) or more to beat you. That should correspond to 45 seconds, so I can’t get that to jel with your numbers, no.

According to my math, if you did it in… say… 3:50 and he did it in 1:20, then he would beat you by a hairs breadth. Maybe those are closer to your times?

Haven’t looked super closely on the way non-target kills effect the score though, so I might’ve missed something.

Did you do this contract on PC (so it’s possible to look up)? I’d love to look at the exact numbers.

Added by Edit: I just did a test run with one of my “fast, but not speedrunner fast” methods for Sapienza (around 3:30), once killing two non-targets, and once without doing so, and my math still fits with the results.

#8

Did some testing on Non-Target Kills. First of all, they are not a pure penalty: They actually reduce the Time Bonus.

Same contract, exited within milliseconds of each other. If the NTK penalty were just the -5,000 we would expect the score for the second run to be ~198,930. That is not the case; the score is 193,762, an additional almost 5,000 point loss! And we can see where the loss comes from: The Time Bonus for the SA run is 103,930 where the four star run is only 98,762. In addition to losing 5,000 points from the kill, we also seem to have lost it again in Time Bonus! But why is that?

According to @Kent, a time of ~0:45 should be giving us a Time Bonus factor of ~104%, which maps nicely to 103,930. So what bonus factor are we getting on non-SA? Given the bonus of 98,762, it’s around ~98-99%. Roughly a 5% loss for more or less the exact same time. But then I tested killing two non-targets.

I’m not 100% sure of this and maybe it’s just a coincidence but it looks like the Non-Target Kill Penalty actually double dips: You lose 5,000 points for killing a non-target and you lose 5,000 points from the Time Bonus for each non-target killed. So the “true cost” of a NTK is simply 10,000 points; it doesn’t seem to affect the math of the Time Bonus. But let’s be super duper sure and wait longer:

It’s not exactly 10,000, but it’s close enough that the milliseconds of difference between the times may have been responsible. It at least appears to be unaffected by the scaling factor itself.

tl;dr Unless I got very lucky it appears that the penalty for a Non-Target Kill is simply a total -10,000 points per kill, subtracted half from your Time Bonus and half from the final score. The fact that it’s four stars non-Silent Assassin seems to be irrelevant.

#9

It was more or less 2 mins and change difference. I’ll go back in my post history and find the exact numbers.

#10

Since NTKs remain a static penalty their relative impact on score goes up the longer a run goes. At 0:45 a five bonus three NTK run gets ~174,000 which I think is equivalent to a SA run in the 4-5 minute range; yes, it’s beating SA at that point with three kills. At 15 minutes missing an objective is ~12,000 points of Time Bonus, which means a single NTK still should squeeze out a better score. But any more than one and the four-objectives run wins.

The takeaway here is that Non-Target Kills are actually not a huge penalty if you’re finishing a run extremely quickly and still have all five other bonuses. People would have to be significantly slower than you (on the order of several minutes) to lose to your score, but they would still lose to an 0:25 with something like 3:15 even if you killed several extraneous people and they got SA.

#11

Can’t do it for symbols, but here’s the graph for if you miss one 20,000 point criteria.

The reason it is two distinct lines even though I described three distinct lines in the OP is because (as I mentioned) you cannot beat an SA score with 5 minutes or less, so I didn’t include it in the graph (would be negative values).

#12

Great gonna save this one for the next ridiculous user made contracts!

#13

I actually believe you got very lucky. At 45 seconds and with 90,000 as a base (2 kills), I get a score of 183,600 according to my math. And 204,000 for SA. (both are right on the mark)

With 95,000 as a base (1 kill) for 2 minutes 30 seconds I get 180,500. And 190,00 for SA:

Both correspond perfectly with your results.

To help you out, the formula for the bonus part of the score (given as a percentage) under 5 minutes can be caluated as simply:

(300 - t) x 40/300 + 70 where t is the total time in seconds.

With a time of 0 seconds it simply reduces to 110%.
With a time of 300 seconds (5 minutes) we instead yield 70%.

Plugging in 45 seconds, for instance gets us 104%.
If we have no kills, that’s 204,000 points (or 2,04 x 100, 000)
If we have two kils that’s 183,600 (or 20.04 x 90,000)

So much math. LOL.

#14

Aha. So I think I see what you’re saying. The bonuses and penalties are actually applied in order, and essentially reduce the amount that the Time Bonus multiplier multiplies? That is, the Time Bonus multiplier looks at a Non-Target Kill and subtracts 5,000 from the 100,000 and then multiplies? What I’m not clear on is whether the -5,000 per Non-Target Kill is also still subtracted from the final score.

So just to pick a completely random example, let’s say we finish a contract in 3:27. Your formula gives us:

(300 - t) x 40/300 + 70
t = 207
(93) x 40/300 + 70
82.4

So the Time Bonus multiplier should be 82.4%. If the NTK Penalty is being applied before the multiplication, we should be able to predict the exact scores for a certain number of bonuses/NTKs, as:

5 Bonuses/0 NTKs: (0.824 * 100,000) + 100,000 = 182,400
5 Bonuses/1 NTKs: (0.824 * 95,000) + 100,000 = 178,280 (or 173,280?)
5 Bonuses/2 NTKs: (0.824 * 90,000) + 100,000 = 174,160 (or 169,160?)
5 Bonuses/3 NTKs: (0.824 * 85,000) + 100,000 = 170,040 (or 165,040?)
3 Bonuses/0 NTKs: (0.824 * 60,000) + 60,000 = 109,440
4 Bonuses/0 NTKs: (0.824 * 80,000) + 80,000 = 145,920

Possibly minus 5,000 more per NTK as a final subtraction? Not sure.

#15

I’ve not spent much time on it, but using the following six point dataset (the four that @kent gave us, one from @Nakar, and one from me):

``(0, 1.1) (5, 0.7) (15, 0.6) (60, 0.5) (0.75, 1.0393) (1, 1.01892)``

and Lagrange’s polynomial interpolation method, we get the following degree 5 polynomial:

``f(x) = -2.446316201079 * 10 ** -7 * x ** 5 + 0.000013214 * x ** 4 + 0.000121196 * x ** 3 -0.000828648 * x ** 2 -0.0803855 * x + 1.1``

Then if x is time (in minutes) and y is base bonus, we can use the following function:

``b(x, y) = y(1 + f(x))``

And using @Nakar’s data:

``````b(0.75, 100000) = 203930; actual = 203930
b(0.75, 95000) = 193733; actual = 193762
b(0.75, 90000) = 183537; actual = 183550
b(2.5, 100000) = 189624; actual = 189957
b(2.5, 95000) = 180143; actual = 180447``````

It’s not perfect, but it’s a reasonable fit. I suspect there is a logarithmic function at play here. If I get chance I’ll try some other ideas.

#16

The fits are going to be rough because we cannot get frame-perfect exits and it’s well-known that the Time Bonus is calculating on the order of much smaller lengths of time than seconds. Otherwise two people couldn’t be 60 points apart with the exact same displayed time. That makes all the datapoints somewhat dubious, but the rough idea seems to be as you’ve both described.

#17

This is the way I see it yes.

If I understand you correctly then it does.

Basically I take all of the non-time scores (so all of the 20,000s), then I subtract the penalty. This in my mind is the total non-timed score. So if you did SA, but then killed two dudes, its 90,000. If you killed one it’s 95,000.

THEN I multiply it by ( 1 + (300 - t) x 0,4/300 + 0,7) to get the final time adjusted score.

#18

I would love to be proven wrong, but as far as I can see it’s linear between the points (I did some checks, but I assume I could be mistaken).

It’s important to note that all the datapoints have a time that is up to a second off (it just gives seconds, and not fractions of seconds).

Let’s just say I have a hell of a lot more datapoints than the ones I’ve told you about. I used these because they’re the obvious references IO used when coming up with the method.

#19

It makes sense to have time breakpoints rather than a pure function if only because IOI probably understands how long missions generally take. “Between zero and five minutes,” “between five and fifteen minutes,” and “longer than fifteen minutes” pretty accurately target the rough expectations that they have about how long it takes to do missions and contracts. The fact that the Time Bonus starts at >100% lends to this as finishing a mission in under a minute is possible and it sort of makes sense to reward that; there’s no logical reason otherwise to make the baseline for 0:00 a 110% multiplier instead of just 100%, as the scores are entirely arbitrary and all that matters is whose is better.

#20

Interesting read. I had noticed this general idea of how the bonus works quite some time ago. Even created a simple contract that i could complete in seconds, then played it several times and “stalled” my exit to varying times to see how it affected the time bonus. I came away with a general understanding of how it works but I didn’t have the math skills to truly flesh it out or experiment with other factors. It’s interesting to see it “exposed.”

And thanks y’all, for making me feel like a drooling, babbling idiot with all your fancy-schmancy mathy stuff. (goofy face emoji - emojis stopped working on my Kindle for some reason)