Nadeo tax and other formulas
Moderator: TMPatrol

 speedy pilot
 Posts: 459
 Joined: 18 May 2009 21:37
 Owned TMgames: TMUF,TMNF,TMSX,TMN
 Manialink(s): jadis
 Location: Scotland
Nadeo tax and other formulas
Hi everyone!
You have probably noticed that taxes do not only exist in the real world but also in Trackmania
Whenever you use your coppers to download from manialinks, receive wins from online bets or send ingame messages, there will always be a certain (usually not very high) amount of coppers being deducted and sent to Nadeo. This Nadeo tax is not meant to annoy you but it actually helps stabilise the financial system in Trackmania by avoiding inflation.
The transaction tax varies depending on the amount of coppers that are transmitted. For higher values, such as >10000 coppers, it is close to five per cent.
Although the tax rises with the number of transmitted coppers, the relative amount of the tax decreases and asymptotically approximates 5%.
Let y be the Nadeo tax (in %):
y=5+(250/x)
(x being the number of coppers transmitted)
In conclusion, it is more efficient to transmit high amounts of coppers in few messages
If you are also interested in skillpoints calculation, you can check out these posts:
viewtopic.php?f=42&t=19540&start=495
http://forum.maniaplanet.com/viewtopic. ... ts+formula
Jadis
You have probably noticed that taxes do not only exist in the real world but also in Trackmania
Whenever you use your coppers to download from manialinks, receive wins from online bets or send ingame messages, there will always be a certain (usually not very high) amount of coppers being deducted and sent to Nadeo. This Nadeo tax is not meant to annoy you but it actually helps stabilise the financial system in Trackmania by avoiding inflation.
The transaction tax varies depending on the amount of coppers that are transmitted. For higher values, such as >10000 coppers, it is close to five per cent.
Although the tax rises with the number of transmitted coppers, the relative amount of the tax decreases and asymptotically approximates 5%.
Let y be the Nadeo tax (in %):
y=5+(250/x)
(x being the number of coppers transmitted)
In conclusion, it is more efficient to transmit high amounts of coppers in few messages
If you are also interested in skillpoints calculation, you can check out these posts:
viewtopic.php?f=42&t=19540&start=495
http://forum.maniaplanet.com/viewtopic. ... ts+formula
Jadis
Last edited by Queen Jadis on 29 Aug 2014 08:55, edited 1 time in total.
 eXtreme34
 TMPatrol
 Posts: 2533
 Joined: 28 Aug 2011 19:25
 Owned TMgames: All. Just all.
 Manialink(s): extreme34
 Location: dtc :3
 Contact:
Re: Nadeo tax
I want to add something, as the guy said on the maniaplanet forum
You said :
That means n=(x+100)/(y+100) and x=(y+100)*n100. But for the number of players it's the right formula.
I have to add that this formula can show the number of SP you can take if you do 0.01 (but that's another story )
EDIT : plus I didn't know what was the tax formula. One always learns something
You said :
I think it's not (x100)/n=y but rather (x+100)/n100=y I tried on many tracks and it always worked, even for non top 10 ranks.Jadis on the other topic wrote:That means for rank n:
(x100)/n=y
(y being the SP of n)
That means n=(x+100)/(y+100) and x=(y+100)*n100. But for the number of players it's the right formula.
I have to add that this formula can show the number of SP you can take if you do 0.01 (but that's another story )
EDIT : plus I didn't know what was the tax formula. One always learns something

 speedy pilot
 Posts: 459
 Joined: 18 May 2009 21:37
 Owned TMgames: TMUF,TMNF,TMSX,TMN
 Manialink(s): jadis
 Location: Scotland
Re: Nadeo tax
Thank you for correcting this. This formula can be applied on any track provided that the records of rank 1 or n are unequaled. In practice, it may be not 100% precise though because TM only displays integerseXtreme34 wrote:I think it's not (x100)/n=y but rather (x+100)/n100=y I tried on many tracks and it always worked, even for non top 10 ranks.
That means n=(x+100)/(y+100) and x=(y+100)*n100.
The same applies for my Nadeo tax formula. It is precise in itself but in TM you only have the approximated value. I also have to add that, in theory, the nadeo tax would be pracically the same as 5% if the number were only high enough. However, the lowest percentage possible ingame is 5.0005% (due to the monthly limitation of copper transactions).
Cheers
 eXtreme34
 TMPatrol
 Posts: 2533
 Joined: 28 Aug 2011 19:25
 Owned TMgames: All. Just all.
 Manialink(s): extreme34
 Location: dtc :3
 Contact:
Re: Nadeo tax
Equality shows the skillpoints you can have with 0.01 (just divide the WR amount +100 by the rank shown ingame and then substract 100 )
And the +100 explains why you CAN have 0 SP when the map is unfinished (because you're last of course ^^) so, if n is the number of players who have played (not necessarily finished) the map in official, (you have x the number of SP for the world record), the formula would be the following one without the 100 at end :
x=100n100
(x+100)/n=(100n100+100)/n=100n/n=100 potential SP for the last place.
Because an unfinished map must bring nothing, so 100 at the end
Did you follow ? Or am I unclear (I hope I ain't )
And the +100 explains why you CAN have 0 SP when the map is unfinished (because you're last of course ^^) so, if n is the number of players who have played (not necessarily finished) the map in official, (you have x the number of SP for the world record), the formula would be the following one without the 100 at end :
x=100n100
(x+100)/n=(100n100+100)/n=100n/n=100 potential SP for the last place.
Because an unfinished map must bring nothing, so 100 at the end
Did you follow ? Or am I unclear (I hope I ain't )
 Scorm
 highway camper
 Posts: 2
 Joined: 05 Nov 2012 13:29
 Owned TMgames: TMSX, TMU
 Manialink(s): Scorm
Re: Nadeo tax
The formula proposed by Jadis is an okay approximation of the InGame Messaging Tax with the downside of being more and more false the lower your "coppers transmitted" are.
He does end up with the correct conclusion that the higher the coppers sent value is, the more the tax lowers down to 5%.
Indeed I have tested some coppers messaging up to about 250k at which point I cannot go higher. Here is the data sheet that I will use to explain the exact formula.
First of all we notice that for a regular message (no coppers sent) the cost is 2 coppers. But we do know Nadeo always take at least 5% of any copper transaction (not the message cost itself) and that what they take are always integers. In the data sheet we can see that low values of coppers sent gives us a 3 coppers tax each times. This means we pay the 2 coppers for the message and a Rounded Up 5% of the coppers we want to send : 1 copper since the values are low (it is not possible otherwise, for example with 5 coppers sent : 5% of 5 is 0.25 so Nadeo either takes 0 cp or 1 cp from you but 0 would mean they take 0% therefore making one of the conditions above not verified ; it then adds the 2cp price of the message itself).
Let x be an integer (number of cp sent) :
Number of cp payed = roundup(x*1.05)+2
The tax is nothing more than the cp payed  cp sent :
Tax = roundup(x*1.05)+2x
= ⌈x*1.05⌉+2x
= ⌊x*1.05 +1⌋+2x
(This is the column D of the sheet which always match the experimental taxes in column C)
Now this is where it starts to get interesting : the conditions of Nadeo gives us a function with an Integer Part : ⌊⌋
This means that the tax = f(coppers sent) will have a stairs like shape. These "stairs" will also appear in the Tax function in % because it depends on the previous one.
By using an easy crossmultiplication :
tax(coppers)/tax(%) = sent(coppers)/sent(%) < this is 100 because it is all the cp we want to send.
so tax(%) = (100*tax_cp)/sent_cp
But we do have tax_cp we determined just before ; and sent_cp is nothing more than x.
tax(%) = (100*( ⌊x*1.05 +1⌋+2x ))/x
We end up with an inverse and stairs type of function in green here : http://i.imgur.com/NpLzAn3.jpg
The function in red is the one Jadis proposed which approximates our result better and better as the cp_sent gets higher the stairs get smaller and the scatter also.
However in the low transactions the average error keeps getting bigger as we approach 1.
I hope this showed that games uses some rounding quite a lot, also known as floor() and ceiling() programming functions in order to give us accessible integers numbers in their games
He does end up with the correct conclusion that the higher the coppers sent value is, the more the tax lowers down to 5%.
Indeed I have tested some coppers messaging up to about 250k at which point I cannot go higher. Here is the data sheet that I will use to explain the exact formula.
First of all we notice that for a regular message (no coppers sent) the cost is 2 coppers. But we do know Nadeo always take at least 5% of any copper transaction (not the message cost itself) and that what they take are always integers. In the data sheet we can see that low values of coppers sent gives us a 3 coppers tax each times. This means we pay the 2 coppers for the message and a Rounded Up 5% of the coppers we want to send : 1 copper since the values are low (it is not possible otherwise, for example with 5 coppers sent : 5% of 5 is 0.25 so Nadeo either takes 0 cp or 1 cp from you but 0 would mean they take 0% therefore making one of the conditions above not verified ; it then adds the 2cp price of the message itself).
Let x be an integer (number of cp sent) :
Number of cp payed = roundup(x*1.05)+2
The tax is nothing more than the cp payed  cp sent :
Tax = roundup(x*1.05)+2x
= ⌈x*1.05⌉+2x
= ⌊x*1.05 +1⌋+2x
(This is the column D of the sheet which always match the experimental taxes in column C)
Now this is where it starts to get interesting : the conditions of Nadeo gives us a function with an Integer Part : ⌊⌋
This means that the tax = f(coppers sent) will have a stairs like shape. These "stairs" will also appear in the Tax function in % because it depends on the previous one.
By using an easy crossmultiplication :
tax(coppers)/tax(%) = sent(coppers)/sent(%) < this is 100 because it is all the cp we want to send.
so tax(%) = (100*tax_cp)/sent_cp
But we do have tax_cp we determined just before ; and sent_cp is nothing more than x.
tax(%) = (100*( ⌊x*1.05 +1⌋+2x ))/x
We end up with an inverse and stairs type of function in green here : http://i.imgur.com/NpLzAn3.jpg
The function in red is the one Jadis proposed which approximates our result better and better as the cp_sent gets higher the stairs get smaller and the scatter also.
However in the low transactions the average error keeps getting bigger as we approach 1.
I hope this showed that games uses some rounding quite a lot, also known as floor() and ceiling() programming functions in order to give us accessible integers numbers in their games
Last edited by eXtreme34 on 28 Aug 2014 17:13, edited 1 time in total.
Reason: Don't resize your posts uselessly ;)
Reason: Don't resize your posts uselessly ;)
 eXtreme34
 TMPatrol
 Posts: 2533
 Joined: 28 Aug 2011 19:25
 Owned TMgames: All. Just all.
 Manialink(s): extreme34
 Location: dtc :3
 Contact:
Re: Nadeo tax (+ Skillpoints :D)
Really well explained
I think there's nothing more to add Didn't believe mathematics were so present in TrackMania (I was a bit sure about that when I discovered the formula for SkillPoints, which I can improve of course ).
But yeah one has to consider integers before all, even with SkillPoints there's no number with commas.
If we add this, the SkillPoints formula is this one. First of all, with N the number of players which TRIED the track in official :
Let f be an integer of the WR's SkillPoints on a given track :
f=(N1)*100
Now appear the integers. First of all to determine the SkillPoints x for a given rank r (still an integer) :
x=rnd((f+100)/r)100=rnd((f+100)/r100) (rnd function is really important, it's not the integer part function this time )
This gives for rank r :
r=rnd((f+100)/(x+100))
And for the first (here the formula is more complicated because of 00 thing, colors to prevent difficulties with parenthesis ) :
f=rnd(((x+100)*r100)/100)*100
NB : the reason of /100, then rnd then *100 is that the number of SkillPoints will always finish with 00
I think there's nothing more to add Didn't believe mathematics were so present in TrackMania (I was a bit sure about that when I discovered the formula for SkillPoints, which I can improve of course ).
But yeah one has to consider integers before all, even with SkillPoints there's no number with commas.
If we add this, the SkillPoints formula is this one. First of all, with N the number of players which TRIED the track in official :
Let f be an integer of the WR's SkillPoints on a given track :
f=(N1)*100
Now appear the integers. First of all to determine the SkillPoints x for a given rank r (still an integer) :
x=rnd((f+100)/r)100=rnd((f+100)/r100) (rnd function is really important, it's not the integer part function this time )
This gives for rank r :
r=rnd((f+100)/(x+100))
And for the first (here the formula is more complicated because of 00 thing, colors to prevent difficulties with parenthesis ) :
f=rnd(((x+100)*r100)/100)*100
NB : the reason of /100, then rnd then *100 is that the number of SkillPoints will always finish with 00
 Scorm
 highway camper
 Posts: 2
 Joined: 05 Nov 2012 13:29
 Owned TMgames: TMSX, TMU
 Manialink(s): Scorm
Re: Nadeo tax
Thanks for the kind words.
You might be able to change rnd with ceiling() function I believe but that is simply to have the programming code aspect of it, nothing major.
I am not convinced that decompiling TM's code will give us access to the real functions because it would seem that the game sends server queries each time it wants information on coppers, skillpoints and ladder points : but we can figure them out anyways
My time spent in solo mode is pretty low now compared to the rest but I might take an interest in the SP formulas ^^
You might be able to change rnd with ceiling() function I believe but that is simply to have the programming code aspect of it, nothing major.
I am not convinced that decompiling TM's code will give us access to the real functions because it would seem that the game sends server queries each time it wants information on coppers, skillpoints and ladder points : but we can figure them out anyways
My time spent in solo mode is pretty low now compared to the rest but I might take an interest in the SP formulas ^^
Last edited by eXtreme34 on 28 Aug 2014 17:13, edited 1 time in total.
Reason: Don't resize your posts uselessly ;)
Reason: Don't resize your posts uselessly ;)

 speedy pilot
 Posts: 459
 Joined: 18 May 2009 21:37
 Owned TMgames: TMUF,TMNF,TMSX,TMN
 Manialink(s): jadis
 Location: Scotland
Re: Nadeo tax and other formulas
As there seems to be some interest in finding Trackmania formulas, I decided to rename the thread so you can post your observations and mathematical proofs here.
I think there are plenty of unknown formulas in TM that we have not even thought about. For example: How do you calculate points in Stunt mode? or: How does acceleration work?
Maybe someone will take the challenge
See you online,
Jadis
I think there are plenty of unknown formulas in TM that we have not even thought about. For example: How do you calculate points in Stunt mode? or: How does acceleration work?
Maybe someone will take the challenge
See you online,
Jadis
Re: Nadeo tax and other formulas
Thats a great topic, i would love to know about the stunt one tho