Scoring providers

Choose how rCTF calculates point values for decay challenges.

Edit this page View Markdown

Scoring providers calculate point values for decay challenges. rCTF includes six algorithms that use solve counts, event timing, or both.

Configuration

scoreProvider:
name: scores/classic # Default

Each challenge sets a point range via points.min and points.max in its data. The scoring provider calculates the current point value from the solve count and other context.

Score context

All scoring providers receive a context object with:

Field Description
minPoints Minimum points for the challenge (floor)
maxPoints Maximum points for the challenge (ceiling, when 0 solves)
solves Current number of solves
maxSolves Maximum solves across all challenges (used by scores/legacy)
eventStartTime Competition start time (used by scores/jammy)
eventEndTime Competition end time (used by scores/jammy)
firstSolveTime Time of the first solve for the challenge (used by scores/jammy)

Providers

Charts use a sample challenge with minPoints: 100 and maxPoints: 500. Solve-based providers show the full provider family with the current tab highlighted, while scores/jammy uses its own time-based curve.

0 100 200 300 400 500 0 10 20 30 40 50 Solves Points
scores/classicscores/sekaiscores/steepscores/genniscores/legacy

The default scoring algorithm. Uses a logistic decay function that drops points as more teams solve the challenge.

scoreProvider:
name: scores/classic

Challenges start at maxPoints with zero solves and decay toward minPoints as the solve count climbs. The decay curve is moderate, which works for most CTFs.

Type to search.