LifePlay-Revival/Docs/Migration/etat/REL/FIX1/FIX1-MES.md
2026-10-21 09:36:04 +02:00

125 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Fiche FIX1-MES — Niveau N1 — Modèle prévu non précisé par la fiche | utilisé claude-sonnet-5-5 — Agent lp-writer (rôle A-DOC) — Skills sk-protocol, lp-doc, lp-lot
# FIX1-MES : protocole de séance de mesure `-LPPersonsLog=2` (hauteur de talons et animation « look », F8b et F7b) (2026-10-20)
Demande de Big Boss (`local_104ff22d`), 2026-10-20, sur ordre de l'utilisateur, cité mot pour mot : « … en build 1, ajoute la hauteur de talons et l'animation à la trace M-Z, et prépare la séance de mesure -LPPersonsLog=2. » Protocole de **20 à 30 minutes**, pour l'utilisateur, au ton et au format de `etat\BOSS\COMMUN-21-TESTS.md` (pas à pas, résultat attendu, motif de journal). Il reprend `FIX1-F7-PRE.md` (§ 3.1 F7b et F8b, § 3.3, § 3.4 « Ordre conseillé », § 6 questions 2 et 3). Rédigé sans copie UE, sans MCP, sans lancer le jeu. Aucun contenu de jeu : tenue et actions décrites de façon neutre (doc 27).
**Ce que la séance doit trancher** (`FIX1-F7-PRE.md` § 4, « Incertain »)
- **F8b** : le décalage du maillage au lever (meshZ −80,4 / −82,8 / −85,2 au lieu de −90) vient-il des **talons** (formule estimée −90 + 12 × HeelHeight, `FIX1-F7-PRE.md:119`, `:170`) ou de la **place** (animation de meuble) ? Question 4 de `FIX1-F7-PRE.md` § 6 : le personnage flotte-t-il réellement à l'écran ?
- **F7b** : l'animation « look » reste-t-elle **jouée** après la fin de l'action (`anim=single:…look`), ou seule la variable `currentAnimation` est-elle périmée ? Effet visible ? (`FIX1-F7-PRE.md:158`, `:203`).
## 1. Build à utiliser
| Élément | Valeur |
|---|---|
| Build visée | **COMMUN-22** : `D:\Game\LifePlay_Build_5.8_Development_COM22\Windows\LifePlay.exe` ; exe `e2ba7dec63d479974394e2cffd1efc19` (F8a + trace M-Z enrichie), paquet du 2026-10-20 20:24 (`etat\BOSS\COMMUN-22\COMMUN-22-BUILD.md`) |
| Trace M-Z enrichie | fiche `FIX1-MZ-IMPL.md` (LPDirectControlSubsystem.cpp 687c63d8, exe e2ba7dec) ; format exact : `M-Z : <acteur> maillage relatif Z <avant> -> <après> (gabarit <classe>), debout sans meuble ; HeelHeight=<%.3f|?> ; currentAnimation=<nom|-|?> ; -90+12*HeelHeight=<%.2f|?>` ; `?` = variable introuvable, `-` = animation vide ; comparer `<avant>` à `-90+12*HeelHeight=` |
| Repli | la build **COM21** actuelle, `D:\Game\LifePlay_Build_5.8_Development_COM21\Windows\LifePlay.exe`, **sans** la trace enrichie : la séance reste utile, car les lignes `STATE … meshZ= … currentAnimation=` suffisent (§ 4) ; seule la ligne `M-Z :` reste sans talons ni animation |
| Copie UE | non requise : la séance se joue sur une build empaquetée, sans éditeur |
**Ligne de commande prête** (PowerShell, build COMMUN-22) :
```powershell
& "D:\Game\LifePlay_Build_5.8_Development_COM22\Windows\LifePlay.exe" -LPPersonsLog=2
```
Sens exact de `-LPPersonsLog=2` (lu dans `Source\LifePlay\LPDebugSubsystem.cpp:638-650`) :
- `=2` = un relevé **toutes les 2 secondes** au journal (valeur par défaut sans nombre : 5 s ; plancher : 1 s) ;
- au lancement, une ligne `LPDebug persons : releve toutes les 2 s` (catégorie `LogLifePlay`, niveau `Display`) ; absente = l'argument n'a pas été pris, arrêter et le dire ;
- le relevé périodique n'écrit **pas** de fichier (`WritePersonsDump(…, false)`, `:646`) : tout est au journal `<build>\Windows\LifePlay\Saved\Logs\LifePlay.log` ;
- chaque relevé contient, par personnage, une ligne `LPDebug persons : STATE <acteur> coll=… grav=… moveTick=… meshZ=… anim=… currentAnimation=…` (`:414`, préfixe `LPDebug persons : ` ajouté par `:580`) : `meshZ` = Z **relatif** du maillage ; `anim` = `single:<clip>` si un clip isolé est joué, `bp:<AnimBP>` si l'AnimBP pilote, `-` sinon (`:404-413`) ; `currentAnimation` = variable Blueprint du personnage, `-` quand elle est vide (`FIX1-F7-PRE.md:160`).
- Au journal, **l'heure** de chaque ligne sert à retrouver l'instant noté à la main (§ 3 et § 4).
Alternative ponctuelle, sans relancer : console `LifePlay.PersonsDump` (un seul relevé, **avec** un fichier `PersonsDump_<date>_<heure>.txt`, `:631-634`, `:584-587`).
## 2. Préparation (3 minutes)
1. Fermer le jeu s'il est ouvert. Ouvrir une montre ou une horloge visible : **chaque geste est noté avec l'heure** (heure:minute:seconde, celle du poste).
2. Lancer la ligne de commande du § 1. Charger une partie existante (ou nouvelle partie) avec un personnage joueur, dans une rue ou une pièce dégagée, **sans scène en cours**.
3. Vérifier, une fois le jeu chargé, la présence de `releve toutes les 2 s` :
```powershell
Select-String -Path "D:\Game\LifePlay_Build_5.8_Development_COM22\Windows\LifePlay\Saved\Logs\LifePlay.log" -Pattern 'LPDebug persons : releve toutes les'
```
Attendu : 1 ligne.
4. Préparer le **cahier** (papier ou fichier, hors jeu) : une ligne par geste, colonnes `heure | geste | ce qu'on voit à l'écran`.
5. Prévoir : une tenue **avec chaussures à talons** pour le joueur, la même sans talons (ou des chaussures plates), une **chaise ou un canapé** utilisable, et un **meuble de boutique** avec l'action « regarder » (celui de COMMUN-8 était une vitrine).
## 3. Cas
Format comme `COMMUN-21-TESTS.md` § 3 : Verdict, Découvreur, Heure restent vides, le BILAN les remplit. Contrôle automatique = motif cherché par Big Boss dans le journal (§ 4).
### 3.1 F8b : talons contre place (≈ 12 minutes)
| Cas | Lot | Objet | Action de l'utilisateur | Attendu | Contrôle automatique du journal | Verdict | Découvreur | Heure |
|---|---|---|---|---|---|---|---|---|
| FIX1-MES.1 | FIX1 | F8b, point de départ | Joueur **en chaussures plates ou sans talons**, debout, immobile 10 s. Noter l'heure. | Personnage debout normalement, pieds au sol. | lignes `STATE PlayerCharacter` sur ces 10 s (5 relevés) : `meshZ=-90.0` | | | |
| FIX1-MES.2 | FIX1 | F8b, sans talons | Toujours sans talons : **s'asseoir** sur la chaise (noter l'heure), rester 10 s, **se lever** (noter l'heure), rester debout et immobile 10 s. Regarder les pieds avant l'assise et après le lever. | Après le lever : pieds posés sur le sol, ni suspendus ni enfoncés. | juste après le lever : `meshZ=-90.0` dans les relevés de la fenêtre ; `M-Z :` : **0** ligne sur cette fenêtre | | | |
| FIX1-MES.3 | FIX1 | F8b, changement de tenue | **Changer de tenue** : mettre les **chaussures à talons** (noter l'heure). Rester debout et immobile 10 s. Comparer à l'écran avec MES.1. | Le personnage est un peu **rehaussé** par les talons : noter ce qu'on voit (« pieds au sol », « flotte », « trop haut »). | relevés debout : `meshZ=` **différent de −90** ; valeur attendue −90 + 12 × HeelHeight (par exemple −85,2 / −82,8 / −80,4 pour HeelHeight 0,4 / 0,6 / 0,8) | | | |
| FIX1-MES.4 | FIX1 | F8b, talons et assise | Avec les talons : **s'asseoir** (heure), rester 10 s, **se lever** (heure), rester debout immobile **10 s sans bouger**. Regarder les pieds : le personnage **flotte-t-il** au-dessus du sol après le lever ? Noter aussi si cela dure plus de 1 à 2 s. | Réponse visuelle sans ambiguïté : « flotte » ou « ne flotte pas ». Si M-Z a fonctionné, le flottement dure au plus environ 1 s (2 balayages de 0,5 s, `LPDirectControlSubsystem.cpp:1211-1213`). | une ligne `M-Z : PlayerCharacter maillage relatif Z <avant> -> <après> (gabarit …), debout sans meuble` dans la minute qui suit le lever, ou son absence ; `<avant>` à comparer à la formule des talons ; **COMMUN-22 : hauteur de talons et animation à lire sur la même ligne** (format : à compléter, `FIX1-MZ-IMPL.md`) | | | |
| FIX1-MES.5 | FIX1 | F8b, retour sans talons | Reprendre les chaussures plates ou **retirer** les talons (changer de tenue). Répéter **s'asseoir puis se lever** (heures notées). | Sans talons, au lever : retour à −90,0 ; **aucune** ligne `M-Z :` si MES.2 n'en avait pas. Si une ligne `M-Z :` apparaît **sans talons**, la place est en cause (pas les talons). | relevés après le lever : `meshZ=-90.0` ; nombre de lignes `M-Z :` sur la fenêtre : noter | | | |
| FIX1-MES.6 | FIX1 | F8b, personnages non joueurs (facultatif) | Si un personnage non joueur est visible et utilise un siège : l'observer s'asseoir puis se lever (heure), noter s'il flotte. Passer si aucun n'est visible. | Même lecture que MES.4 ; noter « sans objet : aucun personnage non joueur à portée » sinon. | lignes `STATE <acteur>` du personnage observé (nom lu dans le journal) ; lignes `M-Z :` visant ce nom (2 sur 18 visaient des personnages non joueurs, `FIX1-F7-PRE.md:116`) | | | |
### 3.2 F7b : animation « look » restée active (≈ 8 minutes)
| Cas | Lot | Objet | Action de l'utilisateur | Attendu | Contrôle automatique du journal | Verdict | Découvreur | Heure |
|---|---|---|---|---|---|---|---|---|
| FIX1-MES.7 | FIX1 | F7b, référence | Joueur debout, **hors de tout meuble**, immobile 10 s, avant l'action. Noter l'heure. | Aucune animation de meuble. | `STATE PlayerCharacter … currentAnimation=-` | | | |
| FIX1-MES.8 | FIX1 | F7b, action « regarder » | Devant le meuble de boutique, lancer l'action « **regarder** ». Noter l'heure du **début** puis celle de la **fin** de l'action (quand le personnage reprend la main). Laisser l'animation aller à son terme. | Le personnage joue l'animation de regard, puis l'action se termine. | pendant l'action : `currentAnimation=fnt_…-look` (nom d'animation finissant par `look`) avec `anim=single:…` ; noter la première heure où il apparaît | | | |
| FIX1-MES.9 | FIX1 | F7b, après la fin | **Dès la fin** de l'action, ne rien toucher 20 s : le personnage est debout, dans la même pièce. Noter à l'écran : posture **penchée** ou normale, tête tournée ou non. | Posture normale. | **Cas à retenir** : `currentAnimation=fnt_…-look` encore présent **après** l'heure de fin ; `anim=single:…look` encore présent (le clip joue encore) ou `anim=bp:…` avec la variable seule périmée | | | |
| FIX1-MES.10 | FIX1 | F7b, changement de pièce | **Sortir** du lieu (rue, autre pièce ou autre étage), marcher 10 s, noter l'heure et la posture. Puis revenir et marcher encore 10 s. | Posture normale, marche normale. | après le changement de pièce : `currentAnimation=` (valeur) et `anim=` ; COMMUN-8 montrait `fnt_new038-f-0-look` conservé dans la rue puis au café (`STG-COMMUN8-DIAG.md:22`) | | | |
| FIX1-MES.11 | FIX1 | F7b, répétition | Refaire MES.8 à MES.10 **une fois** sur un autre meuble offrant « regarder » (ou le même). | Même résultat qu'à MES.9 : si `currentAnimation` reste en `look` deux fois, le défaut est reproductible. | idem MES.9 | | | |
Arrêt anticipé : si le personnage reste **bloqué** (animation qui ne se termine pas, plus de contrôle), noter l'heure, ne pas relancer d'action, passer au § 5.
## 4. Ce que Big Boss lira ensuite au journal
Journal : `<build>\Windows\LifePlay\Saved\Logs\LifePlay.log` du lancement jugé (le jeu en garde un exemplaire horodaté à chaque lancement). Lecture par **Grep sur fichier nommé** (un Grep de dossier saute les `.txt` ignorés par git, `FIX1-F7-PRE.md` § 2). Les heures du cahier se retrouvent sur les horodatages des lignes.
Motifs exacts (code lu) :
| Motif | Source | Lecture |
|---|---|---|
| `LPDebug persons : releve toutes les 2 s` | `LPDebugSubsystem.cpp:649` | 1 ligne : trace active |
| `LPDebug persons : STATE PlayerCharacter ` | `LPDebugSubsystem.cpp:414`, `:580` | une ligne toutes les 2 s environ ; champs `meshZ=`, `anim=`, `currentAnimation=` |
| `M-Z : <acteur> maillage relatif Z <avant> -> <après> (gabarit <classe>), debout sans meuble ; HeelHeight=<%.3f|?> ; currentAnimation=<nom|-|?> ; -90+12*HeelHeight=<%.2f|?>` | `LPDirectControlSubsystem.cpp` (FIX1-MZ) | une correction ; si `<avant>` = `-90+12*HeelHeight`, les talons expliquent l'écart ; sinon (ex. −88,0), autre cause |
| `Fatal\|Unhandled\|Critical error\|Assertion failed` | relevé commun | 0 attendu |
Commandes prêtes (adapter le chemin à la build de la séance) :
```powershell
$J = "D:\Game\LifePlay_Build_5.8_Development_COM22\Windows\LifePlay\Saved\Logs\LifePlay.log"
Select-String -Path $J -Pattern 'LPDebug persons : STATE PlayerCharacter' | Select-Object LineNumber, Line
Select-String -Path $J -Pattern 'M-Z :'
Select-String -Path $J -Pattern 'currentAnimation=fnt_'
```
**Seuils et lectures de décision** (estimés ; la formule vient du dump 5.5, `FIX1-F7-PRE.md:117`) :
| Constat au journal | Lecture | Suite |
|---|---|---|
| debout sans talons : `meshZ=-90.0` partout, **et** debout avec talons : `meshZ=-90+12×HeelHeight` (−85,2 / −82,8 / −80,4) | le décalage vient des **talons** : forcer −90 n'est pas un correctif ; M-Z retire un décalage voulu | F8b : ne pas corriger en Blueprint ; M-Z doit lire la hauteur de talons (décision de l'utilisateur, `FIX1-F7-PRE.md` § 6 question 4) |
| `meshZ` ≠ −90 **sans talons** après un lever, ou lignes `M-Z :` sans talons | la **place** (animation de meuble) est en cause | F8b : correctif Blueprint à étudier en build 2 |
| `meshZ=-88.0` (7 cas sur 18 aux journaux antérieurs) | hors grille des talons (2,0 / 12 ≈ 0,167) : chemin d'écriture inconnu | noter heure et circonstances, item ouvert |
| `M-Z : … Z <avant>` de la forme −90 + 12 × H avec talons (COMMUN-22) | confirme la cause « talons » par la ligne même | idem première ligne |
| `currentAnimation=fnt_…-look` **après l'heure de fin** de l'action (MES.9, MES.10) **et** `anim=single:…look` | le clip **joue encore** : effet visible probable | F7b : correctif d'un nœud dans Person envisageable, build 1 seulement avant la porte du 2026-10-23 au soir (`FIX1-F7-PRE.md:183`) |
| `currentAnimation=fnt_…-look` après la fin, mais `anim=bp:…` | seule la **variable** est périmée, sans effet à l'écran | F7b : « ne pas corriger » |
| `currentAnimation=-` après la fin | défaut non reproduit | F7b : pas de correctif ; noter la date |
Décompte de contrôle à recopier au BILAN : nombre de lignes `STATE PlayerCharacter` (≈ une toutes les 2 s : ≈ 600 pour 20 minutes), nombre de lignes `M-Z :`, valeurs de `meshZ=` distinctes.
## 5. Durée cible et arrêt
- **Durée cible : 20 à 30 minutes** : préparation 3 min, F8b ≈ 12 min, F7b ≈ 8 min, relève du cahier ≈ 3 min.
- **Arrêt** : fermer le jeu **normalement** (menu), pour que le journal se termine ; ne pas supprimer ni déplacer `Saved\Logs\LifePlay.log`. Un journal qui n'est pas celui de la séance est à ne pas utiliser : le fichier le plus récent porte l'heure de la séance.
- **Arrêt avant le terme** : blocage, plantage, `Fatal` au journal, ou plus de 30 minutes : arrêter, noter l'heure et le dernier cas fait, **ne pas** relancer ; la séance partielle reste exploitable cas par cas.
- À rendre à Big Boss : le cahier (heures, observations), le journal de la séance (fichier nommé ci-dessus), et la mention de la build utilisée (COMMUN-22 avec trace enrichie, ou COM21).
## Fichiers à commiter
A `Docs/Migration/etat/REL/FIX1/FIX1-MES.md` (dépôt jeu, branche `ue5.8`), par le gardien sur ticket. Aucun autre fichier écrit. Pas de CHG réservé à ce livrable (protocole d'essai, aucune modification du jeu) ; pas de ligne d'index à ajouter.
## Points à compléter ou à confirmer
1. **Complété par Big Boss (2026-10-20)** : build COMMUN-22 et format de la ligne `M-Z :` enrichie (voir § 1 et § 3).
2. **Non vérifié** : nom exact des états `HeelHeight` visibles au journal COM21 (la COM21 n'a pas la trace enrichie : les talons ne se lisent alors que par `meshZ=`).
3. **Estimé** : formule −90 + 12 × HeelHeight (dump 5.5, pas relu en 5.8) ; cadence « environ 600 relevés pour 20 minutes ».
4. **Non mesuré** : aucune exécution de la séance ; aucun journal produit.