Skip to content

P2E: calculate reward points from skill-based activity #90

@ilyar

Description

@ilyar

Source PRD: tasks/prd-full-play-to-earn.md
Parent epic: #86
PRD section: US-004

Description

Reward progress should come from server-authoritative skill/activity signals, not from one paid match.

Acceptance Criteria

  • Reward points are derived from server-authoritative match settlement events.
  • Base reward points use deterministic inputs such as win, draw, loss, score, rating delta, opponent rating band, and completed match count.
  • Reward points are capped per day and per season to reduce grinding abuse.
  • Forfeit, timeout, disconnect, and rematch farming rules are explicit.
  • Matches against the same account pair have configurable daily reward caps.
  • Reward points are idempotent per match/account/campaign.
  • Tests cover win, draw, loss, clean win, forfeit, timeout, duplicate settlement, and repeated pair caps.

Constraints

  • Keep current paid PvP settlement as entry fee, not player-funded prize pool.
  • Do not make Season Points redeemable or refundable.
  • Keep payout/compliance/provider secrets backend-only.
  • Treat this as deferred future-phase work until mechanics/self-host production readiness is stable.

Notes

Keep gameplay server-authoritative and do not let frontend allocate reward points.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: backendServer-side services, APIs, reducers, and data mutationsarea: spacetimeSpacetimeDB schema, reducers, subscriptions, and publish flowdomain: economyELM/tELM balances, ledger, credits, debits, and rewardsdomain: gameplayCore match mechanics, rules, energy, rounds, and player flowpriority: highImportant for MVPstatus: deferredDeferred until the current active milestone is stabletype: featureNew capability or product improvement

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions