Skip to content

feat(practice): Practice Mode session — no competitive scoring, repeatable skill drills #172

@TheMeinerLP

Description

@TheMeinerLP

Description

Practice Mode (formerly Tutorial Mode) is a permanent, repeatable content surface — not a one-time onboarding tunnel. Players can replay any map to improve their medal. This epic establishes the Practice Mode session model on top of the GameMode infrastructure.

Acceptance Criteria

  • `GameMode.PRACTICE` sessions suppress position-based bonuses and competitive ranking
  • The end screen shows a per-map medal result (Bronze / Silver / Gold / Diamond) instead of a podium
  • Medal tiers use the same time-bracket thresholds as Race Mode (configurable, same defaults)
  • Practice results are excluded from competitive leaderboards (filtered by `gameMode` in queries)
  • Practice Mode supports single-player (minimum player count = 1, no countdown gate)
  • Players can replay the same map/cup unlimited times; each attempt is recorded separately
  • `GameResultPersistenceService` stores Practice results with `gameMode = PRACTICE`
  • Unit tests cover medal assignment at each bracket boundary
  • Unit tests verify Practice results are excluded from leaderboard queries

Technical Details

  • Medal enum: `BRONZE`, `SILVER`, `GOLD`, `DIAMOND` — follows Enum DSL pattern
  • End screen is a separate `PracticeEndPhase` (not shared with Race end screen)
  • No DB schema changes beyond what Epic feat(game): introduce GameMode enum and mode-aware session/orchestrator #167 introduces (`gameMode` column suffices)
  • Leaderboard queries add `WHERE game_mode = 'RACE'` filter — no separate table

Dependencies

Estimate

L

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestepicLarge multi-issue feature or initiativegameplayGameplay mechanics

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions