Spire CodexSpire CodexSPIRECODEX
Cards & Combat
Card LibraryRelic CollectionPotion LabPowersKeywords
The Run
CharactersBestiaryEncountersEventsAncientsMerchant
Systems & Meta
Custom ModeMechanicsUnlockables
Reference
TimelineImagesReferenceBadgesCompare CharactersGuides
Jump back in

Pages you open show up here.

Rankings
Tier ListCard MetricsScoring
Aggregate data
Community StatsChartsStatsEncounters
Runs
LeaderboardsBrowse RunsSubmit a Run
Make & share
Tier List MakerShowcase
Companion apps
Overlay (Overwolf)Knowledge Demonbot
Build with the data
DevelopersAPI
Project
Spire CodexChangelogNewsThank You
Support
PatreonKo-fiFeedbackEmail
Elsewhere
DiscordGitHubPrivacyTerms
Live
OverwolfSpire Codex is now on Overwolf. Get the in-game overlay with live card lookups and one-click run uploads. Learn more →
← Назад к Механики

Scoring & Daily Leaderboards

How your run score is calculated — 10 points per room, act multipliers, elite/boss/gold bonuses, and ascension scaling. Plus the packed daily-leaderboard score format added in Major Update

Run Score

Awarded for every completed run, win or lose. Shown on the run-history screen and used by the final-boss scene to render the "damage" numbers on the Architect.

ComponentValue
Rooms visited10 pts per room × act number (×1 / ×2 / ×3)
Gold gained+1 pt per 100 gold (divided by player count)
Elites killed+50 each (the elite you died to doesn't count)
Bosses slain+100 per boss room you cleared (the boss you died to doesn't count)
Ascension multiplier×(1 + ascension × 0.1)

Final = (rooms + gold + elites + bosses) × (1 + ascension × 0.1). At A10 your score is doubled. Source: ScoreUtility.CalculateScore.

Worked Example

Hypothetical A0 win — 15 rooms in act 1, 14 in act 2, 14 in act 3, 4 elites killed, 3 bosses, 1,200 gold gained, single player.

ComponentMathPts
Act 1 rooms15 × 10 × 1150
Act 2 rooms14 × 10 × 2280
Act 3 rooms14 × 10 × 3420
Gold1200 / 10012
Elites4 × 50200
Bosses3 × 100300
Subtotal × A0 multiplier1,362 × 1.01,362

The same run on A10 would multiply by 2.0 for a final score of 2,724. Each A-tier adds +10% — there's no diminishing return.

Daily-Run Leaderboard Score

Daily runs use a completely separate scoring system that's a single packed integer. The digits ARE the sort order — a numeric DESC sort gives the right ranking, no separate columns needed. Major Update #1 introduced this so "the score sent to the leaderboards is based on whether you won, how many badges you accrued, and how quickly you finished the run (in that order)". That quote skips a step: the real sort order is victory, then floors visited, then badges, then time. The packed integer is victory × 1e8 + floors × 1e6 + badges × 1e4 + (9999 − time), so floors outrank badges.

BucketMultiplierRange
Victory flag× 100,000,0001 = loss, 2 = win
Floors visited× 1,000,0000–99
Badges earned× 10,0000–99
Run time9999 − seconds (clamped 0–9999)faster = higher

Source: ScoreUtility.CalculateDailyScore. The matching DecodeDailyScore peels the integer back into { victory, floors, badges, runTime } for display. The time term uses your time-to-win on a victory and your total run time on a loss, clamped to 0–9999 seconds before the 9999 − time flip.

Daily-Score Worked Example

An A10 daily win — 48 floors visited, 7 badges earned, completed in 1,842 seconds (30:42).

BucketMathContribution
Victory (win)2 × 100,000,000200,000,000
Floors48 × 1,000,00048,000,000
Badges7 × 10,00070,000
Time9999 − 18428,157
Total packed score248,078,157

Beat someone's 248,070,XXX score? You won, hit at least 48 floors, and got 7+ badges. Faster runs win at every tier of the comparison.

Why Two Scores?

The run score is descriptive — it tells you how good a single run was at a glance, weighted heavily toward depth (act 3 rooms count 3x). The daily score is a sorting key — it has to compare two runs deterministically and produce one winner. Mega Crit packed it as a single integer so the leaderboard can be sorted with one column and no tiebreaker logic.

The constant clientScore = -999999999 is a sentinel for "this row was sent without a server-computed score" — used to filter unverified entries from the leaderboard view.

API·Developers·GitHub·Discord·Ko-Fi··Privacy·Terms·Beta Site