This runbook covers TODOS.phase-72.72.12.2.4: a daily and weekly challenge
system that is randomly generated from a challenge pool, rewards XP and
currency, and auto-rotates on UTC windows.
The implementation extends @v2/season-pass-service at
apps/v2/season-pass-service/. Its contract is
V2/ue/Content/V2/LiveOps/SeasonPassChallengeSystem_V2_Contract.json and the
validation gate is V2/ue/Tools/check-v2-season-pass-challenge-system.py.
Challenge Pool#
Challenge pool entries define:
challengeIdtitlecadencecategoryobjectiveKeytargetValueweightxpRewardcurrencyReward
The supported cadences are daily and weekly. Supported categories are
combat, engagement, ranked, and event. The challenge system validates
duplicate IDs, unsupported cadence or category values, positive targets,
positive weights, and positive XP and currency rewards before any rotation is
published.
Rotation Model#
buildV2SeasonPassChallengeSystemSurface creates active daily challenges and
active weekly challenges from the configured challenge pool. Daily challenges
start at 00:00 UTC and auto-rotate every day. Weekly challenges start on Monday
at 00:00 UTC and auto-rotate every seven days. Selection is deterministic for a
season and rotation window, but it is randomly generated from the challenge pool
using each entry weight, so operators can adjust pool composition without a
client patch.
Rewards#
completeV2SeasonPassChallenge grants the active challenge reward. Daily
challenge completions emit a daily-challenge season-pass XP grant, weekly
challenge completions emit a weekly-challenge season-pass XP grant, and both
cadences emit season-credits currency grants. XP and currency rewards are
server-authoritative and keep requiresClientPatch: false; no client patch is
required for updated daily challenges, weekly challenges, or reward tuning.
Primary APIs:
buildV2SeasonPassChallengeSystemSurfacecompleteV2SeasonPassChallenge
Endpoints:
GET /v2/live-ops/season-pass/{seasonId}/challengesPOST /v2/live-ops/season-pass/{seasonId}/challenges/rotatePOST /v2/live-ops/season-pass/{seasonId}/challenges/{challengeId}/complete
Operator Flow#
- Author daily and weekly challenge pool entries before a season starts.
- Weight challenge entries according to desired rotation frequency.
- Preview daily and weekly windows with
buildV2SeasonPassChallengeSystemSurface. - Publish the generated active challenge lists to the live-ops surface.
- Route completion events through
completeV2SeasonPassChallengeso XP and currency rewards are granted consistently.
Release Gates#
Required gates:
season-pass-challenge-system-surfaceseason-pass-challenge-system-daily-weeklyseason-pass-challenge-system-random-poolseason-pass-challenge-system-auto-rotateseason-pass-challenge-system-xp-currency-rewardsseason-pass-challenge-system-validationseason-pass-challenge-system-ci-wired
Verification#
pnpm --filter @v2/season-pass-service test
pnpm --filter @v2/season-pass-service typecheck
pnpm --filter @v2/season-pass-service lint
pnpm --filter @v2/season-pass-service build
python3 V2/ue/Tools/check-v2-season-pass-challenge-system.py
python3 V2/ue/Tools/check-v2-ci-workflow.py
python3 V2/tools/validate-v2-docs.py