35 KiB
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)
- La ligne FIX1 du doc 37 est à reclasser :
37_Feuille_De_Route_Alpha2.md:171range 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. - 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. - 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. - 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). - 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 dePerson::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. - 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
CalculateHeadtracket origine duHeadtrackTarget: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
HeelHeightdans 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)dansmoveToPersonStand,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)
- Rafraîchir en 5.8, par commandlet (copie UE, éditeur fermé), les dumps
GI :: CalculateHeadtrack,Person :: updateHeelHeight,Person :: unOccupyFnt,Person :: UpdateDailyPoseet l'EventGraphde Person (affectations decurrentAnimation), aveclp-commandlets(forme :.\Tools\RunCommandlet.ps1 -Lot FIX1-F7 -Commandlet LPDumpFunction -Args '-BP=<nom> -Fn=<fonction> -Pins -Exec'). - Chercher
CenterBrowdansSourceetPlugins(non fait ici). - Identifier la fonction de GI qui appelle
updateHeelHeight(L6f_dump_GI.txt:25258) et les deux autres lectures deCenterBrowdans GI (:42592,:42609). - Lire
C10-BILAN(Q4, Q6) etCOMMUN-7-BILANen entier pour F7c (meuble, animation, circonstances). - Vérifier si les autres journaux portent une ligne de bilan comptée dans les 141 à 6 138.
- Vérifier que le Shipping écrit ou non l'avertissement (
bUseLoggingInShipping, non lu).
6. Questions pour la SPEC ou l'utilisateur
- 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 ?
- Autoriser une séance de jeu de 20 à 30 minutes sur le build COM21 avec
-LPPersonsLog=2(sans copie UE) pour F7b et F8b ? - Autoriser l'ajout de
HeelHeightetcurrentAnimationà la ligne M-Z dans la compilation de F8a (une ligne C++, journal seul) ? - 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 ?)
- F7c : l'utilisateur se souvient-il de la place et du repas concernés (capture) ?
- 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/L6font rendu un résultat vide à tort (fichiers.txtignoré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
LogStatsincluent cette ligne (+ 1 sur COM21).