--- name: web-game category: game public: true database: optional hosting_hints: - itch-io - netlify - cloudflare-pages - vercel - github-pages - newgrounds audit_stack: - analyze - code-clean - perf - design-review - a11y - cso - doc plugins: context7: optional ui-ux-pro-max: optional gstack: optional --- # Web Game (browser-based) Jeu web navigateur — Phaser / Pixi.js / Three.js / Babylon.js / p5.js / Matter.js / Canvas 2D / WebGL brut. Distribution : itch.io / Newgrounds / site dédié / portail HTML5. ## Detection signals ### Strong signals (×3) - DEP: `package.json` contient l'un de : "phaser", "pixi.js", "three", "babylonjs" OR "@babylonjs/core", "matter-js", "p5" - STRING_IN_FILE: tout .js/.ts contient "new Phaser.Game(" OR "new PIXI.Application(" OR "new THREE.Scene(" OR "BABYLON.Engine(" ### Medium signals (×2) - DIR: `src/scenes/` OR `src/entities/` OR `src/sprites/` - FILE: `game.config.js` OR `src/config.js` avec game settings - DEP: "howler" OR "tone" OR "sound.js" (audio) - DEP: "gsap" OR "@tweenjs/tween.js" (animations) ### Weak signals (×1) - DIR: `assets/sprites/` OR `assets/audio/` OR `assets/tilesets/` - EXT: `.atlas` OR `.tmx` (Tiled maps) - DEP: "webpack" OR "vite" (bundler) - FILE: `index.html` avec `` ou `
` ### Counter-signals (exclusion) - DEP: "react-three-fiber" sans Three.js scène principale → peut être composant 3D dans app React (pas un jeu) ## Implications - **Hébergement** : itch.io (dominant indie), Newgrounds, Cloudflare Pages, Netlify, GitHub Pages, site custom - **Base de données** : OPTIONNELLE — souvent localStorage pour saves, parfois backend pour leaderboard/multiplayer - **SEO/GEO** : IMPORTANT si monétisation via portail web (mais jeu lui-même = canvas opaque) - **Surface sécurité** : MOYENNE-GRANDE si multiplayer ou backend (anti-cheat, auth) - **UI/UX** : CRITIQUE — game feel, juice, feedback ## Typical pain points - FPS instable (pas de rAF, setInterval utilisé, physics tickée dans render) - Assets chargés tous au démarrage (loading screen 30s) au lieu de streaming - Sprites non atlas (chaque image = requête réseau) - Audio non compressé (WAV uncompressed au lieu de OGG/WebM) - Pas de fallback WebGL → Canvas2D (GPU insuffisant = écran noir) - Memory leaks (scenes non destroy-ées, event listeners non cleanup) - Input hardcoded (pas de rebind, pas de support manette via Gamepad API) - Pas de pause native (perte focus tab = jeu continue en bg) - Persistance : localStorage (limitation 5MB, synchrone, bloquant) - Pas de save cloud ni cross-device - Multiplayer : auth client-side uniquement (triche triviale) - Accessibilité : pas d'options (no-motion, color-blind, subtitle, remappable controls) - Perf mobile : jeu pensé desktop, pas touch-optimized, pas adaptatif - Monétisation : ads ou IAP sans consentement RGPD - Analytics intrusifs (user tracking sans consentement) ## Interview questions (adaptive) En plus du set minimum business : - Moteur / framework : Phaser / Pixi / Three / Babylon / p5 / custom canvas / autre ? - Type de jeu : 2D / 3D / isométrique / top-down / platformer / puzzle / runner / autre ? - Solo / multijoueur / les deux ? - Persistance : localStorage / IndexedDB / backend (lequel) / cloud saves ? - Cible : desktop seulement / mobile / tablette / manette ? - FPS cible : 60 / 120 / variable ? - Monétisation : gratuit / premium / free-to-play + ads / IAP ? - Plateforme de distribution : itch.io / Newgrounds / site custom / Steam (via Electron ?) / autre ? - Multi-langue prévu ? - Audio : effets + musique ? compression ? - Rebind controls / manette prévu ? - Accessibilité : options (reduced motion / subtitles / color-blind) ? - Ads réseau si free : lequel ? - Leaderboard / social ? ## Plugin recommendations - **context7** : OPTIONAL — ON si Three/Babylon récents - **ui-ux-pro-max** : OPTIONAL — utile pour UI menus (pas pour gameplay) - **gstack** : OPTIONAL — tester sur navigateur ## Example project layout ``` index.html package.json vite.config.ts src/ main.ts game.ts config.ts scenes/ BootScene.ts MenuScene.ts GameScene.ts UIScene.ts entities/ Player.ts Enemy.ts systems/ InputManager.ts AudioManager.ts SaveSystem.ts data/ levels.json assets/ sprites/ player.atlas enemies.png audio/ music.ogg sfx/ tilesets/ world.tmx public/ index.html ```