Files
ki-fwi/docs/sessions/04-ranmase-patouche.md
T
OKIandClaude Opus 5 3c660c776b feat(session-4): module Pa touché et scène arcade Ranmasé en Phaser 4
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>
2026-07-27 12:07:48 -04:00

2.7 KiB
Raw Blame History

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é.