Progression Systems - BrainyPlayLab
🧠 BrainyPlayLab Docs
Progression & Scoring

Neural Synergy v3

The psychometric scoring models, dual-currency XP system, and adaptive difficulty mechanisms powering BrainyPlayLab.

trending_upProgression System

Dual-Currency Architecture

âš¡ Cognitive Charge

Infinite lifetime XP currency earned per correct trial.

efficiency = clamp(baseRT / solveRT, 0.5, 2.0)
gain = round(12 × eff × (1 + difficulty) × accMult × diffMult)
gain = clamp(gain, 0, 50)  // Hard cap

🌱 Neural Growth

Slow-accruing mastery points. Diminishing returns, max level 100.

speedIdx = clamp(baseRT / medianRT, 0.6, 1.6)
stability = max(0, 1 − (cvRT × 0.8))
quality = accuracy × stability
gain = round(quality × speedIdx × challenge)
gain = min(gain, 10)  // Max 10/session

Leveling Curves

// Charge Level (infinite)
threshold(level) = 400 × level^1.28
level(charge) = floor((charge / 400)^(1/1.28)) + 1

// Growth Level (cap 100, diminishing returns)
level = floor(100 × (1 − e^(−0.0003 × points)))

Anti-Exploit Safeguards

  1. If accuracy < 60% → accMultiplier = 0.25
  2. If difficulty < playerAbility × 0.7 → progressive reduction
  3. Hard cap: 50 charge per trial

Milestones

  • 🎁 Chest: Every 250 Cognitive Charge
  • 🏆 Reward: Every 1000 Cognitive Charge

favoriteHearts / Energy System

Aspect Detail
Default hearts 3 (configurable per mode via heartsStart)
Global energy max settings.energyMax (default 5)
Heart lost on Wrong answer (selection error) or timeout
Heart refill No auto-refill during session; full reset on new session
Death condition Hearts reach 0 → game ends immediately
Shared across modes? No, each session starts fresh
Persistence Hearts are NOT persisted between sessions

neurologyScoring Engine

Located in ScoringEngine.js — implements psychometrically valid scoring models.

PSI

Processing Speed

if RT ≤ 450ms: 100 (Elite)
if RT ≥ 3000ms: 10 (Baseline)
else: 100 × (1 − ((RT−450)/2550)^0.8)
if acc < 90%: × (acc/90)^3

ICI

Inhibitory Control

impulseRate = impulsiveErrors / total
score = 100 − (impulseRate × 400)
      − (otherErrorRate × 100)

ASI

Attention Stability

CV = SD(RT) / mean(RT)
CV ≤ 0.15 → 100, CV ≥ 0.60 → 20
lapsePenalty = timeoutRate × 300

WMI

Working Memory

PathMemory only:
span×0.45 + acc×0.40 + speed×0.15
Span normalized: (stable−2)/(9−2)

FI

Flexibility

switchCost = mean(switchRTs)
           − mean(repeatRTs)
score = 100 − (cost/500 × 80)
Fallback: 0.4×PSI + 0.6×ASI

NeuroScore

Composite 0–1000

avg = (PSI+ACI+ICI+ASI [+WMI] [+FI])
    / count
NeuroScore = round(avg × 10)

XP Calculation

XP = round((50 + min(50, streak×5) + round(neuroScore×0.1)) × modeMult) + bonusXP
modeMult: easy=1.0, medium=1.5, hard=2.0

analyticsMetrics Service — 5 Pillars

Located in metricsService.js — transforms raw telemetry into normalized 0–100 cognitive pillar scores.

Pillar Composition
Speed inv01(medianRT, 450, 3000) — per-step for PathMemory
Inhibition 70% fast-wrong rate + 30% mode-specific (bias/impulse)
Attention 45% CV(RT) + 35% timeout rate + 20% fatigue (2nd-half slowdown)
Flexibility Recovery rate + switch cost + interference accuracy
Memory PathMemory: span+pattern+order · Others: accuracy proxy

Profile Aggregation (Rolling Average)

weight = e^(−ageDays / 10)           // Exponential decay, ~10-day half-life
globalMetric = Σ(sessMetric × weight) / Σ(weight)
Uses last 30 session summaries across all modes.