# Sanick Padel: Chasing 4 — training design

## Current format: 15 levels and player-specific rally memory

- A complete run is **15 levels × 5 rallies = 75 rallies**, with a bank of **200 unique rally scenarios** maintained across **8 difficulty tiers**. Level 1 uses tier 1; levels 2–3 use tier 2; every successive pair increases the difficulty through levels 14–15 at tier 8.
- Each named guest's completed/presented scenario IDs are remembered **in this browser**, separately by name and avatar. New runs favour unseen rallies; once a tier is exhausted, the least recently seen scenarios are used. Failed-level retries draw fresh scenarios where the bank allows.
- The 15-level run has separate progress and leaderboard records from the previous 40-level challenge. Historical records are preserved, but only comparable new-format scores are displayed in the global Top 10.
- Relaunching on the same device restores the guest profile and, for an advanced run, the exact level's preselected rally IDs. Local storage memory is not shared between devices and is not identified by IP address.

The versioned sections below are historical implementation notes; references to 40 levels describe the previous challenge format.

## V18 two-step training and ball-flight clarity

- The UI shows **1. Position → 2. Return**. The intermediate glass/flight animation is still part of positioning, as is its position review, rather than a third decision. The per-scenario **Glass and bounce** coaching remains in that review.
- Before shot selection, the tracker shows **objective evidence**, without explicitly declaring offensive or defensive state or prescribing a tactic. The tactical classification and reasoning appear **after** the player's return is locked, in the coach's review. A/B/C still offers labelled offensive and defensive alternatives, with the existing near-tie scoring preserved.
- The side-on height/speed tracker now draws the sampled ball flight at **actual court depth** rather than elapsed time. A back-glass rebound visibly travels back toward the calculated contact point; side glass and fence events are labelled without a fictitious back-glass bounce. Segments use the same <24, 24–39, and ≥40 km/h green/amber/red categories as the live court.
- The former player silhouette has been removed from the tracker. Actual contact height and an approachable classification (ankle, knee, hip, chest/shoulder, overhead, above reach) replace it. A small positioning reminder preserves the **1.65 m** player / **2.45 m** standing-reach assumptions.
- New visual lives show a chalk-dusted hand, an unbranded silver/blue energy can, and a golden tequila shot with lime. These appear in the HUD, onboarding tutorial, consumed-life result, and replenishment feedback.
- The compact header separates **Level (n/40)** from **Level Score (n/10)**. Long methodology notes are retained behind a collapsed disclosure to reduce scroll length.

## V17 player height and overhead reach

- Nick and Sandy both default to **1.65 m** height. The training model uses an estimated **2.45 m standing overhead contact ceiling** including raised arm and racket. This is a practical reference, **not** a personalised wingspan or jumping/smash biomechanics simulation.
- Every coached overhead intercept now occurs on the **descending** pre-bounce ball at a height of approximately **2.12–2.45 m**, within the default player's standing reach. Smash only appears when the ball is high enough, early enough, forward enough and not excessively fast; other cases offer a bandeja, víbora or true left-shoulder gancho with a defensive lob option.
- Deeper, higher lobs still have a real arc above standing reach; these are trained as **defensive recovery and glass-return** situations rather than fabricated high smashes. The 200 scenarios and 40 levels remain intact.
- In V17 the flight-height/speed tracker had a right-hand outline of a **1.65 m player** and a dashed **2.45 m reach** line; V18 replaces this display with direct contact-height categories and a physical court-depth flight profile.
- V17 retains the context-specific **Glass and bounce** review coaching because it varies meaningfully across scenarios.

## V16 identity and home-screen icon

- The selected **Court S** logo now appears in full on the initial player-selection introduction. Its simplified icon (court, green S trajectory and ball, without small wordmark text) replaces the old geometric mark in the compact header.
- The web app now includes a standard install manifest and dedicated Android/browser, maskable Android and Apple iOS home-screen icons, all using the selected Court S design. The installed name is **Sanick Padel**; the launch URL is the game itself.
- The icon is available when users add the published V16 web app to their home screen on an HTTPS site. Existing installations may need removal and re-addition to update their cached icon.
- No scoring, 200-scenario selection, player assets or training decision logic changed.

## V15 shot-card readability, speed legend and gancho clarification (offline only)

- The intent label and the next-shot name on A/B/C return cards are separate stacked lines, with a more prominent shot name. This addresses the visual concatenation (for example, `BUILD / CONTROLDEEP DRIVE`) in the earlier screenshot.
- The height profile uses a colour gradient driven by actual sampled speed rather than a static lime stroke. Green means under 24 km/h, amber 24–39 km/h and red 40 km/h or faster. The court ball and trail use the same bands; the contact marker changes colour as it travels. The cutoffs are instructional categories, not regulated speed limits or automatic shot-selection answers.
- Right-handed overheads are classified by the intended lob contact side. A high ball over the **left shoulder** can offer a **gancho**, a hooked overhead, often from the right court; it is **not** synonymous with a backhand. The conventional forehand/backhand proxy remains for lateral positioning geometry but overhead coaching labels use shoulder position. The gancho's simulated flight is differentiated from the víbora's.
- [The Padel School's gancho teaching](https://thepadelschool.com/resources/padel-tips/the-gancho-padel) informed the left-shoulder, extended-arm overhead terminology and deep diagonal objective. Coaching and ball flight remain approximate and should be validated against real examples.
- V15 is an offline package with no publication. See `V15_RELEASE_NOTES.md` for the full handoff.

## V14 scenario coverage and evidence (offline only)

- The 200-scenario / 40-level structure is unchanged. The bank now contains five each of T, body and wide-glass service returns; low volleys; back-then-side double-glass rebounds; fence rebounds; fast opponent-smash defence; and high bajadas off back glass. It also includes ten realistic post-bounce half-volleys and ten conventional forecourt volleys.
- The arrival descriptions identify what type of incoming shot is being read, and whether the receiver's partner is near the net, deep, transitioning or aligned. The displayed partner court location agrees with that description.
- The A/B/C return phase shows measurable evidence (incoming km/h, racket contact height, metres behind net, opponent positions, teammate coverage and glass/fence order). For every scenario the three options include an attacking and a defending plan with an explicit purpose, target, benefit and execution risk; low half-volleys and high bajadas can be featured even when not the preferred shot.
- New physically simulated shot families are **compact safe blocks, low half-volley pickups and controlled attacking bajadas**. Serve returns distinguish T/body and side-glass feeds; an incoming serve that strikes fencing before its second bounce is excluded because that would be a serve fault under FIP rules.
- Re-scoring after imperfect user positioning was tested to retain three options and both tactical intents. The tactical preference is still a **provisional coaching heuristic**, not a coach-certified ground truth.
- The offline V14 copy has not been published. See `V14_RELEASE_NOTES.md` at the project root for counts and local preview instructions.

## V13 return decision review (offline only)

- The same 200-stage bank and 40-level progression are retained. Nine scenarios now show an **early forecourt volley** against two deep defenders (rather than another back-court return), providing suitable attacking opportunities.
- The return decision read now names the tactical state (**OFFENSIVE**, **DEFENSIVE**, or **NEUTRAL**) and shows concrete evidence: incoming speed, contact height, metres behind the net, opponent formation and, where relevant, spin or stance errors. This tells players *why* a shot is more or less sensible without revealing the preferred A/B/C answer.
- Every three-choice round contains at least one **offensive** and one **defensive/safe-depth** tactical response, each visibly labelled. The three choices include explicit benefits and risks; only PLAY confirms.
- Drop shots are now eligible only with two deep defenders, accessible forward contact and a stable swing; they use their own launch timing and strong backspin. Their first and second bounce are simulated and checked for a genuinely short finish, distinct from chiquitas.
- Lob weights have been moderated, and a net opponent's opportunity to retreat and intercept is considered. Lobs remain an important defensive reset rather than an automatically safest answer.
- These are coaching-informed heuristics to be reviewed with a qualified padel coach before claiming they are uniquely correct. The offline V13 package does not modify or publish the live Site.

## V11 mobile interaction and compact arcade HUD

- The player movement pad is part of the normal document flow immediately below the court, rather than a viewport-fixed floating overlay. Tap input is handled by normal button `click` events so touch browsers do not depend on special pointer-down handling or scroll position; long press still repeats movement. Each key has a 44-pixel minimum touch target.
- Contact/glass and return reviews are embedded as visible sections under the court. They retain the scaled position diagram, coach trajectory comparison and partner remarks, but no longer block document scrolling in a full-screen pop-up. On completion, the page scrolls to the relevant inline review and waits for Continue/Next.
- Credits are shown only as a small count next to Top 10. Missing Liquid Chalk, Red Bull, then Tequila lives are purchased automatically, one credit per life, on level completion and when restoring an older saved run with banked credits. The separate Buy Life and Auto-refill UI has been removed.

## V10 mobile and feedback additions

- Position feedback now displays a scaled near-court overlay with the player's final locked coordinates, the ideal stance from the same `stance.grade` used to award points, and the observed first bounce/contact. A 1 m circle and 1.5 m circle correspond to the scoring distances.
- If a return other than the coach's top-rated option is played, the return debrief lets the player expand a trajectory comparison. The preferred and selected paths use the same physics-sampled `returnFlight` positions as the court animation; this is a coaching visualization, not a separate simulator or a change to scoring.
- Native scrolling replaces the special side slider. Tutorial steps use in-screen arrows and a consistent directional-key illustration.
- The logo, running score, level points, lives and Top 10 are condensed into the header; credits/life purchases remain near the court.

## What the game is teaching

The core exercise is **reading a live doubles situation and choosing a repeatable, high-percentage response**. The choice does not default to lobs, chiquitas, or attacks. It weighs:

- Actual ball-contact height, incoming velocity and remaining side spin after any glass rebound.
- Where on the court the player will contact the ball, how close they stood to the predicted ideal position, and whether their body/ball separation allows a right-handed forehand or backhand. Both avatars currently assume right-handed play.
- Opponents' left/right lanes and net/deep positions; whether a return passes through a reachable volley area.
- Potentially open gaps and outside angles, including wide chiquitas, cross-court drives, side-fence angles, side-glass angles and deep corner balls.
- Net clearance, ball speed, whether the first bounce is legal, and where the post-bounce path meets glass or fence.
- Higher execution risk for tight angles when the incoming contact is fast, low, late, heavily spinning, or poorly positioned.
- Whether a high lob can be intercepted **before** its bounce for a bandeja, víbora, gancho or smash. Lob depth, contact height and player/opponent positions affect the preferred return.

Each stage presents three physically checked candidates and identifies one **preferred training return**. A genuinely close alternative (within five provisional tactical-weight points) also receives the full return point, marked teal in review. A distinct lower-percentage selection remains red while the preferred choice is green. This avoids treating reasonable tactical near-ties as clear mistakes. The ranking is a coaching heuristic for an amateur seeking consistency, not a uniquely provable correct decision. The game deliberately avoids rewarding difficult angles just because they look spectacular.

### V5 return-selection audit

- **Deep open-lane direction corrected:** when one opposing player presses forward, the deep drive/lob targets the lane behind **that** player; the older formula targeted the other side in split formations.
- The model now omits chiquitas/body drives at a volleyer's feet when neither opponent is actually at net. It differentiates high-percentage defensive lobs under pressure, measured depth against deep defenders, slow chiquitas from balanced attacking contacts, controlled bandejas when retreating from deeper lobs, and aggressive víboras/smashes only when the contact is appropriately early/high.
- Each choice has an explicit **purpose**, **target**, **payoff** and **trade-off**, including actual net clearance calculated from that ball path. Brief summaries appear in the three buttons above the court; longer reasoning is shown in the decision panel **before** a choice.
- The first positioning/rebound review **does not advance on a timer**. Players can reread the score, inspect rings and racket-side advice, replay the ball, and choose **Continue → Choose return** in the review panel or beside the court.
- During shot selection the actual court shows only A/B/C bounce targets, without distracting connecting trajectories. Selected and preferred return paths appear in the later review for comparison.

### V6 positioning and swing-room correction

- A player's **position automatically implies forehand or backhand** for the right-handed avatar. There is no additional forehand/backhand selection. Preferred racket side is context-specific to the receiving half and contact lane.
- Position points remain **1 within 1 m**, **0.5 within 1.5 m**, and **0 beyond** the ideal body point. The extra 0.5 measures a correctly oriented, **playable** shot setup inside the position scoring zone, not another near-exact comparison to the preferred body point.
- The old bonus demanded contact clearance within **0.19 m** of its nominal ideal even when the player was well inside the 1 m body ring. V6 replaces that with realistic broad instructional tolerances: **0.24–1.45 m lateral separation**, contact not far behind the body (**body y − ball y ≥ −0.25 m**), and not excessively far ahead (**≤ 1.25 m**). These are game approximations, not biomechanical absolutes.
- The review spells out any actual disqualifier: too cramped, wrong racket side, overreaching, contact behind, contact too far ahead, or outside the 1.5 m scoring zone.
- The court now shows clean green/amber body-position rings and a cyan **diamond** for ball/racket contact. The first-bounce marker is shown only while choosing a position; during review its redundant label is removed to avoid overlap. A legend above the court explains each marker.

### V7 mobile review and navigation

- The large “Read the ball. Own the point.” landing introduction remains present during the initial team/outfit/side setup but collapses to one small instruction line while training (and at between-level side picks).
- Each active stage has a short, near-court instruction so the user can position, review, and decide without scrolling down to the more detailed supplemental decision panel.
- During return selection, the **incoming flight-height chart, launch speed, actual speed at racket contact, contact height, and pace/risk guidance** appear immediately above the court. This information is read-only, measured from the existing ball-trajectory model rather than a new fabricated shot statistic.
- Three compact A/B/C return choices appear below the height/speed profile. Tapping each choice (or the letter on the court) **expands its coaching aim, target, benefit, risk and net clearance**. Only the separate, clearly labeled **PLAY A/B/C** button can actually commit a return. Keyboard A/B/C keys also expand rather than commit. Tapping open court space does not make a shot choice.
- Once the selected return lands, its **tactical reasoning appears in a modal review** with both the selected and coach-preferred options, scoring, rationale and a Next stage control. The user can study it without racing an automatic timer. Continuing closes the modal and scrolls to the relevant new positioning stage (or the level result).
- V7 is a **local/offline release candidate**. Packaging the ZIP does not sync, save a new Site version or deploy it. Publication only occurs on explicit instruction from Nick.

### V8 selection artwork and teammate debrief

- Nick's **initial character/outfit selection artwork** now uses a transparent three-outfit sprite strip (black, blue, pink/tutu). Unwanted studio background, floor shadow/halo and stray detail near his feet were removed from these front-facing portraits. The on-court rear-facing avatar, selection ring, movement and position scoring are unchanged.
- The return-result pop-up now features the **partner's avatar and an attached speech bubble** before the detailed tactical debrief. It reuses the existing 50 supportive/playful correct replies and 50 incorrect replies, rather than adding or replacing the commentary. Speech remains visible until the user presses Next stage.
- To preserve Nick's outfit surprise when Sandy is playing Level 1, the partner's small debrief portrait uses Nick's neutral blue appearance; the tutu remains revealed at later levels.
- The Next stage button stays visible at the lower edge of the review on small screens as the player scrolls the explanation.

## Position, racket-side decision and arcade scoring

- First choose a body position, not the ball-contact spot. For a right-handed forehand the ball should be to the player's **right**; for a backhand, to the player's **left**. Allow roughly 0.66 m lateral space for groundstrokes or 0.53 m for overheads, and generally contact the ball slightly ahead of the body.
- **Receiving side matters:** A right-handed **left-side player** generally uses the forehand on balls through the centre/T, and a backhand on balls close to the outside glass. The right-side player tends towards a backhand in the centre/T lane and a forehand near the outside-right glass. Previous versions incorrectly treated almost every left-half shot as a backhand. V4.3 uses a doubles-lane baseline (around x=2.65 m or x=7.35 m) plus the contact coordinate to choose the preferred stance, then checks swing clearance. This is a simplifying coaching heuristic, not an absolute instruction on every ball.
- **1 point** if within 1 m of the preferred body position; **0.5 point** if within 1.5 m; otherwise 0. Two correctly scaled rings illustrate this after positioning is committed.
- **A further 0.5 point** is possible for correctly inferred racket side and broadly playable swing space while inside the 1.5 m scoring zone. The margin is intentionally more forgiving than in V5; very deep balls trapped against back glass can still be genuinely unplayable.
- **1 point** for the preferred training return or a defensible tactical near-tie, re-ranked *after* the player commits the position. Poor/rushed positioning penalizes narrow angles and hard overheads. A backhand stance can switch an overhead option from víbora to gancho.
- Five rallies give a **10-point standard score** (up to 5 positioning points + 5 return points). The 0.5-point racket-side bonus on each rally permits a displayed score **above 10, up to 12.5**. **7.5/10** passes the level, including legitimately earned racket-side bonuses.
- At level end, the exact surplus **above 10** becomes banked credits. For example, 11.5 scores 1.5 credits; a 9.5 score produces none. Existing credits carry into subsequent levels.
- The lives appear alongside the court, not in the page header. Each run has three ordered consumables: **Liquid Chalk**, **Red Bull**, **Tequila**. Each failed level spends the first available life.
- A missing life costs **1 credit** to restore, **starting with Liquid Chalk**, followed by Red Bull and then Tequila. The player may buy manually at any time with sufficient credit, or leave the **auto-refill** option on (the default) to replenish missing lives at the end of any level attempt. A notification announces which life was purchased. Auto-refill consumes only available whole credits and never buys above the three-life maximum.
- Three losses with no purchased replacement end the run and record the cumulative score; the next fresh game restarts at Level 1. If auto-refill is off but banked credits remain, the player can rescue an exhausted run by purchasing a life before restarting.
- Team selection offers Nick/Sandy and their outfits initially. Between levels only the doubles side is selected. When Sandy is selected, Nick's pink tutu becomes visible at level transitions from Level 2 onward.

## Model limitations

The stance model represents a static contact point and a right-handed player, **not** real footwork timing, flexibility, grip, racket face, reaction time, jumping ability, or independently verified overhead biomechanics. Return physics originates at the true contact point even when the user positions their avatar poorly; poor stance influences tactical risk rather than teleporting the ball. The presented returns are a subset of real options and should be calibrated with certified coach review before making definitive instructional claims.

## Post-bounce accuracy

All return paths are physically checked to cross the net and bounce on the opponent's floor *before* meeting their wall/fence. The trajectory then continues through a floor-bounce impulse and any back glass, side glass, or side-fence collisions. The back 4 m on each side are treated as glass; the remaining side enclosure uses distinct fence restitution. The court is 10 × 20 m.

FIP court and ball measurements are used where available; air drag, lift and restitution parameters are engineering approximations. They are **not** measurements of a specific ball brand, court surface, climate or fence weave. Precise bounce outcomes may differ in a real match.

## Coaching basis

1. [International Padel Federation — Rules of Padel](https://www.padelfip.com/wp-content/uploads/2025/12/FIP_Rules-of-Padel.pdf). Court, enclosures, valid returns and first-bounce-before-wall rule.
2. [The Padel School — How To Hit A Bandeja Without Any Risk?](https://thepadelschool.com/resources/padel-tips/how-to-hit-a-bandeja-without-any-risk). Controlled pace, large side-glass and fence targets in an appropriate overhead context.
3. [The Padel School — Patience in Padel](https://thepadelschool.com/resources/padel-tips/patience-in-padel). Do not force finishes prematurely; use a setup shot.
4. [The Padel School — Whose Shot Is It?](https://thepadelschool.com/resources/padel-tips/whose-shot-is-it?40f8d0ca_page=3). Coordinate as a pair, account for wall rebound and newly opened angles.
5. [PadelMBA CPC+ Training Guide](https://www.padelmba.com/wp-content/uploads/2023/05/guia-formacion-cpc-plus-english.pdf). Amateur error reduction and choosing targets with margin rather than aiming at extreme corners.
6. [The Padel School — How to Deal with Lobs](https://thepadelschool.com/resources/padel-tips/how-to-deal-with-lobs). Lob depth and position determine whether to intercept, reset or attack.
7. [The Padel School — Improve Your Víbora](https://thepadelschool.com/resources/padel-tips/improve-your-vibora-with-these-tips/). Controlled slice and corner targets rather than hitting hard for its own sake.
8. [The Padel School — Left Side Player](https://thepadelschool.com/resources/padel-tips/left-side-player). Right-handed player on the left: middle balls on forehand and outside-side-glass balls on backhand, plus overhead responsibilities.
9. [The Padel School — How To Choose Your Side](https://thepadelschool.com/resources/padel-tips/how-to-choose-your-side-in-padel). The forehand/smash advantage for middle balls depends on handedness and doubles lane.
10. [The Padel School — When to use the Lob Return](https://thepadelschool.com/resources/padel-tips/when-to-use-the-lob-return). Differentiate defensive lobs used to recover from attacking lobs used to gain the net.
11. [The Padel School — Learn the Chiquita](https://thepadelschool.com/resources/padel-tips/learn-the-chiquita). A soft chiquita lets the receiver move forward; a rushed, overly fast one leaves the player defending.
12. [The Padel School — Consistency Is King](https://thepadelschool.com/resources/padel-tips/consistency-is-king-in-padel). Repeatable, high-margin plays are especially important for amateur doubles.

**Important limitation:** Sources provide principles, not a published formula for every racket/ball situation. The shot-ranking weights are explicitly provisional, not validated by independent certified padel coaches. For a real coaching product they should be calibrated with coach-labelled video examples and reviewed after player feedback before describing the scoring as authoritative.

## Local technical verification

From the project directory, run `node tests/tactics.test.js` and `node tests/stance-arcade.test.js`. The first covers 200 scenarios and 600 return choices, including legal first bounces, wall/fence zoning, deep target selection, readable tactical trade-offs, and angle-pressure guardrails. The second covers body/ball geometry, the racket-side bonus, overhead shot types, dynamic tactical ranking and three-life reset.

## V9 mobile controls and feedback

- Court gestures are reserved for normal vertical document scrolling on touchscreens; player drag positioning and accidental drag-release locking have been removed. Only the arrow pad moves players, by 0.25 m per tap, and the middle LOCK button commits a stance.
- A floating vertical page-scroll control with arrows and a range slider is available on narrow screens. Its value tracks the browser's actual scroll offset and its slider jumps to the requested document position.
- A skippable four-screen tutorial begins after the initial player choice and before choosing outfits. It covers lives, credits, controls, scoring, shot review, and mobile navigation. It does not repeat when simply advancing levels.
- After a player locks their position, the glass/flight playback finishes before the review modal opens. The modal reports the existing stance and position scoring and the actual scene's speed/spin/glass context. Players can replay the bounce or continue to tactical shot selection from the same pop-up.
