14 KiB
Fiche STE-H3f — Niveau N2 — Modèle prévu (modèle de l'agent lp-diag) | utilisé Opus 5.5 (claude-opus-5-5) — Agent lp-diag — Skills sk-protocol, ue-cpp-build, lp-commandlets, lp-paths
STE-H3f-DIAG : attribution des 3 familles Accessed None nouvelles en H3e-J (2026-10-13)
Abréviations : HJ = Docs\Migration\etat\ST\STE\STE-H3e-J\LifePlay.log (copie du journal de l'archive
D:\Game\LifePlay_Build_5.8_CAM-B2_Development, mêmes numéros de ligne relus dans l'original) ; J6 =
D:\Game\LifePlay_Build_5.8_STE-J6_Development\Windows\LifePlay\Saved\Logs\LifePlay.log ; GEV =
etat\ST\STE\dumps\GI__EventGraph_V5.txt ; LH = etat\ST\STE\dumps\GI__LoadHairMeshIfNeeded_D9.txt ;
B55 = D:\Game\LifePlay_Build_5.5_* ; P55 = D:\Game\LifePlay-master 5.5\Saved\Logs\portage\.
Motif de comptage commun (outil Grep) : LogScript: Warning: Accessed None trying to read (\(real\) )?property (K2Node_CustomEvent_Person|PersonCumming|SkeletalMesh_2_\w+).
Une fiche par famille (rubrique 1 de la fiche) : un DIAG, trois hypothèses d'origine, une par section F1 à F3.
1. Symptôme et reproduction
- Grep
Accessed Nonesur HJ : 13 lignesLogScript: Warning(HJ:1160, 1244, 6880, 6903, 6926, 9194, 9243, 9262, 15417, 15627, 15841, 16058, 16086) ; sur J6 : 9 (J6:1230, 1280, 1381, 2643, 5126, 7325, 7666, 8125, 8712). Conforme aux 13 / 9 de la fiche. - Familles de HJ absentes de J6 :
K2Node_CustomEvent_Person(HJ:6880, 6926, plus l'affectation liée HJ:6903),PersonCumming(HJ:9243, 9262),SkeletalMesh_2_93573D…(HJ:16058, 16086). Les 5Actor(isCreatureType) de J6 ont disparu en HJ (correctif H3d). - Reproduction : non rejouée (lecture seule, pas de jeu, rubrique 6). Les parcours sont décrits par famille ci-dessous.
F1 — K2Node_CustomEvent_Person (Person)
- Lignes : HJ:6880 et HJ:6926 (13:38:54.909 et .912, image 294), HJ:6903
Accessed None attempting to assign variable(même image, même pile). ActeurPerson_C_2147481981,ExecuteUbergraph_Person:64X. - Pile complète (HJ:6883-6891) :
Room_C:ExecuteUbergraph_Room→Person_C:PlayIdle→PlayWorkDaily→ExecuteUbergraph_Person→PlayDaily→ExecuteUbergraph_Person→moveToPersonStand→ExecuteUbergraph_Person(tête). - Contexte de jeu :
Room_C_0 test0608 generateperson(HJ:6874) →Person_C_2147481981 index SPAWN(HJ:6875) →idle played(HJ:6879) → erreur ; lieu « restaurant » (HJ:6949).
F2 — PersonCumming (GI)
- Lignes : HJ:9243 et HJ:9262 (13:40:29.289, image 883),
GI_C … ExecuteUbergraph_GI:64X. - Pile (HJ:9246-9252) :
SexAction_C:BndEvt__ActionButton…OnButtonClicked→ExecuteUbergraph_SexAction→GI_C:cum→ExecuteUbergraph_GI→AfterCumSpeed→ExecuteUbergraph_GI(tête). - Contexte :
SexAction_C_2147460580 Endsex (Animation String)(HJ:9242), clic sur un bouton d'action de fin d'acte.
F3 — SkeletalMesh_2_93573D9945CD4136090CCBA1F1188DAC (GI)
- Lignes : HJ:16058 (13:43:43.368, image 350) et HJ:16086 (13:43:48.920, image 681),
ExecuteUbergraph_GI:64X. - Pile (HJ:16061-16071) :
Contact_C:BndEvt__ContactButton…OnButtonClicked→ExecuteUbergraph_Contact→OnClickContactButton→ExecuteUbergraph_Contact→GI_C:LoadPreset→GenerateAndApplyStrings→PlayerChangeRace→ExecuteUbergraph_GI→UpdateDefaultHair→ExecuteUbergraph_GI(tête). - Contexte : menu des contacts ; trois
AddCreatureButton→GenerateCreature→SavePresetjuste avant (HJ:15421, 15631, 15845 ;DestroyDummy was from AddCreatureHJ:15433, 15643, 15857), puis clic sur un contact (LOAD ETHNIC test1811HJ:16085, 16113 ;CLICK ON THE SAME BUTTONHJ:16114). LesLOAD ETHNICantérieurs de HJ (3317, 10219, 10221, 15414) et ceux de J6 (J6:3718, 3970) ne lèvent pas l'erreur. GrepAddCreature|GenerateCreaturesur J6 : 0.
2. Hypothèse testée (une seule)
H : chacune des trois familles est un défaut d'origine révélé par le parcours de HJ, et non un effet de Room B2 (CAM,
non commité), de STE-H10 (DestroyPerson, SavePreset, GetSMBoolForSMC_Cloth, ClearProxies, RandomizeHairs, Current)
ou de STE-H3d (CallFunctionReturnBool). Réfutée pour une famille si : elle est absente de tout journal antérieur à ces
changements alors que son chemin y est exercé, ou si sa pile passe par un graphe modifié.
3. Essai et résultat brut
3.1 Comptes par journal (motif commun, outil Grep)
| Journal | F1 | F2 | F3 | Source |
|---|---|---|---|---|
HJ (CAM-B2, 0745917 + Room B2) |
2 (+1 affectation) | 2 | 2 | lignes § 1 |
J6 (STE-J6) |
0 | 0 | 0 | Grep J6 |
CAM-B2 LifePlay-backup-2026.10.13-13.24.10.log |
0 | 2 (l. 3170, 3181) | 0 | Grep |
| CAM-B1 / B1c / B1d (2026-10-13) | 0 / 0 / 0 | 4 (l. 4289-4938) / 0 / 0 | 0 | Grep |
STE-J5 backup-2026.10.10-23.30.21 |
10 | 4 | 0 | Grep |
STE-H5b-C0 backup-2026.10.10-19.34.53 |
14 (compte des 3 motifs, F1 seule selon STE-H5b-C0.md:52) |
— | 0 | Grep count |
| STF-STE-LISIB (J3) | 14 | 0 | 0 | Grep |
| STC (2026-10-10) | 0 | 2 (l. 3840, 3851) | 0 | Grep |
STB-JEU2 / STB-JEU backup-2026.10.09-20.30.49 |
6 / 2 (l. 18574, 18600) | 0 | 0 | Grep |
| STF-STE, STE-H5b-TEMOIN | 0 | 0 | 0 | Grep |
Toutes archives LifePlay_Build_5.8_* (Grep SkeletalMesh_2_93573D, glob */Windows/LifePlay/Saved/Logs/*.log) |
— | — | 2, CAM-B2 seul | Grep count |
| B55 (DC4, Development, DebugGame) | 38 au total | 2 (DebugGame l. 68565, 68576) | 0 | Grep -o |
| P55 (journaux 5.5) | — | 56 sur 20 fichiers | 270 sur 3 fichiers (L5b 93, L5c 40, L5c2 137) | Grep count |
P55 REF427_session_20260929_quete.log, ref427_partie_20260930.log (référence 4.27) |
0 | 2 + 2 | 0 | Grep |
3.2 Piles antérieures relues
- F1 :
STB-JEU …backup-2026.10.09-20.30.49.log:18574-18585etB55 DC4 …backup-2026.10.08-15.16.01.log:13674-13685: même pileRoom_C:ExecuteUbergraph_Room > PlayIdle > PlayWorkDaily > PlayDaily > moveToPersonStand, suivie de la mêmeassign variable(DC4:13687). Déjà requalifié « défaut d'origine » (U8-T5cr2-VAL.md:133-140,STE-PASSATION.md:71). - F2 :
STC LifePlay.log:3840-3849même pileSexAction > cum > AfterCumSpeed; 4.27 :REF427_session_20260929_quete.log:13936-13942même pileSexAction_C:BndEvt__ActionButton > ExecuteUbergraph_SexAction > GI_C:cum;ref427_partie_20260930.log:69939-69945autre appelant (Person_C:UpdateOeChange > GI_C:UpdateOeForSexPersons). Signalé dès U3 (U3-T4-EDITEUR.md:20« Set Rate | Accès None PersonCumming », jugé « chemin de jeu propre à une scène ») et U8 (U8-T5cr2-VAL.md:117). - F3 :
P55 L5b_partie_utilisateur_20260929.log:11099-11115: même queue de pileLoadPreset > GenerateAndApplyStrings > PlayerChangeRace > ExecuteUbergraph_GI > UpdateDefaultHair(entrée parScene_C NextButton > ContinueScene > ReadSceneLine > CallFunction > GeneratePerson). Défaut voisin documenté :U7-SUIVI.md:70-79(UpdateDefaultHairlit None après une reconstruction deGI.HairstyleTable, corrigé en U7-T12 pour ce cas seulement).
3.3 Graphe à la tête (dumps relus)
- F2 : GEV:10896-10904
AfterCumSpeed(K2Node_CustomEvent_702) →VariableSet_9760 Rate←CallFunction_1002; GEV:28040-28063 :VariableGet_720 PersonCumming→VariableGet_721 Race(StartsWith 'Dog') etVariableGet_722 IsMale→BooleanAND→bPickAdeCallFunction_1002(A = 0.0, B = 0.25, GEV:28036-28039). Deux lectures dePersonCumming= deux avertissements par clic. AvecPersonCumming= None, les deux lectures rendent la valeur par défaut,bPickA= false,Rate= 0.25 (estimé : sémantique d'une lectureAccessed Noneen Blueprint). - F3 : GEV:3701-3726
UpdateDefaultHair(K2Node_CustomEvent_5) :IsMale→IfThenElse_65 / _66→LoadHairMeshIfNeeded(CallFunction_259/_287, indexCallFunction_229/_254, GEV:19804-19830) →SetSkinnedAssetAndUpdate(HairSM, NewMesh = BreakStruct_12/13.SkeletalMesh_2)(CallFunction_662/_661) →MacroInstance_5 / _4(ForEach) surVariableGet_1147 / _64 Materialsdontself=BreakStruct_12/13.SkeletalMesh_2(GEV:4143-4160, 19816-19818, 19835-19837). La lecture deMaterialssur un maillage None lève l'avertissement ;HairSMa alors déjà reçu None. LH:11-80 :LoadHairMeshIfNeededne charge que si le maillage est invalide et chemin ≠ None et (DazouLegacyPercentage > 0), etgetSkeletalMeshFromPathpeut rendre None (asset introuvable) : trois cas où la table garde None. - F1 : pas de dump
Personrelu à l'offset64X(rubrique 9 : budget ; la pile suffit à l'attribution).
3.4 Lien avec les changements récents
- STE-H10 / H3d : Grep
moveToPersonStand|PlayIdle|PlayDaily|PlayWorkDaily|AfterCumSpeed|PersonCumming|UpdateDefaultHair|LoadHairMeshIfNeeded|PlayerChangeRace|HairstyleTable|\bcum\bsurSTE-H10*.md,STE-H3d*.md: seulsHairstyleTableetLoadHairMeshIfNeededsont cités, comme lus par A1 (RandomizeHairsde Person appelleGI.LoadHairMeshIfNeeded, GI non modifié :STE-H10-SPEC.md:98-119,STE-H10-IMPL.md:34-40) ; aucun des graphes des trois piles n'est modifié par H10 ou H3d. - Room B2 :
CAM-B2-DEMANDE.md:6-7« Room seul … (PC, GI, Person non touchés) » ;CAM-B2-V7-BUILD.md:2, 90: build HJ = HEAD0745917+ Room seul modifié. GI de HJ = GI du dépôt :md5sum Content/BPs/GI.uasset→c4817b847ecf246c859647577647d6e9(=C4817B84de la fiche). Seule F1 a Room dans sa pile (Room_C:ExecuteUbergraph_Roomen bas), mais la même pile existe avant B2 (STB-JEU 2026-10-09, DC4 5.5). - État git relu (
git diff --stat HEAD -- Content/BPs/Room.uasset Content/BPs/Person.uasset Content/BPs/GI.uasset) : Room et Person modifiés dans l'arbre à cette heure ; Person n'était pas modifié au build HJ (CAM-B2-V7-BUILD.md:90« Room seul modifié ») : constat hors périmètre, signalé.
4. Verdict : confirmée (par famille)
| Famille | Origine | Niveau | Preuve |
|---|---|---|---|
F1 K2Node_CustomEvent_Person (Person, moveToPersonStand) |
défaut d'origine (≥ 5.5 DC4), révélé par le parcours ; ni B2, ni H10, ni H3d | établi (même pile dans DC4 5.5 et STB-JEU 5.8, antérieurs à H10, H3d et B2) | § 3.1, 3.2 |
F2 PersonCumming (GI, cum > AfterCumSpeed) |
défaut d'origine 4.27, révélé par le parcours (clic de fin d'acte) | établi (même pile dans REF427) | § 3.1-3.3 |
F3 SkeletalMesh_2 (GI, PlayerChangeRace > UpdateDefaultHair) |
défaut d'origine 5.5 (même queue de pile en L5b, 2026-09-29), révélé par le parcours contacts / créatures, jamais joué dans les archives 5.8 | établi pour l'antériorité ; estimé pour la cause exacte du None (§ 3.3 : trois cas possibles) et pour l'absence de rôle de H10-A1 (UpdateDefaultHair appelle lui-même LoadHairMeshIfNeeded avant de lire : le cache rempli ou non par RandomizeHairs ne change pas la condition) |
§ 3.1-3.4 |
Pourquoi absentes de J6 : chemins non exercés ou exercés autrement (estimé) : F3 suit AddCreature / contact, 0 en J6 ;
F2 dépend de l'acte (J6 a un Endsex J6:2849 sans erreur) ; F1 dépend d'un PlayIdle de Room pendant un moveToPersonStand
(24 generateperson en J6, 32 en HJ ; la condition de course n'est pas mesurée).
5. Hypothèse suivante proposée, et à quel niveau
Suites proposées (aucune lancée ; décisions à l'utilisateur) :
- F1 : défaut d'origine accepté (avis déjà rendu à Big Boss,
STE-PASSATION.md:71) ; si une garde est voulue : CART N2 surPerson:EventGraphmoveToPersonStand(lecture du paramètrePersongardé parIsValid, format G7). Dump à faire lancer :.\Tools\RunCommandlet.ps1 -Lot STE-H3f -Commandlet LPDumpFunction -Args '-BP=Person -Fn=EventGraph -Pins -Exec'(forme reprise defiches\STE-D.md:16-17). Aucun lien CAM : pas de renvoi. - F2 : garde G7
IsValid(PersonCumming)en amont deBooleanAND_101dansAfterCumSpeed(else →bPickA= false) : mêmeRate= 0.25 qu'aujourd'hui (estimé § 3.3), donc sans changement de comportement ; ou défaut d'origine accepté (4.27). Dump déjà disponible (GEV) ; à rafraîchir avant SPEC :.\Tools\RunCommandlet.ps1 -Lot STE-H3f -Commandlet LPDumpFunction -Args '-BP=GI -Fn=EventGraph -Pins -Exec'. - F3 : garde G8 en deux temps. (a) Sans changement de comportement :
IsValid(SkeletalMesh_2)avant les deux bouclesMacroInstance_4 / _5surMaterials(la boucle sur un maillage None ne fait rien aujourd'hui). (b) Avec changement : ne pas appelerSetSkinnedAssetAndUpdatequand le maillage est None (garder la coiffure en place au lieu de la vider) → Q1. Avant toute SPEC, un DIAG N2 pour fixer la cause du None (indexCallFunction_229 / _254, chemin,Daz,LegacyPercentage, préréglage de créature) ; même dump GI que F2, plus-Fn=LoadHairMeshIfNeededet-Fn=getSkeletalMeshFromPath.
Questions pour l'utilisateur :
- Q1 (F3) : quand le maillage de coiffure par défaut est None, garder la coiffure précédente (b) ou laisser le personnage sans coiffure comme aujourd'hui (a seul) ?
- Q2 (F1, F2) : défauts d'origine acceptés (aucune fiche) ou gardes G7 sans changement de comportement ?
Tours : 30 / 40
Constats
- Piège d'outil, établi : Grep sur le dossier
etat\ST\STE\dumpsavec le motifSkeletalMesh_2_93573D|PersonCumming→ 0 fichier ; le même motif sur le fichierGI__EventGraph_V5.txt→ lignes 3719, 28040… Les.txtdeetat/sont ignorés par git (lp-paths) et ripgrep les saute même quand le dossier est passé enpath; il faut nommer le fichier. - Les comptes « 14 » de STE-H5b-C0 sont ceux du motif commun aux 3 familles ; la part F1 seule est reprise de
STE-H5b-C0.md:52(non recomptée séparément). - Non mesuré : condition exacte qui rend
K2Node_CustomEvent_PersonNone (F1) ; préréglage du contact cliqué (F3) ; journaux 4.27 hors des deux fichiers REF427 de P55. - Lecture seule respectée ; un seul fichier écrit (ce livrable, non suivi). Aucun nom d'utilisateur ni chemin de profil cité.
Fichiers à commiter : A Docs/Migration/etat/ST/STE/STE-H3f-DIAG.md (dépôt jeu, branche ue5.8), par le gardien sur ticket.
Décisions de l'utilisateur (2026-10-13)
- Q2 (F1
K2Node_CustomEvent_Person, F2PersonCumming) : acceptés sans fiche (défauts d'origine, à consigner au registre des erreurs au prochain jeton du journal). - Q1 (F3
UpdateDefaultHair) : comportement actuel conservé : garde sans changement de comportement (pas de coiffure, sans le message) à spécifier avec G15 (même passage MCP sur GI) ; cause exacte non instruite.