Motion Mechanics #1 (Movement Speed)
Guide

This is the first of a series of posts that focuses on explaining the science of the motion of different entities and stats which sideeffects can lead to a change in velocity.

Definitions and Conventions

In order to can talk about speeds in general we need to establish a measuring system of length and time. An intuitive choice for length would be the length of 1 grid square, also known as 1 grid unit, as seen in the background. For time we simply use the standart unit of 1 second.
Unit 	Meaning
1 gu 	1 grid unit
1 s 	1 second

An example : If an object travels 3 grid units in 5 seconds it has a speed of 3/5 or 0.6 gu/s

An useful extension of this units is to include the more fundamental time known as frames/loops and length which I like to call 1 diep unit. A frame/loop is 0.04 seconds long and 1 diep unit is 1/50th the length of a grid square.
Unit 	Meaning 	Conversion
1 du 	1 diep unit 	50 du = 1 gu or 1 du = 0.02 gu
1 x 	1 frame / loop 	25 x = 1 s or 1 x = 0.04 s

Note : The conversion between gu/s and du/x is 1 gu/s = 2 du/x

Unaccelerated Entities

Every moving object experiences friction in the game. At every frame an unaccelerated object losses 10% of the speed it had on the previous frame. This is equivalent of multiplying the previous speed by 0.9 to get the speed for the next frame.

An example : Let's assume an object travels with constant 10 du/x across the map. At the moment it decides to not accelerate anymore would turn it into an unaccelerated object which speeds over time would look this.
Number of Frames/Loops after Deceleration began 	Speed / Veloctiy 	Conversion
0 	10 du/x 	V(0)
1 	9 du/x 	V(1) = 0.9 * V(0)
2 	8.1 du/x 	V(2) = 0.9 * V(1)
3 	7.29 du/x 	V(3) = 0.9 * V(2)
4 	6.561 du/x 	V(4) = 0.9 * V(3)
5 	5.9049 du/x 	V(5) = 0.9 * V(4)
6 	5.31441 du/x 	V(6) = 0.9 * V(5)
7 	4.782969 du/x 	V(7) = 0.9 * V(6)
8 	4.3046721 du/x 	V(8) = 0.9 * V(7)
9 	3.87420489 du/x 	V(9) = 0.9 * V(8)
10 	3.4866784401 du/x 	V(10) = 0.9 * V(9)

V(0) : velocity at the 0th frame ; V(1) : velocity at the 1st frame ; and so on

This ominous 0.9 is called the constant of friction!

What this table shows us is that with every frame the velocity approach closer and closer to 0 but never actually reaches 0. So even a standing tank might still move into one direction. But of course if the value for speeds gets too small to handle it gets set 0 but in theory it would never quite reach it.

Accelerated Entities

Like for unaccelerated objects the constant of friction also affect accelerated object but a bit differently. The game apllies the acceleration part first and then calculates the velocity for the next frame before applying the constant of friction to the velocity. It cycles through this system once every frame.

Acceleration, Velocity, Constant of Friction (Deceleration)

The acceleration of an object has the unit du/x² and represent the change in speed on the first frame or if there would be no friction at all.

Note : Friction is the reason objects have top speeds and can't accelerate forever with the starting acceleration. A tank has reached its top speed when 10% of its current speed is equal to its acceleration.

An example : Let's take a lvl 1 tank with 0 du/x. It has an acceleration of 2.55 du/x² meaning it gains 2.55 du/x per frame if if there would be no friction. Its corresponding velocities look like this
Number of Frames/Loops after Acceleration began 	Speed / Veloctiy 	Conversion
0 	0 du/x 	V(0)
1 	2.55 du/x 	V(1) = 0.9 * V(0) + 2.55
2 	4.845 du/x 	V(2) = 0.9 * V(1) + 2.55
3 	6.9105 du/x 	V(3) = 0.9 * V(2) + 2.55
4 	8.76945 du/x 	V(4) = 0.9 * V(3) + 2.55
5 	10.442505 du/x 	V(5) = 0.9 * V(4) + 2.55
6 	11.9482545 du/x 	V(6) = 0.9 * V(5) + 2.55
7 	13.30342905 du/x 	V(7) = 0.9 * V(6) + 2.55
8 	14.52308615 du/x 	V(8) = 0.9 * V(7) + 2.55
9 	15.62077753 du/x 	V(9) = 0.9 * V(8) + 2.55
10 	16.60869978 du/x 	V(10) = 0.9 * V(9) + 2.55

Note : It's basically like the deceleration table but in the decelarion table the acceleratio part was 0.

Explanation : Remember the cycle → Acceleration, Velocity, Constant of Friction (Deceleration)

Since the tank has a velocity of 0 du/x the next thing the game does is to apply the constant of friction (0.9). But since 0.9 * 0 = 0 it changes nothing. Next is applying the acceleration of 2.55 du/x which gives us a new velocity of 2.55 du/x which the game applies cause after acceleration follows velocity. And if you repeat the cycle you get the list above.

Top Speed and Movement Speed Equation

The top speed of an object is 10 times its acceleration.

Example : The lvl 1 tank would have a top speed of 10 * 2.55 du/x = 25.5 du/x or 12.75 gu/s

Since all tanks are created equally in terms of movement speed we can find one movement speed equation which describes all of them. The top speed of an tank depends on the points spent in movement speed and on the level. The higher the level the slower the tank.

By testing in 2tdm with various builds at different levels you get following equation.

    in terms of du/x : Top Speed = 10 * 2.58825 * 1.07^(movement speed points) / 1.015^(level) or 10 * 2.55 * 1.07^(movement speed points) / 1.015^(level - 1)

    in terms of gu/s : Top Speed = 5 * 2.58825 * 1.07^(movement speed points) / 1.015^(level) or 5 * 2.55 * 1.07^(movement speed points) / 1.015^(level - 1)

Examples :
Level 	Movement Speed Points 	Calculation 	Result
1 	0 	5 * 2.58825 * 1.070 / 1.0151 	12.75 gu/s
10 	7 	5 * 2.58825 * 1.077 / 1.01510 	11.1510511... gu/s
15 	0 	5 * 2.58825 * 1.070 / 1.01515 	10.3510783... gu/s
15 	7 	5 * 2.58825 * 1.077 / 1.01515 	16.6215698... gu/s
30 	0 	5 * 2.58825 * 1.070 / 1.01530 	8.27932555... gu/s
30 	7 	5 * 2.58825 * 1.077 / 1.01530 	13.2947876... gu/s
45 	0 	5 * 2.58825 * 1.070 / 1.01545 	6.622231... gu/s
45 	7 	5 * 2.58825 * 1.077 / 1.01545 	10.6338559... gu/s

Note : For each point in movement speed your acceleration and with it your top speed increases by 7% and you lose 1.5% for every newly reached level. Both of this facts make movement speed the second stat in the game, after reload, to behave exponetially rather than linear.

Fun facts

    A lvl 1 tank is 1.9253... times (92.53% for all of you who like percentages) faster than a lvl 45 tank with equal points in movement speed.

    A tank with 7 movement speed is 1.6057... times (60.57%) faster than a tank with 0 movement speed.

    All tanks need the same amount of time to reach the same percentage of their respective top speed.

    The fastest tank without any recoil is a lvl 8 with max movement speed.

Credits

Very huge respect and credit to u/cx_diep aka CX for finding all of this out and telling me how it works. I only tested all the speeds in 2tdm to see if this holds up and matches the theoretical results but CX did most of the work for finding this equation.

TL;DR Movement speed is exponential and later stat points are overall more valuable