Skip to content

Reload Cheat Mitigation (Auto-Submit or Hidden Penalty) #197

@lkocman

Description

@lkocman

Summary

Many users exploit a simple reload hack to retry quizzes without penalty — they start a quiz, guess some answers, and if things go wrong, simply reload before submitting. This clears progress and lets them retake the same quiz until they get a perfect score. Around 20% of participants seem to use this method.


⚠️ Problem Impact

  • Inflates scores on the leaderboard.
  • Undermines fair play and the credibility of results.
  • Makes prize draws less meaningful.
  • Reduces motivation for honest players.

🎯 Goal

Prevent page reloads from giving a “free retry.”
If a user reloads, their attempt should either be auto-submitted or treated as a retake with a penalty.


💡 Implementation Direction

We don’t want to over-engineer this, but one of these simple approaches would be enough:

  1. Silent Penalty on Reload

    • When the user reloads mid-quiz, treat that as a retake and apply a hidden penalty (for example, deduct points or mark as n-th attempt).
    • Users wouldn’t see a message — just notice their score isn’t as high as expected.
    • Keeps the experience playful while discouraging reloads.
  2. Auto-Submit on Each Answer

    • Submit partial results to the server after every answered question.
    • If the user reloads, the backend already holds a record of their attempt.
    • Reloading then simply starts a new attempt with the previous score already stored.

In both cases, any reload becomes effectively a retake instead of a way to erase mistakes.


🧠 Behavior Example

  1. User starts quiz → answers 5 questions.

  2. Reloads the page.

  3. Backend finds existing score:

    • Option 1 → marks as retake, applies hidden penalty.
    • Option 2 → restores or restarts quiz with existing score logged.
  4. Final results reflect honest first tries, not brute-force retries.


✅ Benefits

  • Makes reload abuse pointless without breaking normal play.
  • Keeps leaderboard fair and transparent.
  • Requires minimal logic change — no major backend complexity.
  • Still allows honest users to reload if needed (they’ll just start fresh or keep prior progress).

This change keeps the quiz fun and fair while gently punishing “creative” reload strategies.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions