126 lines
15 KiB
Markdown
126 lines
15 KiB
Markdown
|
|
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.
|