44 lines
4.8 KiB
Markdown
44 lines
4.8 KiB
Markdown
Fiche STE-H10 — Niveau N3 — Modèle prévu (modèle de l'agent lp-cart) | utilisé <modèle déclaré> — Agent lp-cart (SPEC, lecture seule) — Skills lp-mcp (lecture), lp-commandlets (lecture), sk-protocol
|
|
|
|
1 Objectif : SPEC des correctifs des saccades mesurées par la trace Insights STE-H9 (`STE-H9-TRACE.md`), en deux volets :
|
|
(A) **cheveux** : chargement synchrone des maillages de cheveux à l'apparition / reprise des PNJ
|
|
(`LoadHairMeshIfNeeded` → `getSkeletalMeshFromPath` → `GetAsset` → `FlushAsyncLoading`, 285 ms sur 442 ms d'actions latentes) ;
|
|
(B) **fin de scène** : `SavePreset` appelé par `DestroyPerson` (≈ 110 ms par scène), `RevertStripAll` →
|
|
`ShowAppropriateGenital` → `IsGenitalExposed` → `GetSMBoolForSMC_Cloth` (≈ 75 ms, ~190 000 `Array_Get`), `Dress` →
|
|
`ClearProxies`, reconstruction de l'interface d'actions (`TopRight` `Current`, `GI.ShowUI` → `CopyActionsToScroll`, ≈ 120 ms).
|
|
Pour chaque point : options comparées (ex. A : chargement asynchrone `Async Load Asset`, cache `Map<String, SkeletalMesh>`
|
|
dans GI, préchargement à l'entrée d'un lieu ; B : différer / ne faire `SavePreset` que si le preset a changé, sortir une
|
|
boucle d'une autre boucle, mettre en cache un résultat, ne reconstruire la liste d'actions que si elle change), avec nœuds
|
|
nommés, câblage MCP exécutable, effet attendu en ms (à partir de la trace), effet visible, risque ; une question Q-H10-n par
|
|
choix ; **aucun choix tranché**. Lot STE, registre `STE-TACHES.md`, ligne STE-H10.
|
|
2 Complexité : a2 b2 c2 d1 e1 f2 = 10 → N3 (aucun)
|
|
2b Agent : lp-cart — à invoquer : lp-mcp (§ 3-4, conventions d'écriture), lp-commandlets — outils retirés : aucun
|
|
3 Contexte : copie `D:\Game\LifePlay-master 5.8`, HEAD (GI `16394D43…`, Person `BE21838A…`, TopRight `3DF4DEC4…`).
|
|
Décision de l'utilisateur (2026-10-11) : « Cheveux + fin de scène ». Placement (Big Boss) : écritures après la porte T11 d'U8,
|
|
derrière C0 (`STE-H4-C0-SPEC.md`, `GI.destroyDummy`) ; Person libre (CAM n'y touche pas) ; GI partagé avec CAM (sous-lots B1,
|
|
B4, B5) : **lister précisément les fonctions / graphes de GI touchés**.
|
|
Dumps `etat\ST\STE\dumps\` (`.txt`, locaux) : STE-D9 `GI__LoadHairMeshIfNeeded_D9`, `GI__getSkeletalMeshFromPath_D9`,
|
|
`GI__SavePreset_D9` (503 nœuds), `GI__CopyActionsToScroll_D9`, `GI__GetSMBoolForSMC_Cloth_D9`, `Person__IsGenitalExposed_D9`,
|
|
`Person__ShowAppropriateGenital_D9`, `Person__ClearProxies_D9`, `TopRight__EventGraph_D9` (906 nœuds ; `Current`,
|
|
`GenerateRecs`), `Person__graphes_D9` (liste des 134 graphes) ; `GI__EventGraph_V5.txt` (GI actuel : événements
|
|
`DestroyPerson`, `ShowUI`), `Person__EventGraph_D4.txt` (Person inchangé : `RevertStripAll`, `Dress`), `GI__clearScenePersons_V5.txt`,
|
|
`GI__SpawnDummy_D4.txt`, `GI__LoadMeshIfNeeded_D4.txt`. Mesures : `STE-H9-TRACE.md` (exports `scratchpad\h9\`), `STE-H7-DIAG.md`,
|
|
`STE-H8-DIAG.md`, `STE-H4-DIAG.md`.
|
|
4 Entrées et questions :
|
|
- A : où et combien de fois les cheveux sont chargés par PNJ (SPAWN, `DressSavedActualActual`, reprise de mannequin) ; même
|
|
chemin rechargé plusieurs fois ? (cache) ; le résultat est-il utilisé dans la même trame (asynchrone possible ?) ;
|
|
- B : ce que `SavePreset` écrit et pourquoi en fin de scène (nécessaire à chaque fois ?) ; structure des boucles
|
|
d'`IsGenitalExposed` / `GetSMBoolForSMC_Cloth` (complexité) ; pourquoi `CopyActionsToScroll` recrée ~350 widgets ;
|
|
- pour chaque option : liste exacte des graphes modifiés (GI / Person / TopRight), nombre de nœuds, instantanés, critères de
|
|
VAL et de preuve en jeu (refaire la trace Insights, même parcours : temps des fonctions visées et trames ≥ 50 ms) ;
|
|
- dumps manquants : commande exacte `.\Tools\RunCommandlet.ps1 -Lot STE-D10 -Commandlet LPDumpFunction -Args '-BP=<BP> -Fn=<Fn> -Pins -Exec' -EtatDir "D:\Game\LifePlay-master 5.8\Docs\Migration\etat\ST\STE"` ; s'arrêter sur ce point.
|
|
5 Pièges : lp-mcp § 3-4 (type_id localisés, indices de broches à relire) ; ne pas changer un comportement visible sans question ;
|
|
un chargement asynchrone change l'ordre d'exécution (le PNJ peut s'afficher sans cheveux une trame) : le dire ; « établi » /
|
|
« estimé » partout.
|
|
6 Interdits : aucune écriture hors du livrable ; pas d'éditeur, de commandlet, de build ni de jeu ; aucun commit ; aucune écriture
|
|
dans `Content` ni `Source` (+ sk-protocol § 2).
|
|
7 Livrable : `D:\Game\LifePlay-master 5.8\Docs\Migration\etat\ST\STE\STE-H10-SPEC.md` au gabarit SPEC (volets A et B, options,
|
|
questions Q-H10-n, liste des graphes GI touchés par option), en LF.
|
|
8 Critère d'acceptation : au moins une option exécutable par MCP sans improvisation pour A et pour B (ou dumps manquants exacts) ;
|
|
gain attendu chiffré à partir de la trace ; liste des graphes GI touchés.
|
|
9 Budget et arrêt : ≈ 70 tours, pic ≤ 300 k, ≈ 50 min.
|