| Time (s) | Window (frames) | ms |
|---|
23.2 - 81.8
Each input at L*: its pass probability p, the chance of reaching it
alive reach, and — since a run is scored on its own — times shown in both seconds and % of
the scored length. The weakest inputs (lowest p) are where the level fights back.
| # | Time (s) | Time (%) | Window | ms | p (pass) | reach |
|---|
Each input i has a window of Nₕ frames, so its duration is
wₕ = Nₕ / fps seconds. A player with precision L (bigger = sharper;
L = 1/σ of their timing error in seconds) clears that input if their timing lands inside the
half-window, giving pₕ = erf( (½·wₕ·L) / √2 ).
Completion probability P(C) = ∏ pₕ. Reach probability
rₕ = ∏₃₂ₓₖ p₋. Expected time per attempt
E[T₉] = tₙ·P(C) + ∑ tₕ·rₕ·qₕ (qₕ=1−pₕ,
tₙ = level length), and expected time to complete E[T╕] = E[T₉] / P(C).
The tool bisects on L for L*, where E[T╕] equals your target time.
It also shows σ = 1/L* in milliseconds.
Histogram — you give counts per frame-window size; the tool assumes inputs are evenly spaced across the level and evenly interleaved by difficulty (no clustering). With modifiers off, the result depends only on the histogram, level length and target.
Manual list — you give each input's exact time and window, so ordering, gaps and per-input positions are taken directly from your data (nothing is scattered evenly). The Seconds / % switch reads times either as seconds or as a percentage of the level length, where % grows evenly across the level (50% = halfway in time).
Turn on Calculate a run and give a range like 23.2 - 81.8 to score only the inputs inside
it. The slice is treated as its own level: its inputs are re-based so the run starts at 0 and its length becomes
to − from. The range is read in whatever the Seconds / % switch is set to.
Each enabled modifier multiplies an input's effective window before the probability is taken: Nerve
e^(−k·tₕ), Fatigue e^(−k·i), CPS
(4/max(1,2c))^k where c is the local clicks/sec from the gap to the previous input.
Fatigue and CPS are marked BROKEN? and all three are off by default; the constants are
tunable placeholders because the NaNDL site does not publish its calibrated values.