Pa touché est une consultation, pas un mode de jeu : cinq plantes triées par gravité, dépliables, sans chrono, sans score, sans épreuve. Le module affiche lui-même qu'il n'a pas encore été relu par une personne compétente et dit que cette relecture est la contribution la plus utile au projet. Ranmasé : import dynamique, game.destroy(true) au démontage, communication par événements — la scène ne touche aucun état Svelte et n'émet que sur changement, jamais par frame. Miroir DOM sémantique, canvas aria-hidden, jouable au clavier. Écran de chargement designé. Game design guidé par la pédagogie : laisser passer une plante dangereuse ne coûte rien (c'est le bon geste), ramasser le mauvais fruit coûte 2 points et pas une vie (il n'y a pas d'erreur à cueillir), une plante dangereuse sur cinq. Budgets mesurés et consignés dans l'ADR 0002 - shell hors Phaser : 78 Ko gzip (budget 170) - Phaser seul : 348 Ko gzip, sous le seuil de réexamen de 450 - absent du chemin critique de l'accueil, vérifié sur le HTML prérendu - build total 1,4 Mo Une prescription de l'ADR 0002 était fausse : l'option `resolution` n'existe pas dans Phaser 4 (pixelRatio y est en lecture seule). Le plafonnement passe par un tampon de rendu fixe 480×640 étiré en CSS — plafond dur plutôt que relatif. L'ADR est corrigé, pas contourné. Reste non mesuré : les 30 fps sur Mali-G52, qui demandent un appareil réel. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2.7 KiB
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é.