← Mini-games · Runtime config

Mental Math Speedrun

60-second arithmetic blitz with adaptive difficulty.
mentalmath

What this game is

  • Player solves quick-fire arithmetic against the clock.
  • Difficulty ratchets up as accuracy holds above the threshold.
  • Four answer mechanics (typed / mcq / true_false / slider) mixed per band.
  • Score = correct − wrong + time-bonus. Top scores per band leaderboard.

Player's view

┌─────────────────────────────┐
│   45  ×  12  =  ?           │   ← prompt
│                             │
│   [ 5 4 0 ]                 │   ← typed input
│                             │
│   ⏱  0:47        ✓ 12  ✗ 1 │   ← timer + counters
└─────────────────────────────┘
Compact mockup so you can match config keys to UX elements.

Configuration

Empty field = use compile-time default (shown in grey). Changes propagate to mobile within ~1 second via Postgres NOTIFY.

round_seconds
How long one round lasts before time-up.
Default: 60 using default
correct_bonus_sec
Added to the clock for each right answer.
Default: 2 using default
wrong_penalty_sec
Subtracted from the clock for each miss.
Default: 3 using default
adaptive_acc_thresh
Accuracy ≥ this fraction triggers a difficulty step-up. e.g. 0.8 = 80%.
Default: 0.9 using default
questions_per_round
First-batch size returned on /round/start.
Default: 60 using default
mechanic_weights
Band → mechanic → weight (0..1). Example: {"foundation":{"typed":0.7,"mcq":0.3}}
using default
Writes go through admin audit log (action minigames.config.update) and trigger a Postgres NOTIFY that the API's in-process loader picks up immediately.