Skip to content

The math

There is no fixed maximum distance. Every throw comes from a formula: your aim, your timing and the stone's quality go in, and a list of skip distances comes out. The stone then skips exactly those distances in the world.

Try it

Released in
13 skips · 38.3 blocks
first skip 8.1 blocks
Power factor1from the meter zone
Angle efficiency100%1 − |10 − 10| ÷ 25
Base velocity1.3501 × 1.35
First skip8.11.350 × 1.00 × 6
Every next skip× 0.8until a skip would be shorter than 0.5 blocks

The formula

1. Power comes from where you released on the power meter: 1 in the green, 0.55 in the yellow, 0 in the red.

2. Angle efficiency measures how close your aim was to ideal:

angleEfficiency = 1 − clamp(|idealAngle − pitch| ÷ angleTolerance, 0, 1)

The ideal pitch (idealAngle) is 10°, slightly downward. Efficiency drops to zero 25° (angleTolerance) away from it.

3. Base velocity combines your power with the stone's speed:

baseVelocity = power × qualityVelocityMultiplier(stone)

4. The first skip, where baseDistance is 6 blocks:

firstSkip = baseVelocity × angleEfficiency × baseDistance

5. Every skip after that is decayRate (0.8) times the one before. The throw ends when the next skip would be shorter than minSkipThreshold (0.5 blocks). The number of skips and the total distance fall out of that:

skip[i] = firstSkip × decayRate^i      while skip[i] > minSkipThreshold

A red release, or an aim 25° or more off, gives a first skip of zero, so the stone sinks on contact.

From numbers to motion

The stone is a real projectile with normal gravity and air drag. Each time it touches the water, the mod works out the launch speed that will land it exactly one skip distance further on. Longer skips launch higher, so a good throw starts with big arcs that shrink into quick little hops.

Every number above is a setting. See Configuration.

Released under the MIT License. Stone skipping behaviour adapted from Hezaerd/Skipping-Stones (MIT).