# Satisfying Bounce Jeu/jouet de vidéos verticales (TikTok/Shorts) avec jumphp/shorts + jumphp/physics + particles. 3-4 scènes: balle dans un cercle aux 3/4 fermé avec ouverture qui tourne (obligatoire), balles qui se multiplient, cercles concentriques qui se brisent, parcours de billes. Une note par rebond, traînées, particules, scène smoke auto-jouée, game tests, vidéos MP4 1080x1920 via bin/jumphp video:make. --- ## The JumPHP playground This project was made on the JumPHP playground: the game's page is https://jumphp.net/satisfying-bounce (category: Démos et expériences). - The game is `games/satisfying-bounce/`. Read `AGENTS.md` (the JumPHP contract) first; replace the skeleton with the game described above; follow the definition of done (tests, screenshots you look at, browser build). - **Develop with game tests, visually**: for each mechanic, as you write it, a test in `games/satisfying-bounce/tests/` that extends `JumPHP\Testing\GameTestCase` and plays it ("the player jumps onto the platform", "the enemy dies when hit"; AGENTS.md "Game tests"); `bin/jumphp test satisfying-bounce` after each change. The user watches them play live in Claude Code (the `jumphp-live` pane) and, after a push, replays each test filmed in the studio (MCP `run_tests`). - **Publishing**: every push to `main` is online within a minute (Git webhook). The MCP tool `sync_project` (server `jumphp`) publishes at once and returns the errors: a commit with a PHP syntax error is not published (the previous version stays online). - The playground loads the game file by file with its shared engine: Composer packages other than `jumphp/engine` are not available there. - **The game's home page**: make `games/satisfying-bounce/site/` (AGENTS.md section 13: themed with the game's own graphics, SEO, a link to `play/`); it is the game's page on the playground. Also `games/satisfying-bounce/assets/thumbnail.png`. - When the game is done: MCP `update_project` with `listed: true` shows it in the playground's directory.