Skip to content

Records vs Finishes

This is the most important distinction on the platform, and the one that most often gets used wrong. A finish and a record are not the same thing, and they do not come from the same place.

The short version

Finish Record
What it is Every time a player crosses the finish line A player's best online time on a map
How many per player/map Many (every attempt that finishes) One (their best), per event
Includes offline / imported times? Yes No — online only
Use it for Finish counts and history Best times, ranks, world records, leaderboards
Stored in The Finish table The Record ledger (→ mv_map_rankings)

If you remember one rule:

The one rule

Never compute a best time, a rank, or a world record from Finish rows. Finish includes offline and imported times with no flag to tell them apart. Best-times, ranks, and WRs come only from the online Record ledger.

Why the split exists

Kacky's data comes from two kinds of play:

  • Online play on the live game servers — fully trusted, every time is attributable to a real session on a real server.
  • Offline / imported times — historical data migrated from old databases, or times that never went through the live online pipeline.

Both are real finishes, so both belong in the finish history. But only the online times are trustworthy enough to rank people against each other. Mixing an imported offline time into a leaderboard would let an unverifiable time claim a world record — so the platform keeps two ledgers.

What each one answers

Finish answers "how much has this map been played?"

  • How many finishes does map KR 412 have? (all of them — online, offline, repeats)
  • Has this player ever finished this map?
  • Finish history / activity over time.

Record answers "who is fastest, and where do I rank?"

  • What's the world record on KR 412?
  • What's my personal best, and my rank?
  • The hunting leaderboards, the website's records widget, the in-game /records list.

The trap in the numbers

Two counts look similar but mean different things:

  • finishCount — the raw number of Finish rows for a map. Includes online, offline/imported, and repeat finishes by the same player. It's a "how much action has this map seen" number.
  • uniqueFinishers — how many distinct players have an online record on the map. It comes from the Record ledger (one row per player), not from counting distinct players in Finish. This is the number the in-game map list and the records widget show.

Because uniqueFinishers is drawn from the online-only ledger, it can never over-report by counting an imported offline finisher. If you instead counted distinct players in Finish, offline/imported players would inflate it.

For contributors (the technical edge)

  • The materialized view mv_map_rankings is built from the online-only Record ledger and is the single source for ranks and WRs (rank-1 = the WR). The website and the in-game HUD read the same view, so they always agree.
  • The hunting rankings rank the cross-event online best per logical map number, and they filter Map.IsActive so a replaced map version doesn't create a phantom second entry.
  • Repositories that need a finish count read Finish; anything that needs a time/rank reads Record / mv_map_rankings. The two are never interchangeable — a code comment in the map read-repository literally warns against using the ranking view as a finish counter.

If you're building a feature that shows a time

Ask: is this a count, or a ranking? Counts → Finish. Rankings/WRs/personal-bests → Record / mv_map_rankings. When in doubt, it's a ranking, and it's online-only.