# Session 4 — Ranmasé (Phaser 4) et Pa touché **Date :** 2026-07-27 ## Porte de sortie | Critère | Cible | Mesuré | |---|---|---| | Phaser dans le bundle initial | absent | **absent** du HTML prérendu de l'accueil ✅ | | Shell JS initial, Phaser exclu | ≤ 170 Ko gzip | **78 Ko** ✅ | | Bundle Phaser mesuré et consigné | fait | **348 Ko gzip**, inscrit dans l'ADR 0002 ✅ | | Miroir DOM de la scène | navigable | liste textuelle de ce qui tombe, canvas `aria-hidden` ✅ | | Écran de chargement designé | présent | flag chip + « Chargement du jaden… » ✅ | | Module Pa touché | aucun chrono, aucun score, aucune épreuve | ✅ | | `npm run check` | 0/0 | **266 fichiers, 0/0** ✅ | | fps sur Mali-G52 | ≥ 30 stables | **non mesuré** — demande un appareil réel | ## Pa touché — une consultation, pas un mode de jeu Cinq plantes, triées du plus grave au moins grave, chacune dépliable. Aucun chrono, aucun score, aucun classement, rien à débloquer. Le brief est catégorique et il a raison : transformer ces fiches en quiz d'adresse ferait d'une consigne de survie un jeu de rapidité. Le module affiche lui-même qu'il **n'a pas encore été relu** par une personne compétente, et dit qu'une telle relecture est la contribution la plus utile que le projet puisse recevoir. C'est dans le produit, pas seulement dans un fichier de développeur. ## Ranmasé — l'îlot Phaser Import dynamique depuis la route, `game.destroy(true)` au démontage, communication par **événements** — la scène ne lit ni n'écrit aucun état Svelte, et n'émet que lorsqu'une valeur change, jamais soixante fois par seconde. Trois choix de game design qui viennent de la pédagogie, pas du gameplay : - **Laisser passer une plante dangereuse ne coûte rien.** C'est le bon geste : le jeu ne peut pas récompenser le fait d'attraper ce qu'on doit éviter. - **Ramasser le mauvais fruit coûte 2 points, pas une vie.** Il n'y a pas d'erreur à cueillir un fruit comestible ; il y a juste une consigne à mieux lire. - **Une plante dangereuse sur cinq.** Présente, jamais dominante. Aucun asset externe : les objets sont des primitives graphiques dans la palette de la charte. Embarquer des textures avant que le pipeline n'ait produit quoi que ce soit de validé aurait été mettre la charrue avant les bœufs. ### Une prescription de l'ADR 0002 qui était fausse L'ADR demandait un « DPR plafonné à 1,5 » via l'option `resolution`. **Elle n'existe pas dans Phaser 4.** Corrigé et documenté : le tampon de rendu est fixé à 480 × 640 et étiré en CSS par le mode `FIT`, ce qui donne un plafond dur là où `resolution` n'aurait donné qu'un plafond relatif. L'ADR a été mis à jour plutôt que contourné.