A card-collecting and team-management game for amateur football, from District level to National 1, with the decisive chances played with a finger in 3D.

Pl. 01 / 16Case study

Légendes du Dimanche

A card-collecting and team-management game for amateur football, from District level to National 1, with the decisive chances played with a finger in 3D.

Job ticketNo. Pl. 01 · 2026
Client
Personal projectInstallable web game, mobile first · pilot: 205 clubs in northern France
Year
2026From 27 September to 3 November 2026: five phases, from the idea to the first playable slice going online
Role
Game design: core loop, cards, team chemistry, matches, economy, game design documentArt direction: name, identity, card templates, generated crests, kits and sponsorsProduct design and UI/UX, mobile first3D footballer and walk-out animations, built by script in BlenderLed the development with Claude Code: phase breakdown, approved plans, 44 recorded decisions, testing on a phone
Type of work
  • Web & App ✓
  • Branding ✓
  • Print
  • Motion ✓
  • Social media
  • Illustration
Deliverables
  • Playable slice: guest welcome, club choice, starter pack, 7-tab shell, match, shop
  • Deterministic 2D match engine and key moments playable in 3D (5 situations)
  • Pilot universe: 205 clubs, 4,839 fictional players, 9,749 cards, generated crests and kits
  • 8 card templates and a 3D pack opening where the player walks out before his card
  • Original 3D footballer (4,606 triangles) and three animated walk-out endings
  • Public club and card pages, share images and story
  • Docs: game design, architecture, roadmap, data and legal, decision log
Tools
  • Next.js 16
  • React 19
  • TypeScript
  • Three.js
  • PixiJS 8
  • Supabase
  • Vercel
  • Blender
  • Tailwind CSS 4
  • Zod
  • Vitest
  • Playwright
  • Claude Code

The film

Presentation film made for this portfolio from game captures (demo account).

Pl. 01 · The film0:00 / 0:00

The brief

Football card games are about the stars. Every Sunday, 2.3 million licensed players play in about 12,000 amateur clubs in France (French federation figures, 2023-24 season), and no game is about them. I wanted a collecting and team-management game where you back your local club, from District level to National 1: open packs, pick your eleven, watch the match in 2D and play the decisive chances yourself in 3D.

The challenge

Three rules from day one. Nothing real about people: fictional players, no minors, no logo or photo taken from the web. No existing game brand and no real money. And a server that trusts no one with anything of value: packs, credits, rewards. All of it had to run in 3D on a mid-range phone.

Features

  • Pick your club among 205, from District 5 to National 1
  • 18-card starter pack, 8 of them from your club
  • Auto-picked eleven, club and district chemistry
  • 2D simulated match, commentated by the club announcer
  • 3 to 6 key moments per match, played with a finger in 3D
  • Shop with displayed odds, credits earned by playing
  • Public pages and share images

The process

  1. 0127 September · Foundations

    The name, the game design document, the monorepo and the engine. The engine is deterministic from the start: same seed, same match, checked under Node, Deno and three browsers.

  2. 0228 September · The gesture

    Biggest risk first: the 3D key moment. You draw the shot with your finger, physics does the rest (spin, bounces, posts, nets), then the camera replays it in slow motion. 60 frames per second on an iPhone 13.

  3. 0329 September · The match

    A simulation in phases and duels, readable 2D choreography and 159 announcer lines. 10,000 simulated matches to tune the stats, then the switch to 3D on big chances.

  4. 043 October · The universe

    205 clubs and their squads drawn from a seed, generated crests, kits and sponsors, eight card templates, the 3D pack opening and our own footballer.

  5. 056 October → 3 November · The loop

    The server core (profiles, credit ledger, packs and cards in the database), the guest flow, the seven-tab shell, matches replayed and paid by the server, the shop, then going online with a captcha and anti-cheat limits.

Plates

The project at a glance: a card and management game for amateur football, from District to National 1
Pl. 01.1Sunday football deserves its legends
Generated crests and kits for the pilot clubs
Pl. 01.2205 clubs, zero real logos
Eight card templates, from bronze to former pro, and the anatomy of a card
Pl. 01.3A 90s sticker, treated like a pro card
3D pack opening: floodlights, club crest, player walk-out, card
Pl. 01.4The pack opening
3D key moment: shot trace, trajectory, wall, slow motion, tuning page
Pl. 01.5The gesture, the project’s biggest risk
2D top-down simulated match, then the switch to 3D on a “pass then shot” moment
Pl. 01.6Seen from above, played on the pitch
The 3D footballer in T-pose (mesh and kit), a club’s three kits, player walk-out
Pl. 01.7A Sunday footballer
Five phone screens, from welcome to shop
Pl. 01.8The first Sunday: from zero to the first match
The game shell on desktop: front page, collection, shop and eleven
Pl. 01.9Seven tabs, one club
The game’s front page on desktop
Pl. 01.10Desktop
The eleven and team chemistry on tablet
Pl. 01.11Tablet
The front page on a phone
Pl. 01.12Mobile
A club’s public page, share images and story
Pl. 01.13Sharing your club
Architecture: deterministic engine, 2D and 3D renderers, authoritative server
Pl. 01.14One engine, played twice
Five phases from 27 September to 3 November 2026, decisions and repository figures
Pl. 01.15Risk first, polish later
Pitch, chalk, floodlight, bronze, silver, gold palette; Big Shoulders and Manrope typefaces
Pl. 01.16The prestige of a final on a district pitch

Decisions

01

The server replays everything

A match is a seed, two frozen teams and the player’s inputs. The server replays it bit for bit before paying out credits. To make that possible, the engine uses neither free randomness nor the browser’s maths functions: it has its own.

02

Your own club, fictional players

Players are generated, all adults, and all change if the generator changes: that is a deliberate decision, like the engine fingerprint. Crests and sponsors are invented (“Bar-Tabac du Stade”) and every share image says so.

03

No real money, displayed odds

Credits are earned by playing: 300, 600 or 900 per win depending on the level, 25 per successful key moment. Every pack shows the odds per card and the odds of getting at least one.

04

Our own footballer

The Mixamo dummy only wore a painted-on shirt. I replaced it with an original footballer built by a Blender script: 4,606 triangles, one draw call per player, and a free kick that drops from 93 to 62 draw calls.

05

Feel is tuned by hand

Camera, gesture, physics, player walk-out: everything that affects feel has a tuning page in the game’s lab, instead of hard-coded values.

06

Claude Code to go further

Claude Code wrote most of the code under my direction. I break down each phase, approve the plan before work starts, try every build and record the decisions. That is what let me take on a project this size in five weeks.

Results

  • 205Pilot clubs, from District 5 to National 1
  • 9 749Generated cards, for 4,839 fictional players
  • 60 i/sFor the 3D key moment on an iPhone 13
  • 166Commits in five weeks, 47 pull requests

What I take away

The hardest part was not the 3D but trust: as soon as a credit has value, the browser can no longer write anything. Making the engine deterministic on day one made everything simpler later: the server replays, slow-motion replays cost nothing and tests compare a fingerprint. Next step: open the slice to the public and have club players try it.

Palette

Colours sampled from the project visuals.

  • Night pitch#06140FC70 M0 Y25 K92
  • Pitch#1D5A41C68 M0 Y28 K65
  • Chalk#F4F1E8C0 M1 Y5 K4
  • Floodlight#FFD166C0 M18 Y60 K0
  • Bronze#B87333C0 M38 Y72 K28
  • Silver#C0C7CFC7 M4 Y0 K19
  • Gold#D4AF37C0 M17 Y74 K17