3.6 KiB
Fiche STE-H7 — Niveau N3 — Modèle prévu (modèle de l'agent lp-cart) | utilisé <modèle déclaré> — Agent lp-cart (DIAG, lecture seule) — Skills lp-commandlets (lecture), sk-protocol
1 Objectif : établir quels assets sont chargés de façon synchrone (FlushAsyncLoading) à l'apparition des PNJ (SPAWN) et
pourquoi : 46 trames SPAWN ≥ 50 ms dont 38 avec FlushAsyncLoading, plus 21 trames FlushAsyncLoading seul (≈ 10 s sur 324 s)
dans la mesure STE-H4 ; 422 FlushAsyncLoading en tout ; proposer des correctifs comparés (préchargement, chargement asynchrone,
cache des maillages / vêtements / matériaux déjà chargés), sans trancher. Lot STE, registre STE-TACHES.md, ligne STE-H7.
2 Complexité : a1 b2 c2 d1 e1 f2 = 9 → N3 (aucun)
2b Agent : lp-cart — à invoquer : lp-commandlets (lecture des dumps, commandes de dump) — outils retirés : aucun
3 Contexte : copie D:\Game\LifePlay-master 5.8, HEAD 4283c13. Décision de l'utilisateur (2026-10-11) : instruire H7 et H8
(« les deux »). Livrables amont : STE-H4-MESURE.md, STE-H4-DIAG.md (§ 3.4 : SPAWN, FAL), STE-H2b-DIAG.md (SPAWN,
LoadPreset, LoadMeshIfNeeded, mannequins recyclés). Journal de mesure (copie de lecture) :
%USERPROFILE%\AppData\Local\Temp\claude\D--Game-LifePlay-master-5-8\37530d8d-c780-4a57-8fbd-bcb010aa6408\scratchpad\M-H4-LifePlay.log
(lignes LogStreaming: Display: FlushAsyncLoading(<n>): <q> QueuedPackages, <a> AsyncPackages, index SPAWN) ; fichiers
D:\Game\LifePlay_Build_5.8_STE-J5_Development\Windows\LifePlay\Saved\Profiling\AsyncLoadRequests_*.log et CSV
Profiling\CSV\Profile(20261011_012223).csv / (…012509) (colonne EVENTS : FlushAsyncLoading##<t> ; en-tête en fin de
fichier ; script scratchpad\mesure_h4.py). Dumps : dumps\GI__SpawnDummy_D4.txt, GI__LoadMeshIfNeeded_D4.txt,
GI__CheckCbeGenderModel_D4.txt, GI__LoadPreset.txt, Person__EventGraph_D4.txt, GI__EventGraph_V5.txt. Source C++ :
Source\LifePlay (chargeurs de mods, LoadObject / StaticLoadObject / LoadSynchronous éventuels).
4 Questions :
- Q-a : quels nœuds ou fonctions C++ déclenchent les
FlushAsyncLoadingau SPAWN (LoadObject,Load Asset Blocking,SetSkinnedAssetAndUpdatesur un asset non chargé, vêtements, matériaux, morphs,LoadPreset) ; quels paquets (si le journal ou lesAsyncLoadRequestsles nomment) ; - Q-b : coût par SPAWN (durée des trames, nombre de FAL par SPAWN), premiers SPAWN vs suivants (cache), 21 FAL hors SPAWN ;
- Q-c : correctifs comparés (précharger au chargement de la carte,
AsyncLoadAsset, garder une référence aux assets déjà chargés), nœuds ou fichiers C++ nommés, effet attendu, effet mémoire, risque ; - Dumps manquants : commande exacte
.\Tools\RunCommandlet.ps1 -Lot STE-D9 -Commandlet LPDumpFunction -Args '-BP=<BP> -Fn=<Fn> -Pins -Exec'; s'arrêter sur ce point, pas de commandlet. 5 Pièges : « établi » / « estimé » partout ; une trame SPAWN longue n'est pas forcément due au FAL (le prouver par l'horodatage des lignes dans la trame) ;-llmcsva perturbé une partie de la mesure ; ne pas modifierSource. 6 Interdits : aucune écriture hors du livrable ; pas d'éditeur, de commandlet, de build ni de jeu ; aucun commit ; aucune écriture dansContentniSource(+ sk-protocol § 2). 7 Livrable :D:\Game\LifePlay-master 5.8\Docs\Migration\etat\ST\STE\STE-H7-DIAG.mdau gabarit DIAG (questions Q-H7-n), en LF. 8 Critère d'acceptation : Q-a et Q-b répondues avec preuves (ou dumps manquants exacts) ; au moins deux correctifs décrits. 9 Budget et arrêt : ≈ 60 tours, pic ≤ 250 k, ≈ 40 min.