Documentation

How the numbers are built

Every figure on this site comes from the public TrackMania Exchange API and a single scoring formula. This page states both, so nothing has to be taken on trust.

The credit rule

A map counts as finished the moment the first replay is uploaded for it. The author of that replay is credited, and nobody else — the second person to drive a map gets nothing here.

That rule is deliberately strict. The point of the project is to leave no map undriven, so what matters is who took a map off the untouched list, not who set the fastest time on it. It also makes the record reconstructible: the first replay on a map never changes, so the same archive can be rebuilt from the API at any time and must come out identical.

Maps whose first replay predates 24 Jun 2024 are not credited to anyone — the project cannot claim finishes that happened before it started watching. They still count as complete on the exchange.

Where the data comes from

Catalogue scan
/api/tracks — every public track with its metadata, plus a second pass over inhasrecord=0 to see which ones are still open.
Finish attribution
/api/replays — for each map that just fell off the open list, its full replay list is paged and the oldest replay wins.
Names
/api/users — display names are refreshed from the API; every older spelling is kept as an alias so a rename never breaks a profile.

All five exchanges speak the same API, so one client and one database schema serve all of them. Timestamps are TMX server time (UTC) and are shown unconverted.

Scoring

The one formula behind every ELO number

Finishing a five-second PressForward map is not the same achievement as finishing an Expert Trial map, so each map carries a score. It is a product of four factors on a base of 10 points:

score = round(10 × style × difficulty × length × bonus)

Style — from the map’s tags

A map takes the factor of its highest tag — they do not stack. A Trial+RPG map scores as RPG, not as both: tags say what a map is, not how many things it is, and stacking rewarded tagging over driving.

TagFactor
RPG1.70
Trial1.50
Maze1.30
LOL1.30
Endurance1.30
Altered Nadeo1.25
Offroad1.20
Tech1.20
Stunt1.15
SpeedTech1.15
Multilap1.10
Grass1.10
Transitional1.10
FullSpeed1.05
Story1.05
Race1.00
Speedfun1.00
Nascar0.95
PressForward0.55
Untagged1.00

Difficulty — the TMX rating

The heaviest factor, spanning 0.603.00 across the four ratings TMX actually assigns. Lunatic and Impossible are in the table for exchanges that use them; on TMNF no map carries either.

RatingFactor
Beginner0.60
Intermediate1.00
Advanced1.80
Expert3.00
Lunatic4.60
Impossible6.50
Unrated1.00

Length — from the TMX length bucket

A flat ladder from 0.80 to 2.00 over the length bucket TMX assigns every map, with the ~45-second bucket neutral at 1.00. The bucket is used rather than the raw author time because the author time cannot be trusted — the archive holds negative values, integer overflows and an eleven-day outlier. A map that arrives without a bucket is placed by its author time instead. The ladder is deliberately gentle: a map twice as long is harder, but not twice as hard, and a lapped map should not be paid twice for its laps.

Author timeFactor
up to 20 s0.80
20-37 s0.90
37-51 s1.00
51-66 s1.08
1:06-1:211.15
1:21-1:361.22
1:36-1:511.28
1:51-2:101.34
2:10-2:351.42
2:35-3:061.50
3:06-3:361.57
3:36-4:151.64
4:15-5:301.75
5:30 and over2.00

Bonus — the awkward cases

  • Requires Unlimiter: ×1.15

The formula is deterministic and lives in one file, so the whole archive can be rescored from stored metadata without touching the API. Every map page shows its own factors — open any map to see the arithmetic.

Update cycles

What updates when

Every scheduled job

All times are server time (UTC)
RunsJobWhat it refreshesSource
Hourly, :07Incremental syncNew finishes and who finished them, the open-map count, today’s burn-down row, and the aggregates the leaderboards and charts readTMX API
Hourly, :07Exclusion syncThe community cheated-map list, so an accepted report stops counting within the hourGoogle Sheet
Daily, 09:00Discord summaryThe morning post: yesterday’s finishes, pace, players and the other exchangesThis database + sheets
Weekly, Mon 03:10Catalogue crawlEvery track on the exchange — new uploads, retagged maps, changed difficulty ratings, deleted mapsTMX API
Weekly, Mon 03:10Names & rescorePlayer display names, and every map score recomputed from stored metadataTMX API / local
Weekly, Mon 03:10Gap auditRe-checks the last 10 days against the exchange and repairs anything the hourly diff could not seeTMX API
Every 10 sGame server statusThe live page: current map, who is on it, checkpoint progressGame controller
On demand“Who got there first”A player’s full replay list, fetched only when the button is pressed and kept for an hourTMX API

How fresh is a page? Everything except the live server view comes from the database, so it is at most one hour old, usually less. Computed leaderboards and charts are additionally held in memory for five minutes, but every sync clears that cache, so it never serves anything older than the last sync.

Why the hourly diff is not enough on its own. It only notices maps that were open at the previous scan. If nothing was watching for a while, a map that fell in that gap already counts as driven by the next scan and would never be credited to anyone. The weekly audit walks the exchange’s recent-activity list and repairs exactly that.

What the derived numbers mean

ELO
The sum of the scores of every map a player finished. It rewards both volume and difficulty.
ELO / Map
Their average map score — a measure of what kind of maps they go after, not how many.
Rating
ELO/map shrunk toward the field average until a player has 50 maps. Without it, someone with three RPG maps would top the ELO/map board over a player with a thousand.
Consistency
The share of days since a player’s first finish on which they finished at least one map.
Pace and the projected finish
Maps left divided by the trailing 7-day mean. It assumes the pace holds and that no new maps are uploaded, so treat it as a direction, not a date.

Coverage

ExchangeMapsOpenCredited
TMNF-X621,314667174,089
TMUF-X242,84031,72134,234
TMN-X141,20269,6102,566
TMS-X33,9879,1612,139
TMO-X25,9115,7972,571

“Credited” counts finishes this project attributed to a player. “Maps” and “Open” come from the exchange itself, so they cover the whole site, including everything driven before tracking began.

Maps that cannot be finished honestly are left out of both sides of the fraction. That list is maintained by the community on the cheated map sheet, and this site re-reads it every hour. All project resources.