As our work continues on DiabloNut more and more of the game mechanics are revealing themselves. Dorjan has been hard at work unravelling and piecing together the game data to present a coherent article on each of these mechanics.

In this first article he looks at movement speed, how it is calculated, the movement scaler and where it’s capped for you.

This article and all subsequent ones will be archived in DiabloWiki.Net.

The game engine uses lots of different settings to decide how fast you move. One in particular though is adjusted with buffs on items and others are adjusted with slows and resistances.

**What is Movement Scalar?**

Movement Scalar is the base stat used in Diablo III which is used to judged your walking rate amongst other things. This is the stat adjusted by the affixes you get on items. The formulae used in Diablo III are as follows:

**Calculating the Heroes Movement Rates:**

Stats used:

- MovementScalar (Fixed per Hero class)
- WalkingRate (Fixed per Hero class)
- StrafingRate (Fixed per Hero class)
- SprintingRate (Fixed per Hero class)
- RunningRate (Fixed per Hero class)
- MovementBonusTotal (Starts at 0)
- MovementScalarReductionPercent
- MovementScalarReductionResistance
- MovementScalarUncappedBonus

First step is to calculate the Movement Scalar Total which is done by the following formula:

MovementScalarTotal = MovementScalarCappedTotal + MovementScalarUncappedBonus

This basically means you can have a capped value which cannot go above a certain amount and a bonus which is totally uncapped. Lets look at the capped total:

MovementScalarCappedTotal = Min(1.25, MovementScalarSubtotal)

Basically this means you take whatever is lowest, 1.25 or the MovementScalarSubTotal.

So let’s work out the MovementScalarSubtotal:

MovementScalarSubtotal = Max(0.1, MovementScalar) * (1 + MovementBonusTotal) * (1 – MovementScalarReductionPercent * (1 – Min(1, MovementScalarReductionResistance)))

OK, that’s a bit much, so lets break it down:

Calc1 = 1 – Min(1, MovementScalarReductionResistance)

Min means take the lowest value, so the best Slow Resistance you can have is 1 (100%). This will be combined with the Reduction Percent Below:

Calc2 = (1 – MovementScalarReductionPercent * Calc1 )

OK, so ReductionPercent (lets say a slow of 0.60 [caltrops]) multiplied by the Resistance will be your total slowed amount, again reversed. (example: 1-0.6 = 0.4 with no resistance).

Calc3 = (1 + MovementBonusTotal)

MovementBonusTotal is unknown at present as the Scalar is used by affixes (items). Maybe skills will use this instead of the Scalar? So for now, we’ll leave this at 1.

Calc4 = Max(0.1, MovementScalar)

Now this is the one we’ve been waiting for, just how does the MovementScalar change the speed of our character? 0.1 is the default, so anything above that is a perk!

- (your bonus movement) * 1 * ( 1 – [slow %] * ( 1 – [Slow Resistance]))
- Default: 0.1 * 1 * 1 = 0.1; This would be full base speed.
- Slowed by Caltrops with no Resistance: [0.1] * 1 * ( 1 – [0.6] * (1 – [0]) ) = 0.04; You’re slow!
- Affix Run1 on your Axe: [0.15] * 1 * ( 1 – [0] * (1 – [0]) ) = 0.15; 5% increase!
- Affix Run1 on your Axe but slowed with Caltrops: [0.15] * 1 * ( 1 – [0.6] * (1 – [0]) ) = 0.06; (you’re 40% slower than someone who has no buffs or debuffs)
- Affix Run1 on your Axe but slowed with Caltrops but with 50% resistance: [0.15] * 1 * ( 1 – [0.6] * (1 – [0.5]) ) = 0.105; (Still faster than a normal character by 0.5%!)

Now back to the original formula:

MovementScalarCappedTotal = Min(1.25, MovementScalarSubtotal)

So we now know the best bonus is 1.25 which is the same as 1150% in game bonus to run speed! No point going above that then guys and girls, 1150% is your limit from this source! Of course there is the UncappedBonus, but at the moment we’ve not figured out where this is used…

MovementScalarTotal = MovementScalarCappedTotal + MovementScalarUncappedBonus

This is then used for the following Formulae:

- WalkingRateTotal = WalkingRate * MovementScalarTotal
- StrafingRateTotal = StrafingRate * MovementScalarTotal
- SprintingRateTotal = SprintingRate * MovementScalarTotal
- RunningRateTotal = RunningRate * MovementScalarTotal

Lets give WalkingRate a value of 100.

Basic speed will be calculated as: 100*0.1 = 10;

With Run1: 100*0.15 = 15;

With Caltrops: 100*0.04 = 4;

So as you can see the MovementScalar is just as it says on the tin, a % movement speed increase with a cap of 1150% on the speed gains from affixes!

Find Movement Scaler already archived in DiabloWiki.Net.

With thanks to OmniSliver and thendcomes for pointing out I should never do maths whilst ill and distracted!