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

35 KiB
Raw Blame History

Fiche FIX1-F7-PRE — Niveau N2 — Modèle prévu non précisé par la fiche | utilisé claude-sonnet-5-5 — Agent lp-cart — Skills sk-protocol, ue-cpp-build, lp-commandlets, lp-paths

FIX1-F7-PRE : étude préliminaire de dimensionnement de F7 (ERR-011 : CenterBrow, animation « look », accessoires) et de F8b (meshZ au lever) (2026-10-20)

Hors gabarit : étude préliminaire (pas une CART complète), sur le modèle de FIX1-F6-PRE.md. Les rubriques 1 à 6 du gabarit CART sont gardées ; la rubrique 3 suit les quatre questions de la fiche (existant, localisation, dimensionnement et reproductibilité, recommandation), pour chacun des 4 sous-points : F7a avertissement CenterBrow, F7b animation « look » restée active, F7c accessoires détachés, F8b meshZ au lever. Lecture seule : ni copie UE, ni MCP, ni éditeur, ni commandlet. Seul ce fichier est écrit.

Résumé (à lire en premier)

  1. La ligne FIX1 du doc 37 est à reclasser : 37_Feuille_De_Route_Alpha2.md:171 range F6, F7 et F8 en « petits correctifs Blueprint par MCP » (lp-mcp-bp). Sur ces 4 sous-points, aucun n'est à la fois un correctif Blueprint net, avec un effet visible établi, et hors de GI.
  2. F7a CenterBrow : le lecteur est dans GI (CalculateHeadtrack, établi sur le dump 5.5) ; la garde utile est donc en build 2 (GI n'est révisé qu'une fois). Aucun effet visible (Registre_Erreurs.md:25). Présent dans 8 journaux sur 11 relevés (141 à 6 138 lignes) : pas déterministe.
  3. F7b « look » : un seul constat (COMMUN-8, 2026-10-14), aucune mesure depuis (les lignes STATE … currentAnimation= n'existent que sous -LPPersonsLog, absent des 7 journaux COMMUN-15 à 21). Effet visible non établi. Un correctif d'un nœud dans Person est imaginable, mais ses consommateurs (UpdateDailyPose) sont à risque.
  4. F7c accessoires : un seul constat « mineur » (COMMUN-7), sans recette, lieu du défaut non lu (Person spawnProp / attaches, ou donnée d'animation : inconnu).
  5. F8b meshZ : déjà neutralisé en C++ par M-Z (LPDirectControlSubsystem.cpp:1200-1223), validé en jeu (COMMUN-10) ; M-Z se déclenche 18 fois dans 9 journaux (COMMUN-15 à 21), donc le défaut Blueprint est vivant, mais masqué. Constat nouveau (estimé) : les trois valeurs relevées −80,4 / −82,8 / −85,2 sont exactement −90 + 12 × {0,8 ; 0,6 ; 0,4}, la formule de Person::updateHeelHeight (talons). Si c'est la cause, forcer −90 (Blueprint ou M-Z) n'est pas un correctif et la ligne F8b est mal posée.
  6. Recommandation : build 1 = F8a seul (déjà fait) plus, au choix de l'utilisateur, une séance de mesure sur le build COM21 existant (sans copie UE) et l'instrumentation de la ligne M-Z (C++, quelques lignes, dans la compilation déjà prévue). F7a, F7c, F8b en build 2 ; F7b en build 1 seulement si la mesure montre un effet visible avant la porte du 23 au soir. Détail en § 3.4.
Sous-point Où (établi ou estimé) Effet visible Reproduction Agent · niveau Build
F7a CenterBrow GI CalculateHeadtrack (établi, dump 5.5) ; appelé par les AnimBP Daily et Daily_F (estimé) aucun (journal seul) 8 journaux sur 11, apparition non déterministe lp-mcp-bp N2 (garde dans GI), dump 5.8 d'abord 2
F7b « look » Person : variable currentAnimation non vidée au lever (estimé) non établi 1 constat (14 octobre), aucune mesure depuis lp-diag N2 (mesure), puis lp-mcp-bp N1 si effet 1 sous condition, sinon après l'alpha
F7c accessoires inconnu (Person spawnProp / attaches, ou donnée) « mineur » 1 constat, pas de recette lp-diag N2 pas en 1
F8b meshZ Person::updateHeelHeight (estimé) contre animations de place (hypothèse STG) : non tranché ; M-Z (C++) corrige déjà corrigé en jeu M-Z : 18 déclenchements en 9 journaux lp-impl N1 (journal M-Z) ; correctif Blueprint : pas avant la mesure 2 ou abandon

1. Objet et périmètre

Un domaine : les défauts « animation et placement » de la ligne FIX1 hors F6 et hors F8a, soit F7 (37_…:60 : « ERR-011 : avertissement CenterBrow ; animation « look » restée active ; accessoires détachés ») et la seconde moitié de F8 (37_…:61 : « meshZ au lever dans le Blueprint »). Demande de Big Boss : ce qui est établi, ce qui reste et où (Blueprint : lequel ; C++ ; GI), dimensionnement et reproductibilité, recommandation (agent, niveau, durée, risque ; build 1 ou 2). Hors périmètre : F8a (Aim), F6, toute correction, tout essai.

2. Commandes et lectures (exactes) avec compte brut

# Commande ou lecture Résultat brut
1 Read gabarits.md (CART), FIX1-F6-PRE.md gabarit et modèle lus
2 Grep ERR-011 dans Docs/Registre_Erreurs.md ; Read :25 1 ligne, Registre_Erreurs.md:25 (citée en § 3.1)
3 Grep F7, F8b, meshZ, CenterBrow dans 37_Feuille_De_Route_Alpha2.md ; Read :50-69, :160-194 :60, :61, :171 ; calendrier :177-185
4 Grep CenterBrow, meshZ, PlayerBusy dans BOSS-ETAT.md ; Read :222-243, :62-73 :70, :234, :235
5 Grep (compte) CenterBrow dans etat/BOSS, glob *.log Found 11033 total occurrences across 8 files. (détail en § 3.1)
6 Glob *.log dans D:\Game\LifePlay_Build_5.8_Development_COM21\Windows\LifePlay\Saved\Logs 3 fichiers : LifePlay.log, LifePlay-backup-2026.10.20-17.25.35.log, LifePlay-backup-2026.10.20-17.27.13.log
7 Grep (compte) CenterBrow puis GetSocketInfoByName dans ce dossier LifePlay.log:148 ; LifePlay.log:669 et …17.27.13.log:119
8 Grep (compte) GetSocketInfoByName dans etat/BOSS, glob COMMUN-2*/*.log COMMUN-21_session_1925_rotation.log:119, COMMUN-21_session_1927.log:669, COMMUN-20_session_1710.log:790 ; total 1578
9 Grep (compte) GetSocketInfoByName\((Head|hip|pelvis|chestUpper)\) dans LifePlay.log (COM21) 521
10 Grep GetSocketInfoByName\(CenterBrow\) dans LifePlay.log (COM21), 3 premières lignes puis offset 145 :1645 (17:33:24.838), :1676, :1712 ; :2872, :2873 (17:36:01.238), :2916 (ligne de bilan « 147 [LogSkinnedMeshComp Warning] … »)
11 Grep Person_C_2147481923 dans LifePlay.log (COM21), 8 premières :1060 (BeginPlay), :1275-1276 (index SPAWN, DESTROY…), :1278-1281 (Head ×2, pelvis, chestUpper à 17:32:08.569)
12 Grep M-Z : dans etat/BOSS, glob COMMUN-{15..21}/*.log, mode contenu ; puis mode compte (COMMUN-*/*.log) 18 lignes (liste en § 3.1) ; compte : 9 fichiers, Found 18 total occurrences across 9 files.
13 Grep (compte) currentAnimation=fnt et meshZ= dans les journaux COMMUN-15 à 21 ; currentAnimation=fnt dans LifePlay.log COM21 No matches found (trois fois)
14 Read LPDirectControlSubsystem.cpp:1196-1227 ; Grep meshZ, M-Z dans Source M-Z :1200-1223, MeshZScans (.h:88-89) ; LPDebugSubsystem.cpp:414 (ligne STATE … meshZ= … currentAnimation=)
15 Read LPDebugSubsystem.cpp:385-424, :628-647 STATE écrit par WritePersonsDump ; déclenché par -LPPersonsLog[=s] (:639-643) ou la console LifePlay.PersonsDump (:631-634)
16 Grep CenterBrow, CalculateHeadtrack, HeadtrackTarget dans etat/portage55/L6f/L6f_dump_GI.txt ; Read :42272-42301 :42284, :42296, :42592, :42609 ; en-tête :42273 ; appels Person_C::FaceHeadtrackTarget :42832, :42834
17 Grep ^=== Person :: (par tranches), NewLocation = ', RelativeLocation|currentAnimation|…, updateHeelHeight, HeelHeight sur L6f_dump_Person.txt (fichier nommé) ; Read :19736-19835, :39405-39430 en-têtes cités en § 3.2 ; updateHeelHeight appelée :2528, :3767, :3772, :3794 ; définie :19714
18 Grep updateHeelHeight sur L6f_dump_GI.txt (fichier nommé) :25258 (Person_C::updateHeelHeight())
19 Bash, depuis la racine : for f in $(rg --files -g "Person.uasset" -g "GI.uasset" -g "Daily.uasset" -g "Daily_F.uasset" Content); do echo "== $f"; rg -a -o -e CalculateHeadtrack -e updateHeelHeight -e unOccupyFnt -e HeadtrackTarget -e CenterBrow -e spawnProp -e PlayFntAnim "$f" | sort | uniq -c; done Daily : CalculateHeadtrack 3, HeadtrackTarget 1 ; Daily_F : idem ; GI : CalculateHeadtrack 12, CenterBrow 5, HeadtrackTarget 2, spawnProp 2, unOccupyFnt 1, updateHeelHeight 1 ; Person : CenterBrow 3, HeadtrackTarget 3, PlayFntAnim 2, spawnProp 5, unOccupyFnt 8, updateHeelHeight 4 ; exit=0 (comptes bruts de correspondances dans le binaire : preuve de présence du nom, pas de nœuds)
20 Read STE-H4-DIAG.md, STE-J6-TRACE.md:187-232, STG-COMMUN8-DIAG.md, STG-COMMUN9-DIAG.md, STG-MZ-IMPL.md, KEY2-DIAG-01.md:14-25, JOURNAUX1/ERR-brouillons.md cités en § 3
21 Glob **/*D8* sous etat/ST/STE ; Glob * sous etat/REL/FIX1 No files found ; 10 fichiers (F6 PRE, SPEC, IMPL, VAL, journaux de build)

Écart de méthode à signaler, deux Grep de dossier non concluants : un Grep de dossier sur etat/portage55/L6f (motifs unOccupyFnt, ^=== Person :: …, updateHeelHeight) a rendu No matches found alors que les mêmes motifs trouvent des lignes quand le fichier .txt est nommé (n° 17 et 18 : updateHeelHeight :19714, :2528…). Les .txt d'etat/ sont ignorés par git (.gitignore:53) et un Grep de dossier les saute. Un résultat vide d'un Grep de dossier sur etat/ (hors .md/.csv) ne prouve rien ; nommer le fichier (à verser). Les dumps de Blueprint lus sont ceux de 5.5 (L6f, 2026-09-30) : l'état des Blueprint en 5.8 n'a pas été relu (le rg -a du n° 19 ne prouve que la présence des noms).

3. Constats fichier:ligne

3.1 État de l'existant (question 1)

F7a, avertissement CenterBrow

Constat Source Niveau
ERR-011 : signature GetSocketInfoByName … No SkeletalMesh for CharacterMesh, « 80/perso en 4.27, 76 en 5.5 », gravité « bruit (existe en 4.27) » ; part F5 du DESTROY corrigée (CHG-326) ; mise à jour JOURNAUX1 du 2026-10-14 : variante CenterBrow « à chaque image sur des Person détruites, sans effet visible (COMMUN-5, COMMUN-6) ; rattachement à confirmer » Docs/Registre_Erreurs.md:25 ; COMMUN-6-BILAN.md:33 établi
Le brouillon JOURNAUX1 classe le rattachement « non établi » (statut « en cours ») JOURNAUX1/ERR-brouillons.md:91, :104 établi
Classé « Après l'alpha (non ouverts) » avec la « animation look » et les « accessoires détachés » BOSS-ETAT.md:235 établi
STE-H4 (J5) : 6 408 lignes CenterBrow (31,3 % du journal) ; lecteur estimé fort : GI CalculateHeadtrack, appelé par l'EventGraph des AnimBP Daily et Daily_F pour un vivant dont le HeadtrackTarget est resté sur un mannequin caché ; voie D = garde dans CalculateHeadtrack (IsValid(Target) et corps présent) ou vider le HeadtrackTarget au DESTROY ; dumps STE-D8 requis STE-H4-DIAG.md:6, :53, :88-105, :205-208, :262-273 établi (texte) ; lecteur estimé
Les dumps STE-D8 n'ont pas été produits Glob **/*D8* sous etat/ST/STE : No files found établi (cherché dans ce dossier seulement)
Effet de C0 sur CenterBrow : 6 408 (J5), 6 227 (H9), 528 (J6) ; « la part de C0 dans cette baisse reste incertaine » STE-J6-TRACE.md:223, :229-231 établi
Aucune garde CenterBrow n'a été livrée : la ligne CenterBrow revient dans les journaux de COM21 § 3.1 ci-dessous établi

Comptes de CenterBrow dans les journaux récents (Grep en mode compte, n° 5 et 7 ; un fichier absent de la sortie compte pour 0) :

Journal CenterBrow GetSocketInfoByName (tous sockets)
COMMUN-14\COMMUN-14.4-17_LifePlay_20261020-0757.log 141 non mesuré
COMMUN-15\…_encours.log 0 non mesuré
COMMUN-16\COMMUN-16_session_1131.log 0 non mesuré
COMMUN-16\COMMUN-16_session_1136.log 649 non mesuré
COMMUN-16\COMMUN-16_session_1207.log 151 non mesuré
COMMUN-17\COMMUN-17_session_1253.log 302 non mesuré
COMMUN-18\COMMUN-18_session_1358.log 6 138 non mesuré
COMMUN-19\COMMUN-19_session_1457.log 3 355 non mesuré
COMMUN-20\COMMUN-20_session_1710.log 149 790
COMMUN-21\COMMUN-21_session_1925_rotation.log 0 119
COMMUN-21\COMMUN-21_session_1927.log 148 669
COM21 Saved\Logs\LifePlay.log 148 669
COM21 …backup-2026.10.20-17.27.13.log 0 119

Somme des 8 journaux non nuls : 11 033 (concorde avec la sortie de l'outil). Le journal COMMUN-21_session_1927.log a les mêmes comptes que LifePlay.log de COM21 (148 et 669) : copie probable (MD5 non comparés). Précision : sur COM21, le compte 148 inclut la ligne de bilan du journal (LifePlay.log:2916, « 147 [LogSkinnedMeshComp Warning] GetSocketInfoByName(CenterBrow) … ») : il y a 147 avertissements, et de même 669 = 148 + 521 (n° 9) ; la présence d'une ligne de bilan dans les autres journaux n'a pas été vérifiée.

Détail COM21 : les premières et dernières lignes CenterBrow (:1645, :1676, :1712, :2872, :2873) visent toutes Person_C_2147481923, acteur qui passe par index SPAWN puis DESTROY… (:1275-1276) ; les avertissements CenterBrow commencent à 17:33:24.838 (:1645), 76 s après le SPAWN, et finissent à 17:36:01.238 (:2873), soit 2 min 36 s. La cadence (une ligne par image ou non) n'a pas été établie. Les 521 autres lignes sont les sockets Head, hip, pelvis, chestUpper (part « bruit accepté » d'ERR-011).

F7b, animation « look » restée active

Constat Source Niveau
COMMUN-8 (2026-10-14, 09:13:44-09:14:04) : le joueur garde currentAnimation = fnt_new038-f-0-look dans la rue puis au café, avec meshZ -80,4 ; « animation de meuble restée active après le changement de pièce (Blueprint d'origine, estimé) » ; « Elle peut ajouter une posture penchée, mais ce n'est pas elle qui enfonce » ; versé à STE, « après l'alpha sauf effet visible » STG-COMMUN8-DIAG.md:22, :61-63, :73-74, :84-85 établi (observation) ; cause estimée
currentAnimation reste aussi renseigné après un lever ordinaire (fnt_new048-f-0-sit, journal COMMUN-9) : M-Z ne l'utilise donc pas comme garde STG-MZ-IMPL.md:45-46 établi
Registre des brouillons : N45, gravité faible (« mineur »), « ouvert, non instruit », 1 constat JOURNAUX1/ERR-brouillons.md:76 ; JOURNAUX1/SUIVI-propositions.md:53 établi
Effet visible : non établi ; aucune mesure depuis le 14 octobre : les journaux COMMUN-15 à 21 ne contiennent ni currentAnimation=fnt ni meshZ= (n° 13), parce que la ligne STATE n'est écrite que sous -LPPersonsLog ou LifePlay.PersonsDump LPDebugSubsystem.cpp:414, :631-643 établi

F7c, accessoires détachés

Constat Source Niveau
Seul constat : « Accessoire de place mal attaché (assiette et sandwich près de l'épaule) : mineur » (COMMUN-7) ; « hors B2q » BOSS/COMMUN-7-BILAN.md:28 ; STG-B2q-IMPL.md:70 ; JOURNAUX1/ERR-brouillons.md:76 établi
À ne pas confondre : « les accessoires restent visibles » pendant que le personnage assis disparaît (N36) est un autre défaut, corrigé et validé en jeu (B2q, COMMUN-9 P1, COMMUN-10 Q6) COMMUN-7-BILAN.md:20 ; JOURNAUX1/ERR-brouillons.md:70 établi (le bilan COMMUN-10 lui-même n'a pas été relu)
La formule « accessoires détachés » de BOSS-ETAT.md:235 et du doc 37 résume ce seul constat (estimé) BOSS-ETAT.md:235 ; 37_…:60 estimé

F8b, meshZ au lever

Constat Source Niveau
Symptôme (COMMUN-9) : les pieds sont à 9,8 cm au-dessus du sol (delta -9.8) alors que la capsule est au sol ; meshZ relatif −80,4 (ou −82,8) au lieu de −90 ; « rien ne remet −90 au lever » ; PNJ féminines debout concernées (12 relevés, currentAnimation=-) ; lecture : unOccupyFnt et PlayIdle ne rétablissent pas la position du maillage (Blueprint d'origine, estimé) STG-COMMUN9-DIAG.md:16-31 établi (mesure) ; cause estimée
Contournement C++ livré : M-Z dans FitPersonBounds (balayage de 0,5 s) remet le Z relatif du maillage à celui du gabarit de la classe (−90 pour Person_C) si : aucun meuble, pas de scène, capsule en collision, écart > 1 cm, 2 balayages de suite LPDirectControlSubsystem.cpp:1200-1223 ; STG-MZ-IMPL.md:26-46 établi
Validé en jeu : « plus de flottement après le lever, M-Z confirmé » (COMMUN-10 Q4) JOURNAUX1/ERR-brouillons.md:75 (qui cite C10-BILAN:14) établi (bilan non relu)
M-Z se déclenche encore : 18 lignes M-Z : dans 9 journaux (COMMUN-15 : 1 ; 16/1131 : 1 ; 16/1136 : 3 ; 16/1207 : 1 ; 17 : 4 ; 18 : 4 ; 19 : 1 ; 20 : 2 ; 21 : 1). 16 sur PlayerCharacter, 2 sur des PNJ. Valeurs d'origine : −80,4 ×5 ; −85,2 ×6 ; −88,0 ×7 n° 12 (ex. COMMUN-20_session_1710.log:1666, COMMUN-17_session_1253.log:1484, COMMUN-18_session_1358.log:3367) établi
Dans le dump 5.5 de Person, la seule fonction qui écrit un Z de maillage autre que −90 est updateHeelHeight : si le tableau de chaînes contient Heels, HeelHeight = dernière chaîne convertie en nombre, puis Mesh.K2_SetRelativeLocation(0, 0, −90 + 12 × HeelHeight) ; sinon HeelHeight = 0 et Z = −90. Les autres écritures de Z sont le −90 littéral (:19832, :39421) L6f_dump_Person.txt:19714, :19754, :19778-19790, :19804-19832 ; grep NewLocation : :8315-8370 (X/Y des composants de pénis), :19832, :39421 établi (dump 5.5)
updateHeelHeight est appelée par Strip (:2528) et Dress (:3767, :3772, :3794) dans Person, et une fois dans GI (:25258) ; pas par PlayIdle, unOccupyFnt, standIdle ni jumpOffFnt (leurs en-têtes : :12042, :12836, :13117, :13536 ; aucune occurrence entre ces lignes dans le Grep du fichier) L6f_dump_Person.txt ; L6f_dump_GI.txt:25258 établi (dump 5.5)
Les valeurs relevées sont exactement −90 + 12 × H pour H = 0,8 (−80,4), 0,6 (−82,8), 0,4 (−85,2) ; −88,0 (7 occurrences sur 18) n'est pas sur cette grille (2,0 / 12 = 0,1667) calcul sur § 3.1 et STG-COMMUN9-DIAG.md:22 estimé (coïncidence arithmétique, non mesurée)
meshZ = −88 figure aussi dans l'étude des caméras de scène CAM-COMMUN9-DIAG.md:14 établi (ligne seule lue)
À ne pas confondre avec « personnage enfoncé » : l'enfoncement dans la rue (ancien ERR-128) vu à COMMUN-15 venait de PlayerBusy resté vrai après une visite de l'onglet Clavier (LiftSunkPersons ne relevait pas le joueur) ; corrigé en C++ (fermeture des réglages pendant une capture, 5ff9f26d), COMMUN-16.22 PASS. Le meshZ relevé, lui, fait flotter, il ne fait pas enfoncer KEY2-DIAG-01.md:20-24 ; BOSS-JOURNAL.md:815, :840 établi

3.2 Où est le reste (question 2)

Sous-point Où Preuve Niveau
F7a GI : fonction CalculateHeadtrack (44 nœuds) lit GetSocketLocation('CenterBrow') sur le Mesh de From (K2Node_CallFunction_3) et de To (K2Node_CallFunction_1) ; elle appelle Person_C::FaceHeadtrackTarget ; deux autres lectures de CenterBrow dans GI, fonction non identifiée L6f_dump_GI.txt:42273-42296, :42592, :42609, :42832, :42834 établi (dump 5.5)
F7a AnimBP Daily et Daily_F portent le nom CalculateHeadtrack (3 correspondances chacun) : appelants (estimé, déjà dit par STE-H4) rg -a -o n° 19 ; STE-H4-DIAG.md:95-97 estimé
F7a Person : FaceHeadtrackTarget lit aussi CenterBrow ; Person.uasset : 3 correspondances STE-H4-DIAG.md:91-94 ; n° 19 établi (texte STE-H4)
F7a Aucun C++ ne lit CenterBrow : non cherché ici (STE-H4 : 0 pour chestUpper dans Source et Plugins) STE-H4-DIAG.md:302-304 incertain
F7b Person : la variable currentAnimation est lue par UpdateDailyPose (SetAnimationMode puis deux affectations Animation ← currentAnimation), SetAnimationAsset, unOccupyFnt (lectures seules) ; elle est écrite dans le graphe d'événements (affectée :33526, vidée :33341 et :38779) L6f_dump_Person.txt:12615-12682 (en-tête UpdateDailyPose :12615), :12780-12815, :12836-12844, :13042, :33341, :33526, :38779 établi (dump 5.5)
F7b unOccupyFnt ne contient pas d'affectation de currentAnimation (les trois affectations sont au-delà de la ligne 33000) ; si l'une des deux remises à vide tourne au lever ou au changement de pièce : inconnu grep currentAnimation sur le dump établi (absence dans la fonction) ; reste inconnu
F7c Person : spawnProp (:14529), clearProps (:14582) ; 7 nœuds K2_AttachToComponent dans le graphe d'événements (:37915-38461) ; spawnProp 5 correspondances dans Person et 2 dans GI dump Person ; n° 19 établi (existence) ; lieu du défaut inconnu
F8b Person updateHeelHeight (Blueprint, appelée par Strip, Dress, GI) ; C++ M-Z dans LPDirectControlSubsystem § 3.1 établi
F8b PlayIdle / unOccupyFnt ne rétablissent pas le Z (STG) : consistant avec l'absence d'appel à updateHeelHeight ; PlayFntAnim (2 correspondances dans Person.uasset) : sa définition n'est pas dans les en-têtes lus, le dump la montre appelée au graphe d'événements (:33740) L6f_dump_Person.txt:33740 ; n° 19 établi (appel) ; effet sur le Z inconnu

GI touché ? F7a : oui (la garde naturelle est dans GI::CalculateHeadtrack, voie A de § 3.3), donc build 2 selon la révision unique de GI (BOSS-JOURNAL.md:693, :870 : « révision unique en build 2 »). F7b, F8b : non (Person, C++). F7c : inconnu. Les AnimBP Daily et Daily_F ne seraient pas à modifier pour la voie A.

3.3 Dimensionnement et reproductibilité (question 3)

F7a

Voie Contenu Taille (estimée) GI ?
A, garde dans CalculateHeadtrack avant K2Node_CallFunction_1 et _3 : IsValid(From), IsValid(To) et maillage présent (GetSkinnedAsset valide), sinon retour sans calcul 4 à 8 nœuds sur 44, 2 coupures (comparable aux 2 à 3 nœuds de la voie C de STE-H4, STE-H4-DIAG.md:199) oui
B, à la cause vider le HeadtrackTarget des vivants qui visent un mannequin au DESTROY, ou exclure les mannequins cachés de getNearestDummy non dimensionnable : « la chaîne exacte (qui pose le HeadtrackTarget, pourquoi il reste) » est inconnue (STE-H4-DIAG.md:252) probablement (GI et Person)
C, réglage de journal abaisser la verbosité de LogSkinnedMeshComp par configuration 1 ligne de configuration ; masque aussi les 521 lignes des autres sockets et les vrais cas ; effet en Shipping non lu non
D, ne rien faire l'avertissement existe depuis la 4.27 (Registre_Erreurs.md:25) 0 non

Reproduction : non déterministe. 8 journaux sur 11 contiennent CenterBrow (de 141 à 6 138 lignes), 3 n'en ont aucune ; sur COM21 la série commence 76 s après le SPAWN d'un mannequin et dure 2 min 36 s. La condition d'apparition (un vivant dont le HeadtrackTarget pointe un mannequin sans corps) est estimée, pas démontrée. Preuve en jeu : build Development (journal avec avertissements), jouer jusqu'à au moins un index SPAWN suivi de DESTROY, attendre 3 minutes, compter GetSocketInfoByName(CenterBrow) (Grep en mode compte, moins la ligne de bilan). Critère : 0 ligne CenterBrow avec au moins un SPAWN, les 521 autres lignes inchangées. Une session à 0 sans SPAWN ne prouve rien (3 journaux de référence sont à 0). Le Shipping n'a pas été examiné (bUseLoggingInShipping non lu, STE-H4-DIAG.md:253-254).

F7b

Critère Établi Estimé Inconnu
Correctif — un nœud « affecter currentAnimation = vide » en fin de unOccupyFnt ou à l'entrée d'une pièce (Person seul, 1 nœud, 2 liens) si un autre chemin relit currentAnimation après le lever : UpdateDailyPose le réaffecte à Animation (:12635-12682), donc vider peut changer ce que ce chemin joue ; risque moyen
Effet visible aucun établi posture penchée possible (STG-COMMUN8-DIAG.md:62-63) tout
Reproduction 1 constat (COMMUN-8) : look d'un meuble (vitrine), puis changement de pièce — si le clip joue encore (anim=single:…) ou si seule la variable est périmée

Preuve en jeu : sans copie UE, avec le build COM21 lancé avec -LPPersonsLog=2 (LPDebugSubsystem.cpp:639-643), utiliser l'action « regarder » sur un meuble de boutique, sortir, relever pendant 30 s la ligne STATE PlayerCharacter … anim=… currentAnimation=…. Attendu avant correctif : currentAnimation=fnt_…-look (COMMUN-8). Après : currentAnimation=-, et anim= sans single:…look. Un essai sans effet visible clôt F7b (« ne pas corriger »).

F7c

Taille : non dimensionnable. Une attache de prop mal placée peut venir du Blueprint (spawnProp, 7 attaches), d'un décalage de donnée d'animation, ou de la pose de la place (lien avec le Z du maillage : non démontré). Reproduction : aucune recette (1 constat, « mineur », assiette et sandwich ; meuble et animation non notés dans le bilan). Preuve en jeu à définir après une première reproduction avec capture d'écran (même place, mêmes accessoires, avant et après).

F8b

Critère Établi Estimé Inconnu
Cause le Z relatif du maillage n'est pas −90 après le lever et rien dans PlayIdle / unOccupyFnt ne le remet −90 + 12 × HeelHeight (talons, updateHeelHeight) pour −80,4 / −82,8 / −85,2 le chemin qui écrit −88,0 (7 cas sur 18) ; si le joueur et les PNJ concernés portent des talons ; le lien avec le premier meuble utilisé (STG-COMMUN9-DIAG.md:24)
Contournement M-Z, 18 déclenchements en 9 journaux M-Z corrige 1 s au plus tard après le lever M-Z force −90 sans lire HeelHeight : si les talons sont la cause, il retire un décalage voulu par le Blueprint ; sa validation (« plus de flottement ») ne dit rien sur les talons
Correctif Blueprint — « appeler updateHeelHeight en fin de unOccupyFnt » (Person seul, 1 nœud d'appel) rétablirait −90 + 12 H plutôt que −90 : hypothèse, updateHeelHeight lit le tableau de vêtements effet sur la pose assise ; GI appelle unOccupyFnt (1 correspondance dans GI.uasset)

Reproduction : fiable avec les journaux (M-Z écrit une ligne à chaque correction). Preuve en jeu : (1) compter les lignes M-Z : sur une séance avec au moins un meuble utilisé puis quitté : valeur de référence 1 à 4 par séance (COMMUN-15 à 21) ; (2) après un correctif Blueprint, M-Z doit rester silencieux (0 ligne) sur la même séance ; (3) départage talons / place : habiller le joueur sans talons, s'asseoir, se lever, relever meshZ= (nécessite -LPPersonsLog) ; ou ajouter HeelHeight à la ligne M-Z (voir § 3.4).

3.4 Recommandation (question 4)

Agent, niveau, durée (estimés), risque, build

Sous-point Étape Agent · niveau Durée (estimée, non mesurée) Risque Build
F7a dump 5.8 de CalculateHeadtrack (LPDumpFunction -BP=GI -Fn=CalculateHeadtrack -Pins -Exec, éditeur fermé : copie UE) ; IMPL de la garde ; VAL lp-mcp-bp N2 pour l'IMPL (GI par MCP, instantané avant) ; lp-validator N2 dump 5 tours ; IMPL 15 à 25 tours ; VAL 10 à 15 tours ; essai 15 à 20 min de jeu faible pour le jeu (garde sur un nœud lu) ; risque de calendrier : GI n'est révisé qu'une fois, la garde doit partir avec les autres retouches de GI build 2
F7b mesure sans copie UE (build COM21, -LPPersonsLog=2), puis éventuellement 1 nœud dans Person lp-diag N2 pour la mesure ; lp-mcp-bp N1 pour l'IMPL mesure : 20 min de jeu par l'utilisateur ou Big Boss + 10 à 15 tours d'analyse ; IMPL 10 à 15 tours ; VAL 10 tours moyen : consommateurs de currentAnimation (UpdateDailyPose) build 1 seulement si la mesure montre un effet visible avant le 23 au soir (créneau FIX1 sur la copie UE au J3, VAL au J4, 37_…:183-184) ; sinon après l'alpha
F7c reproduction avec capture, lecture MCP de spawnProp et des attaches lp-diag N2 15 à 20 tours après une reproduction non évaluable pas en build 1
F8b instrumenter la ligne M-Z (C++, dans LPDirectControlSubsystem.cpp:1216) : y ajouter HeelHeight et currentAnimation du Person (lecture par réflexion, comme les autres lectures de variables Blueprint du même module) lp-impl N1 5 à 10 tours, dans la compilation déjà prévue pour F8a (pas de jeton UE supplémentaire, hors essai) très faible (journal) build 1 (option)
F8b correctif Blueprint aucun avant la mesure — forcer −90 peut retirer un décalage de talons build 2 ou abandon (M-Z couvre)

Ordre conseillé (estimé) : (1) une séance de jeu de 20 à 30 minutes sur le build COM21 existant, sans copie UE, avec -LPPersonsLog=2, qui sert F7b et F8b : le joueur avec talons puis sans talons s'assied et se lève ; « regarder » un meuble de boutique puis changer de pièce ; (2) lecture des lignes STATE, M-Z : et CenterBrow (Grep, 10 tours) ; (3) décision par sous-point. Si l'instrumentation de M-Z est acceptée, la réponse « talons ou place » arrive aussi gratuitement dans les essais suivants.

Ce qu'il ne faut pas faire (estimé) : confier F7 et F8b à lp-mcp-bp en bloc comme le dit le doc 37 (:171) ; toucher GI en build 1 pour un avertissement sans effet visible ; corriger le Z du maillage au lever avant d'avoir départagé talons et place ; ajouter une garde sur currentAnimation dans M-Z (M-Z l'écarte exprès, STG-MZ-IMPL.md:45-46).

Build 1 ou build 2 (décision de l'utilisateur) : build 1 = F8a (fait) et, au plus, F7b et l'instrumentation de M-Z. Aucun de ces sous-points ne justifie de risquer le gel du 24 octobre ; F7a est de toute façon bloqué par la règle GI. F7a, F7c, F8b : build 2 (le journal du dépôt garde ERR-011 ouvert ; aucun texte public à corriger n'a été trouvé, README et annonces non relus ici).

4. Établi / estimé / incertain (synthèse)

Établi (relu à la source) : ERR-011 et sa mise à jour JOURNAUX1 (Registre_Erreurs.md:25) ; classement « après l'alpha » (BOSS-ETAT.md:235) ; comptes de CenterBrow des 13 journaux de § 3.1 ; sur COM21, 147 avertissements (+ 1 ligne de bilan), un seul acteur sur les 5 lignes vues, 76 s après le SPAWN ; GI::CalculateHeadtrack lit CenterBrow sur From.Mesh et To.Mesh (dump 5.5) ; les dumps STE-D8 n'existent pas ; constat « look » du 14 octobre (STG-COMMUN8-DIAG.md) ; currentAnimation jamais affectée dans unOccupyFnt (dump 5.5) ; STATE seulement sous -LPPersonsLog ; un seul constat d'accessoire (COMMUN-7-BILAN.md:28) ; M-Z (code, journal, 18 déclenchements) ; updateHeelHeight (formule et appelants dans le dump 5.5) ; l'enfoncement KEY2 est une autre cause (PlayerBusy).

Estimé (déduit) : le lecteur de CenterBrow est CalculateHeadtrack appelé par Daily et Daily_F ; la cible est un mannequin sans corps ; la garde de la voie A suffit (4 à 8 nœuds) ; une variable currentAnimation périmée peut être réappliquée par UpdateDailyPose ; −80,4 / −82,8 / −85,2 sont des décalages de talons (arithmétique exacte, non mesurée) ; M-Z force −90 sans égard aux talons ; durées et niveaux de § 3.4.

Incertain, essai qui trancherait :

  • F7a : appelants réels de CalculateHeadtrack et origine du HeadtrackTarget : LPDumpFunction -BP=Daily -Fn=EventGraph -Pins -Exec (AnimBP accepté par la commande : incertain, STE-H4-DIAG.md:271) ; état en 5.8 de la fonction : dump 5.8 (copie UE).
  • F7a : effet visible éventuel (regard tourné vers l'origine jusqu'à 57 s, STE-H4-DIAG.md:285-286) : jamais observé.
  • F7b : le clip joue-t-il encore ou seule la variable est-elle périmée ? Séance -LPPersonsLog=2 (§ 3.3).
  • F7c : tout (lieu, cause, recette).
  • F8b : talons ou place ; chemin du −88,0 ; talons portés par les PNJ concernés : séance avec et sans talons, ou HeelHeight dans la ligne M-Z.
  • Dumps 5.5 contre Blueprint 5.8 : Person et GI ont été retouchés depuis le 30 septembre (par exemple IsValid(Person) dans moveToPersonStand, JOURNAUX1/ERR-brouillons.md:23) : les fonctions citées sont à relire en 5.8 avant toute SPEC.

5. Points à confirmer (repris par la fiche suivante)

  1. Rafraîchir en 5.8, par commandlet (copie UE, éditeur fermé), les dumps GI :: CalculateHeadtrack, Person :: updateHeelHeight, Person :: unOccupyFnt, Person :: UpdateDailyPose et l'EventGraph de Person (affectations de currentAnimation), avec lp-commandlets (forme : .\Tools\RunCommandlet.ps1 -Lot FIX1-F7 -Commandlet LPDumpFunction -Args '-BP=<nom> -Fn=<fonction> -Pins -Exec').
  2. Chercher CenterBrow dans Source et Plugins (non fait ici).
  3. Identifier la fonction de GI qui appelle updateHeelHeight (L6f_dump_GI.txt:25258) et les deux autres lectures de CenterBrow dans GI (:42592, :42609).
  4. Lire C10-BILAN (Q4, Q6) et COMMUN-7-BILAN en entier pour F7c (meuble, animation, circonstances).
  5. Vérifier si les autres journaux portent une ligne de bilan comptée dans les 141 à 6 138.
  6. Vérifier que le Shipping écrit ou non l'avertissement (bUseLoggingInShipping, non lu).

6. Questions pour la SPEC ou l'utilisateur

  1. F7a : laisser l'avertissement en build 1 (bruit depuis la 4.27, sans effet visible) et le traiter dans la révision unique de GI en build 2 ?
  2. Autoriser une séance de jeu de 20 à 30 minutes sur le build COM21 avec -LPPersonsLog=2 (sans copie UE) pour F7b et F8b ?
  3. Autoriser l'ajout de HeelHeight et currentAnimation à la ligne M-Z dans la compilation de F8a (une ligne C++, journal seul) ?
  4. F8b : si les talons sont la cause, M-Z doit-il cesser de forcer −90 pour un personnage à talons ? (le « flottement » constaté à COMMUN-9 était-il réel à l'écran ?)
  5. F7c : l'utilisateur se souvient-il de la place et du repas concernés (capture) ?
  6. Reclasser la ligne FIX1 du doc 37 : F7a et F8b hors des « petits correctifs Blueprint par MCP » de la build 1, F7b conditionnel ?

Fichiers à commiter

A Docs/Migration/etat/REL/FIX1/FIX1-F7-PRE.md (dépôt jeu, branche ue5.8), par le gardien sur ticket. Aucun autre fichier écrit.

Tours : 26 / 25 (budget « environ 25 » dépassé de 1 : recherche des appelants de updateHeelHeight et vérification que les Grep de dossier sur etat/ sautent les .txt ; Tools/FicheStats.py fait foi)

Constats

  • Quatre Grep de dossier sur etat/portage55/L6f ont rendu un résultat vide à tort (fichiers .txt ignorés par git) ; les mêmes motifs, sur le fichier nommé, trouvent les lignes. Rejouer toute recherche négative sur un fichier nommé avant de conclure à une absence.
  • Les comptes d'un Grep en mode compte sur des journaux qui portent une ligne de bilan LogStats incluent cette ligne (+ 1 sur COM21).