diff --git a/PROJECT.md b/PROJECT.md index 4d63ab8..ff28fc2 100644 --- a/PROJECT.md +++ b/PROJECT.md @@ -491,6 +491,85 @@ zombie (now an occasional opponent, `TUNE.racketEvery`, not the every-game fixtu `RETURNED`, `DOUBLE KILL`) is a footnote to something you already watched happen. Sharing the loud FACE with the milestone cards is right; sharing their SIZE made every footnote read as a milestone. +## THE LEAGUES — the meta-progression plan (2026-08-29, AGREED, NOT YET BUILT) + +Worked out with Oliver in discussion, decisions settled below. The goal in his words: an incentive +to keep opening the game beyond beating the next opponent — levelling through play, with a clearly +FELT improvement in gameplay. This is the plan of record for the feature; build it phase by phase +and record verdicts here like any other session. + +### The two axes, and the one rule that protects the shipped game + +- **The LEAGUE determines the world**: pace tier (ball pace + opponent speed), opponent band, court. +- **The LEVEL determines you**: small honest buffs through existing TUNE dials — serve pace cap, + hard-serve scatter, parry window, melee cooldown floor, `hurtGrace`. Never new gestures, never + gesture removal. +- **THE SHIPPED GAME IS LEAGUE 1** (settled explicitly): today's tuning is the floor, progression + extends UPWARD. No deliberately-degraded start, and nothing that exists today gets locked behind + a level — carving the current game into locked pieces is a silent regression of a tuned build. + League 1's opponents are tuned a notch ahead of a fresh player; the level grinds you into range. +- **The tournament gate is a skill check, not a timer**: winning the league's cup promotes you. + The level makes the cup EASIER, never POSSIBLE — a genuinely good player may climb early. + +### Decisions, all settled with Oliver 2026-08-29 + +1. **Leagues are BANDS of the existing 18-rung LADDER** — no new rosters. The league cup is the + existing cup machinery drawing from the league's band (CUP_ROUNDS already draws from bands). + Five leagues; THE CHAMPION is the final of league 5. Exact band edges are Phase 2 tuning. +2. **XP comes from ACTIVE PLAY EVENTS** (points played, kills, games — practically playtime, but + idle-proof), never wall-clock. **Losing pays too** — a hard league must be a grind, not a wall. + The training court pays nothing ("NOTHING AT STAKE" is its settled motto; otherwise it is the + AFK farm). Level curve: fast early (the hook), slow late (Oliver: levelling must not be easy). + Iron rule: every session ends with a visible delta — bar moved, badge, milestone. +3. **Courts ride the leagues, and the bounce table already agrees**: 1 TERRE ROUGE (slow clay), + 2 THE SLAB (true hard), 3 CENTRE COURT (fast grass), 4 THE NIGHT COURT, 5 **THE MEMBERS' + GROUND** — new court, the Dead Club's decayed place of honour: dead grey-green lawn, cracked + lines, ivy over marble, faded gold on the boards. Brightly decayed, distinct from gloom's dark. + Built like gloom was: a COURTS row + tile + palettes, borrowing a stands sheet with dim/grading + before we roll a fourth crowd grade. League matches play the league's court; **free court pick + stays in classic/netplay/training**, and **finishing a league unlocks its court for all modes** + (settled — the unlock is the reward formula). +4. **Gore coupling is TIN-TIER, no starting loadout** (settled): the level/league determines the + POOL the duel's tin pays from (placeholder ladder: lasers join at league 3, rockets 4, double + tins 5 — numbers are Phase 4 tuning). "Weapons are only ever won" stays literally intact and + the world board is not devalued by starting inventory. **The duel gets fixed FIRST**: at + `duelFirst 2 / duelEvery 3` with hp-only stiffening (`racketHpPerGame` 0.12) it is a weapon + dispenser, not a gate — the same inflation class as the old barrel income. The racket zombie + gets the ladder's tennis brain (pace, chase, flub, THE READ scaling), so a duel can be LOST + and a won tin is worth something. While in there: establish what losing a duel actually costs; + if the answer is "nothing but the tin", that is half the diagnosis. Gore's own difficulty + director stays keyed on `G.runGames` — the league buffs YOU, it does not rekey the director. + Defensive level buffs (melee floor, parry, hurtGrace) apply in gore; **board rows carry the + league badge** — context instead of score normalization, and an upset is visible. +5. **No full-body aura** — that is the painted-layer pattern the player-blood veto already killed. + The skill colour lives in: a TINT on the existing sprint trail/dust register, the character + card, and the walk-on/scoreboard presentation ("CHALLENGER · LIGA 3"). +6. **The character card**: big sprite, level bar, league badge, trophy icons (rolled through the + sprite pipeline), totals from stats.js (the data already exists). Reachable from the menu AND + the death screen — the death screen is where meta-progress absorbs permadeath ("run over, but + +340 XP, level 7 → 8"). First-class typography per the polish rule. +7. **The profile is backed up SERVER-SIDE before the grind clock counts.** Hours of investment on + localStorage alone dies with cleared browser data. Client ID, name ownership and the /data + volume all exist; a profile blob beside scores.json is the small addition. +8. **Deferred, on purpose**: skill matchmaking (a queue at our playerbase is empty, and an empty + queue is worse than none — show the league badge in netplay instead; revisit with players), + and a daily bonus (first-win-of-the-day; smells of mobile dark patterns — Oliver's call later). + +### The phases + +- **Phase 1 — profile + XP + bar.** One profile (localStorage + server backup), events pay in, + level bar in the menu and on the death screen. NO gameplay effect yet: the clock must visibly + tick first. +- **Phase 2 — leagues.** Ladder bands, pace tiers, court per league, league cup as promotion gate, + court unlock. The roster fine-tuning lives here; phone-verdict heavy. +- **Phase 3 — character card + badges + trail tint.** The presentation. +- **Phase 4 — gore coupling.** Duel fix first, then tin tiers, defensive buffs, board badge. +- **Phase 5 — later.** Matchmaking, daily incentive (both deliberately parked, see 8). + +Open tuning questions for the build (not decisions): what a pace tier IS mechanically (one global +pace multiplier vs per-dial), the XP amounts and curve numbers, the five band edges over 18 rungs, +the tin-tier ladder, and the duel-loss cost. + ## Session log: THE READ, the walk-on modal, the training court, movement reads (2026-08-28) Four items from one phone report. PHONE VERDICT PENDING on 2-4; item 1 got its first verdict the