Back

Distance Measuring

There's no known pixel-based methods to measure distances, and if there were, they would depend on scroll speed. For this reason, the BPM-ms technique is used to measure distances that do not depend on scroll speed or pixels. To do so, one must have a base BPM to calculate the distance.

BPM * time = distance

The unit of time, if you're working with distances by adding them or doing any equation with them, must be the same, but you can use any time unit.

Usual uses include for instance determining the BPM of teleports:

TeleportBPM * TeleportTime = BaseBPM * BaseTime

It likewise works for SVs, given that you interpret SVs as a speed multiplier of a base BPM. In other words

BPM1 / BaseBPM * time1 = BPM2 / BaseBPM * time2

is equivalent to

SV1 * time1 = SV2 * time2

This method of measuring distance is called Scroll-Speed Independant Distance.

To use this equation with a BPM and an SV effect, it suffices to multiply the resulting BPM-ms distance by the SV value:

BPM * SV * time = distanceWithSv

Reasoning

A way to prove this is by supposing that you have a distance equation that has a constant a that converts a number of beats to pixels on the screen. a may be defined in terms of the scroll speed, skin, and any other number of factors.

Since

bpm * time = beats

if time is in minutes, multiplying by a will give you a pixel distance:

a * bpm * time = distance

If you make this distance equal to any other distance, the a will cancel out, thus, our very first equation is a valid way of measuring distance in a map.