LifePlay-Revival/Docs/Migration/etat/BOSS/COMMUN-19-TESTS.md

105 lines
16 KiB
Markdown
Raw Normal View History

Fiche COMMUN-19-FIT — Niveau N1 — Modèle prévu sonnet | utilisé claude-sonnet-5-5 — Agent lp-writer (rôle A-DOC) — Skills sk-protocol, lp-doc, lp-lot
# COMMUN-19-TESTS : fiche de tests commune de la build Development COMMUN-19 (CAM2 IMPL-05 et IMPL-06 : trace POV, plafond de vue dehors, aide, POV de scène d'avant) (2026-10-20)
Demande de Big Boss (`local_104ff22d`), 2026-10-20, sur ordre de l'utilisateur : « Oui, lance la build Development COMMUN-19 (CAM2 IMPL-05 : trace POV, plafond dehors, aide) et prépare le cahier de tests. » Cette fiche reprend le FAIL du cas .2 de COMMUN-18 (POV de scène bloqué à la souris, `BOSS-JOURNAL.md` 2026-10-20 14:14), l'arbitrage de `CAM2-DIAG-02.md` § 7-9, `CAM2-IMPL-05.md` § 6 (essai proposé), puis des non-régressions courtes. Fiche **prête** : § 1 (MD5, heure) à compléter par Big Boss à la remise de la build. Rédigée sans copie UE, sans MCP, sans lancer le jeu. Aucun contenu de jeu : chaque action est décrite par sa fonction ; la scène intime est dite « scène » (identifiant technique de scène admis). Forme reprise de `COMMUN-18-TESTS.md`.
**Hors fiche** : la branche « pièce cachée » (cas .10 de COMMUN-18, Z d'entrée du couple) et ERR-145 (C1 assis, corps sans tête), reportées en build 2 ; le regroupement du menu Clavier par fonctionnalité (`KEY2-SPEC-02.md`), qui attend la décision de l'utilisateur.
## 1. Build testé
| Élément | Valeur |
|---|---|
| Chemin de la build | `D:\Game\LifePlay_Build_5.8_Development_COM19\Windows\` (lancer `Windows\LifePlay.exe`) ; confirmé par Big Boss à la remise |
| Exe | `Windows\LifePlay\Binaries\Win64\LifePlay.exe` |
| MD5 de l'exe | `ab13089a1ee89b0ed4a33b0e47bf91ac` (identique à `Binaries\Win64\LifePlay.exe` du projet, compilation CAM2 IMPL-05) ; 335 821 312 octets |
| Date de génération | exe lié le 2026-10-20 à 14:28:25 ; paquet par `BuildDebug.ps1 -Config Development -ArchiveDir` lancé à 14:37:37, UAT code 0 en 129 s, CheckPackage PASS, cuisson 0 erreur et 1 avertissement attendu (163 paquets cuits) ; `PC` recuit à 14:38:50 (date de `Saved\Cooked\Windows\LifePlay\Content\BPs\PC.uasset`, relevée par Big Boss) ; journal `Saved\Logs\portage\BuildDebug_Development_20261020-143737.log` |
| Configuration | Development, commune à plusieurs lots |
| Base | HEAD `fa86b6f` + sources et Blueprints non commités de CAM2 (IMPL-02 à IMPL-05) et de KEY2 ; IMPL-05 compilée à 14:28 (éditeur et Development « Succeeded », 0 erreur, 1 avertissement C4701 déjà connu, `Aim`, `CAM2-IMPL-05.md` § 4) ; **IMPL-06 : `PC` nœud 109, broche B remise à -1, écriture MCP sous instantané `CAM2-IMPL7`, BUILD-FIN de CAM2 à relire** |
| Génération | faite : `etat\BOSS\COMMUN-19\COMMUN-19-BUILD.md` |
MD5 des sources attendus (`CAM2-IMPL-05.md` § 4 ; 8 premiers caractères) : `LPCameraModeSubsystem.cpp` `4FD44BD4` (seul fichier C++ changé par IMPL-05), `LPKeyboardSubsystem.cpp` `9D450AAF`, `LPRoomBoundsCameraModifier.h` `F5EEAE05`, `LPRoomBoundsCameraModifier.cpp` `A3B03194`, `Room.uasset` `2B1CFA2E`. `PC.uasset` : `681F8372` était la valeur **avant** IMPL-06 ; elle **doit avoir changé** (broche 109.B) ; nouvelle valeur à relever dans la BUILD-FIN de CAM2 et à citer ici.
Lots et correctifs couverts :
- **CAM2-IMPL-05** (`CAM2-IMPL-05.md` § 3) : témoin « POV souris » (lecture seule, `TickSexCamera`) ; plafond de **vue** dehors = dessus du sol + 1000 cm quand aucun plafond n'est trouvé et que `Room.WallT` est masqué (bornes du couple inchangées) ; témoin « Borne de vue » complété (`haut de vue N`, mention « dehors ») ; aide : « move the couple right / left (X) ».
- **CAM2-IMPL-06** (en cours) : `PC` 109.B remis à -1, soit le **POV de scène de COMMUN-17**, sur la préférence de l'utilisateur (« je préférai le comportement que l'on avait avant dans les scène POV de couples », 2026-10-20 14:23). C1 hors scène garde le sens `C1MouseSign = +1` (PASS en COMMUN-18.1).
- **Hors correctif** : le blocage du POV à la souris (FAIL COMMUN-18.2) n'est **pas expliqué** (`CAM2-DIAG-02.md` § 9 : P1 réfuté ; P2, P3, P4 restent). Le témoin de cette build doit les départager : les cas .1 à .4 servent d'abord à **relever**, le verdict visuel vient ensuite.
Constantes à connaître : `C1MouseSign = +1` ; bornes de tangage C1 -60 / +70 ; plafond de vue dehors = sol + 1000 cm moins `SceneCeilingMargin` (20 cm) ; `SexMaxPitch` = 80° (tangage clavier en POV) ; marge de couple `CoupleWallMargin` = 80 cm.
## 2. Faisabilité
Machine calme : réserve « mesure » non requise. Sauvegarde et copie d'essai : **à faire à la remise de la build** (copie de la sauvegarde du joueur avant l'essai). Lancement et journal : à compléter à la remise (`Windows\LifePlay\Saved\Logs\LifePlay.log` de la build).
Lecture des témoins (`CAM2-IMPL-05.md` § 3) :
- « POV souris : » : au plus **une ligne par seconde**, seulement s'il y a de l'activité (souris, touches ou bouton tenu), en POV (index de scène > 0). Elle porte `CursorX` / `CursorY` cumulés, `avant` / `cote`, `MoveCamera`, boutons G / D, index, la vue, l'acteur que le BP tourne (« meme acteur que la vue » ou « AUTRE acteur que la vue »), la rotation monde et relative du `FirstPersonSM` de la vue, l'**écart** depuis la ligne précédente, et la rotation de celui que tourne le BP.
- « Borne de vue : » : écrite à chaque **changement** d'état ou de libellé (pas chaque seconde) ; changer de caméra pour provoquer une ligne.
| Cas | Fonction ou réglage dans la build ? | Dépend d'un travail non fini ou d'une observation |
|---|---|---|
| .1 à .4 (POV) | témoin oui (IMPL-05, compilé) ; broche `PC` 109.B = -1 : **IMPL-06 en cours**, à vérifier à la BUILD-FIN | **Cause du blocage de COMMUN-18.2 non établie** ; le résultat dira si le POV d'avant revient ; Q / D et Z / S ne passent pas par le BP (C++, `CAM2-DIAG-02.md` § 7.1) : aucun comportement vu en jeu en COMMUN-18 |
| .5, .6 (plafond dehors) | oui (IMPL-05) | Effet seulement visible dans une scène d'**extérieur** ; compilé, jamais vu en jeu |
| .7 (aide) | oui (IMPL-05) | Texte seul ; 12 `%s` pour 12 arguments conservés |
| .8 à .11 | oui | non-régressions ; .8 et .11 PASS en COMMUN-18 (.1 et .17) |
## 3. Cas
Contrôle automatique : motif cherché dans le journal de jeu, lancé avant la remise par `Tools\EssaiJournal.ps1` quand il existe. Verdict, Découvreur et Heure restent vides : le BILAN les remplit. « Journal » = `Saved\Logs\LifePlay.log` de la build.
### 3.1 CAM2 : POV de scène (souris, Q / D, Z / S)
Prérequis communs : lancer une **scène** dans une pièce intérieure visible, passer en vue à la première personne (POV, tête d'un des deux personnages) ; **C** passe d'un personnage à l'autre (index 1 puis 2). Ne pas lancer deux gestes à la fois : une activité à la fois, pause d'au moins 2 secondes entre deux gestes, pour que chaque geste ait sa ligne.
| Cas | Lot | Correctif (CHG / ERR / ticket) | Action de l'utilisateur | Attendu | Contrôle automatique du journal | Verdict | Découvreur | Heure |
|---|---|---|---|---|---|---|---|---|
| COMMUN-19.1 | CAM2 | IMPL-05 (témoin) et IMPL-06 (109.B = -1) ; retour de COMMUN-18.2 (FAIL) ; CHG-376 (réservé, non versé) | POV, **personnage 1** : 1. souris **bouton tenu** (d'abord le droit, puis le gauche) : **haut**, puis **bas**, puis **gauche**, puis **droite** ; 2. **noter** pour chaque geste si la vue bouge et dans quel sens (souris vers le haut = vue vers le haut ou vers le bas ?) ; 3. souris sans bouton tenu, mêmes quatre gestes | **Cible : le comportement de COMMUN-17** (POV d'avant, choix de l'utilisateur) : la vue **bouge** à la souris, haut / bas et gauche / droite. Noter le sens obtenu. Si la vue ne bouge pas (comme en COMMUN-18.2) : noter quels gestes, avec quel bouton ; ne pas insister, la trace le dira | motif `POV souris : ` : au moins 1 ligne par geste. Lire : `CursorX` / `CursorY` **non nuls** quand la souris bouge (sinon l'entrée n'arrive pas : piste P2) ; « AUTRE acteur que la vue » (piste P3) ; **écart** de rotation non nul alors que la vue est jugée bloquée, ou roulis (R) non nul (piste P4) ; index = 1 | | | |
| COMMUN-19.2 | CAM2 | `TickSexCamera` (clavier tourne la tête de la vue, non modifié) ; `CAM2-DIAG-02.md` § 7.1 | POV, **personnage 1** : tenir **Q** puis **D** (2 s chacune), puis **Z** puis **S** (2 s chacune) ; noter si la vue bouge et dans quel sens | **Q / D** tourne la vue à gauche / à droite (lacet) ; **Z / S** la lève ou la baisse (tangage, arrêt vers ±80°). Aucun déplacement du couple. Noter le sens de chaque touche, y compris s'il est contraire à l'attendu ou si rien ne bouge | motif `POV souris : ` : lignes avec `cote=±1` (Q / D) puis `avant=±1` (Z / S) ; **écart** de rotation de la vue non nul : lacet pour Q / D, tangage pour Z / S ; `CursorX` / `CursorY` ≈ 0 | | | |
| COMMUN-19.3 | CAM2 | idem .1 | Presser **C** pour passer au **personnage 2** (index 2). Refaire le geste du .1 : souris bouton tenu, haut, bas, gauche, droite ; puis souris sans bouton | Même cible que .1 : la vue **bouge**. Noter si le comportement diffère de celui du personnage 1 (vue, sens) | motif `POV souris : ` avec index = 2 ; comparer aux lignes du .1 : « tournée par le BP » désigne-t-il le **même** acteur que la vue ? (« AUTRE acteur » en index 2 seulement = piste P3) ; `CursorX` / `CursorY` non nuls ; écart de rotation | | | |
| COMMUN-19.4 | CAM2 | idem .2 | Personnage 2 : tenir **Q** puis **D**, puis **Z** puis **S** (2 s chacune) | Comme .2 : Q / D lacet, Z / S tangage de la vue du personnage 2 | motif `POV souris : ` avec index = 2 et `cote=±1` puis `avant=±1` ; écart de rotation non nul de la vue | | | |
### 3.2 CAM2 : plafond de vue dehors
| Cas | Lot | Correctif (CHG / ERR / ticket) | Action de l'utilisateur | Attendu | Contrôle automatique du journal | Verdict | Découvreur | Heure |
|---|---|---|---|---|---|---|---|---|
| COMMUN-19.5 | CAM2 | Plafond de vue dehors = sol + 1000 cm ; `CAM2-DIAG-02.md` § 8.3 ; `CAM2-IMPL-05.md` § 3 point 2 ; retour de COMMUN-18.9 (16 reprises de la vue à ≈ 2,16 m) | Lancer une scène d'**extérieur** ; vue de scène : **monter la vue avec G** (tenir G longtemps) jusqu'à l'arrêt ; noter la hauteur atteinte à l'œil (au-dessus des têtes, bien plus haut que 2 m ?) | La vue **monte bien au-delà de 2 m** (environ 10 m au-dessus du sol), **ne bute plus** vers 2 m et ne revient pas brutalement en arrière ; arrêt en haut sans saccade | motif `Borne de vue : active` avec `haut de vue ` suivi d'un nombre élevé et `(dehors : sol + 1000, WallT masque)` : au moins 1 (relever le « haut de vue ») ; motif `Camera hors piece` avec `plafond` : **0**, ou aucune ligne sous ≈ 2 m (en COMMUN-18 : 16 lignes à 216) | | | |
| COMMUN-19.6 | CAM2 | idem .5 | Même scène d'extérieur : **orbite** au bouton droit (haut et bas), travelling, recadrage ; chercher à placer la vue haut dans le ciel | La vue **ne butte plus** vers 2 m en orbite ; aucun recul brutal de plusieurs dizaines de centimètres ; murs et zone horizontale inchangés | même motif que .5 ; motif `Camera hors piece` : lire toute ligne restante (borne franchie, distance au pivot) pour le BILAN | | | |
### 3.3 CAM2 : écran d'aide
| Cas | Lot | Correctif (CHG / ERR / ticket) | Action de l'utilisateur | Attendu | Contrôle automatique du journal | Verdict | Découvreur | Heure |
|---|---|---|---|---|---|---|---|---|
| COMMUN-19.7 | CAM2 | Aide ; `CAM2-DIAG-02.md` § 7.2 ; remarque de COMMUN-18.13 | Ouvrir l'**écran d'aide des commandes en scène** ; lire la ligne des flèches gauche / droite du couple | La ligne se lit « Right/Left: move the couple **right / left** (X) » (mots dans cet ordre, touches liées réelles devant) ; la ligne haut / bas reste « forward / back (Y) » ; aucun « ? » ; autres lignes intactes | sans objet : constat visuel (capture d'écran bienvenue) | | | |
### 3.4 Non-régression
| Cas | Lot | Correctif (CHG / ERR / ticket) | Action de l'utilisateur | Attendu | Contrôle automatique du journal | Verdict | Découvreur | Heure |
|---|---|---|---|---|---|---|---|---|
| COMMUN-19.8 | CAM2 | `C1MouseSign +1` (PASS en COMMUN-18.1) | Jeu libre, caméra C1 (hors scène) : monter puis descendre la souris ; tourner la souris à l'horizontale | **Souris vers le haut = regarder vers le haut**, comme en COMMUN-18 ; arrêt vers +70° / -60° ; **non modifié par le retour du POV d'avant** (IMPL-06 ne touche que le POV de scène) | motif `C1 souris` : au moins 1 ligne ; quand `CursorY` est positif, `tangage voulu` positif | | | |
| COMMUN-19.9 | CAM2 | V / X, flèches (PASS en COMMUN-18.5 à .7) | Scène en pièce **visible** : tenir **V** puis **X**, puis les flèches haut / bas, puis gauche / droite, jusqu'à l'arrêt | V monte, X descend ; flèches : Y puis X du monde ; arrêt aux bornes sans saccade ; aucune rotation du couple | motif `Scene : CoupleMoveY \(Z\)=`, `Scene : DownUp \(Y\)=`, `Scene : LeftRight \(X\)=` : une ligne chacun ; motif `ignore \(interieur inconnu\)` : 0 | | | |
| COMMUN-19.10 | CAM2 | Borne de vue (IMPL-02, PASS en COMMUN-18.16) | Scène en pièce visible : vues `Scene`, `C3 Couple`, `C3 Room (old)` (C2 et C3) : orbite au bouton droit, travelling contre les murs ; puis C2 hors scène | C2 et C3 **ne traversent pas les murs** ; C2 hors scène inchangé. Rappel : le plafond de vue relevé ne vaut que dehors ; en pièce visible, la vue butte toujours sous le plafond | motif `Borne de vue : active \(Camera: Scene\)` et `\(Camera: C3 Couple\)` : au moins 1 chacun, **sans** la mention « dehors » ; motif `Borne de vue : inactive \(Camera: C2 Follow\)` : au moins 1 | | | |
| COMMUN-19.11 | KEY2 | Disposition QWERTY / AZERTY (PASS en COMMUN-18.17) | Disposition **AZERTY** (menu Clavier) : marche ZQSD ; fermer le jeu, relancer ; vérifier la disposition | La marche suit la disposition ; **AZERTY conservée** après relance (« Layout: AZERTY ») ; les touches du .2 et du .4 (Q / D, Z / S) sont lues dans la disposition choisie | motif `51 actions et 17 axes relus` (ou équivalent) à la relance ; motif `illisible` (ligne « Clavier ») : 0 ; motif `Fatal\|Unhandled\|Critical error\|Assertion failed` : 0 | | | |
Décompte : **11 cas** : POV de scène 4 (.1 à .4), plafond dehors 2 (.5, .6), aide 1 (.7), non-régression 4 (.8 à .11).
Relevés communs au journal (hors cas) : `Fatal|Unhandled|Critical error|Assertion failed` = 0 ; `Accessed None` : aucun nouveau ; motif `Camera hors piece` : lire toute ligne (borne franchie, distance au pivot) ; aucune ligne `Camera hors piece` dans une vue exclue (C1, POV, Overview, C2). Au bilan, pour .1 à .4, **recopier les lignes `POV souris : ` clés** (une par geste) : c'est la preuve qui départage P2, P3 et P4.
## 4. Cas témoins
| Cas | VAL statique (chemin) | Verdict statique |
|---|---|---|
| COMMUN-19.1 à .4 | aucune VAL propre | `CAM2-IMPL-05.md` § 4 : compilé seulement (éditeur et Development, 0 erreur) ; témoin en lecture seule ; IMPL-06 : écriture MCP d'une broche, **BUILD-FIN à citer** ; comportement non validé |
| COMMUN-19.5, .6 | aucune VAL propre | compilé seulement (`CAM2-IMPL-05.md` § 4) ; le plafond de vue dehors n'a jamais été vu en jeu |
| COMMUN-19.7 | `CAM2-VAL-03.md` (c8) pour le compte des `%s` | PASS-STATIC (avant IMPL-05) ; affichage de la nouvelle ligne non vu |
| COMMUN-19.8 | `COMMUN-18-TESTS.md` (cas .1), BILAN de COMMUN-18 | PASS en jeu en COMMUN-18 |
| COMMUN-19.9 | `COMMUN-18-TESTS.md` (cas .5 à .7) | PASS en jeu en COMMUN-18 (`BOSS-JOURNAL.md` 2026-10-20 14:15) |
| COMMUN-19.10 | `Docs\Migration\etat\CAM\CAM2\CAM2-VAL-02.md` | PASS statique ; PASS en jeu en COMMUN-18 (.16) |
| COMMUN-19.11 | `Docs\Migration\etat\REL\KEY2\KEY2-VAL-03.md` | PASS statique ; PASS en jeu en COMMUN-18 (.17, 14:27) |
Aucune VAL de comportement n'existe pour les cas .1 à .7 : aucun verdict statique ne vaut pour un cas de jeu.
PubCheck : 0 constat(s) (`Tools\PubCheck.ps1 -Fichiers <ce fichier>`, code 0).
Tours : 7 / 40
## Fichiers à commiter
- `Docs/Migration/etat/BOSS/COMMUN-19-TESTS.md` (A).