Live Split Timer
A LiveSplit-style speedrun timer for Factorio 2.0 / Space Age. It tracks the
total playtime and the time between configured milestones (triggered by
researched technologies, first visit to a planet, or scripted events such as a
rocket launch), comparing every split against your Personal Best.
Features
- On-screen HUD with a drag-and-drop window, collapsible view, and a progress
bar showing how many milestones are already done. - Expanded table view: one row per milestone with icon, name, split time, and
the +/- delta versus your PB (green for ahead, red for behind). - Dynamic row ordering: completed milestones float to the top in the order
you actually reached them, while pending ones stay in the configured order.
Readable under any planet routing — including abandoning a planet and
coming back later. - Collapsed view: only the current (next) milestone, for minimal distraction
during an active run. - Automatic scroll with focus on the current split when the milestone list is
longer than fits in the window. - Personal Best is built incrementally — the best time for each milestone is
saved the moment it is beaten, even if the run is never finished. - Per-milestone toggles, timer refresh interval, and PB reset available
straight from the in-game mod settings. - Full Polish and English localisation; no hard-coded user-facing strings.
- RCON interface for external tools: read current status, export PB, import PB
from JSON, reset PB, submit the current run, or start a new run.
Milestones
The default milestone list covers 30 trigger technologies across Nauvis,
Space, and every Space Age planet (Fulgora, Gleba, Vulcanus, Aquilo). Adding a
new milestone only requires a single entry in config.lua — no locale edits
needed.
File locations
All persistent data is stored under Factorio's script-output directory.
On Windows that is %APPDATA%\Factorio\script-output\speedrun-timer\:
pb.json— live best-segment Personal Best, updated every time you beat a
milestone's previous best. This is what PB-delta in the HUD is compared
against at the start of every run.current.json— mirror of the current run's splits, refreshed on every
milestone. Intended for live integrations (overlays, stream widgets).runs.json— append-only history of completed runs (one JSON object per
line), written when the final milestone is reached or when the run is
submitted manually via RCON.
PB is also carried inside the save file, so it survives across mod updates.
The pb.json file is a cross-save fallback: copying it between installs (or
re-importing through the load_pb RCON call) transfers your Personal Best.
Changes
- 0.2.6 — Expanded HUD now orders split rows by when they were actually
reached: completed milestones float to the top in chronological (tick)
order, pending ones stay in the configured declaration order. Makes mixed
planet routing readable and still supports abandoning a planet and coming
back later. - 0.2.4 — Fixed a hard crash on
on_initwhen the Factorio build does not
exposehelpers.read_file. The check is now wrapped inpcallso the
best-effort PB reload silently degrades instead of breaking new saves.
Addedrelease.batfor loose, unzipped releases. - 0.2.3 — Current-run splits mirrored to
current.jsonon every split for
live-integration use. - 0.2.2 — Three-level PB model:
storage.milestones(current run),
storage.pb(live best-segments),storage.pb_reference(frozen snapshot
used for GUI delta). Delta no longer collapses to +0.0 when PB updates
mid-run. - 0.2.1 — Milestone list switched to 30 trigger technologies spanning
Nauvis base, Space Age research, and every Space Age planet. Previous Space
Age completion route is kept as a commented-out block inconfig.lua. - 0.2.0 — Initial public release: HUD window, milestones, PB persistence,
RCON interface, Polish and English localisation.