One of the most important features in my own auto-splitter is automatically saving every run, including realtime timestamps for each start/stop/split/reset event (everything else could be calculated from that, as long as you aren't missing any of the "fencepost" events that bound segments). In principle as long as all the data is present, somebody could do whatever analysis they want.
I store my data in one JSON file per run (with atomic file writes to update a run after each split/reset). Separate files prevents the data from growing unbounded, and allows me to easily delete invalid runs (accidentally recording practice as if it's a run, etc).
In a Luanti context, mod_storage could be a decent place to store these too, though you'll probably want some kind of export feature, to JSON or CSV or something easy to analyze.
It's very common to have per-split comparison times, such as:
- that split's time in the personal best run
- that segment's best "gold" time
- averages, quantiles, etc
and, while you can cache and "online calculate" these values, it's good to be able to regenerate them from the full data, in case the runner needs to do some data cleanup.
One of the most important features in my own auto-splitter is automatically saving every run, including realtime timestamps for each start/stop/split/reset event (everything else could be calculated from that, as long as you aren't missing any of the "fencepost" events that bound segments). In principle as long as all the data is present, somebody could do whatever analysis they want.
I store my data in one JSON file per run (with atomic file writes to update a run after each split/reset). Separate files prevents the data from growing unbounded, and allows me to easily delete invalid runs (accidentally recording practice as if it's a run, etc).
In a Luanti context, mod_storage could be a decent place to store these too, though you'll probably want some kind of export feature, to JSON or CSV or something easy to analyze.
It's very common to have per-split comparison times, such as:
and, while you can cache and "online calculate" these values, it's good to be able to regenerate them from the full data, in case the runner needs to do some data cleanup.