LifePlay-Revival/Docs/Migration/etat/ST/STG/STG-C2-CART.md

92 lines
8.4 KiB
Markdown
Raw Normal View History

# Fiche STG-C2 — Niveau N3 — Modèle prévu claude-opus-5-5 | utilisé claude-opus-5-5
CART de **B-SOL** (personnages enfoncés dans le sol jusqu'aux genoux dans la Room street ; ancien, présent en 5.5).
Lot STG, registre `STG-TACHES.md`. Lecture seule, sans copie UE. Date : 2026-10-13. Copie : `D:\Game\LifePlay-master 5.8`,
branche `ue5.8`, HEAD `0745917`. Sources communes avec STG-C1 (§ 1 de `STG-C1-CART.md` : ROOM, ROOM-EG, SI, PEG, COMP, CFG).
## 1. Sources propres à B-SOL
| Repère | Fichier | Contenu |
|---|---|---|
| ST | `Content/Modules/vin_Base/World/street___vin01.lpworld` (27 lignes) | Room street : échelle racine `X=3.5 Y=18 Z=0.010` ; décor `fnt_ext001` en Z relatif **48130,742** (échelle 0,286 / 0,056 / 100) ; plan de marche `fnt_nav01` en Z relatif **60** (échelle 0,246 / 0,120 / 100) |
| OUT | `Source/LifePlay/LPOutdoorRoomSubsystem.cpp` (CHG-057) | plafond `WallT` masqué si échelle Z de la racine < 0,05 |
| J-U6 | `etat/U58/U6/LifePlay_58_session2.log` l. 7619, 7733 | street chargée ; `Piece exterieure (echelle Z 0.010) : plafond WallT masque` |
| J-U7 | `etat/U58/U7/T11/LifePlay_U7d_T12_C2_ok.log` l. 8513, 8631, 8914 | idem ; `PlayerCharacter` passe par `PlayIdle` → `standIdle` → `moveTo` en street |
| L7l | `Docs/Journal_Modifications.md` l. 963-975 ; `Registre_Erreurs.md` l. 43 (ERR-036) | meubles ancrés en Z = 60 (`Room::addObject`) ; hauteur du sol de marche à mesurer en jeu |
| U7 | `etat/U58/U7/U7-SUIVI.md` l. 80 | signalement : Bridget (joueuse) enfoncée jusqu'aux genoux dans le pavé, carte de ville |
| UA | `Content/Heavy/New2/Furniture/fnt_ext001.uasset`, `fnt_nav01.uasset` (chaînes lues) | les deux ont un `BodySetup`, `CollisionProfileName` `BlockAll`, `CTF_UseSimpleAndComplex`, `NavCollision` ; matériau de `fnt_nav01` : `/Game/Heavy/Daz/Bridget/Transparent` (plan invisible) |
## 2. Faits établis
1. **Ce n'est pas ERR-036** (même symptôme, autre cause) : en street, l'échelle Z vaut 0,010 < 0,05 et le journal confirme
le masquage du plafond (J-U6 l. 7733, J-U7 l. 8631). Le plafond `WallT` se trouverait de toute façon à ≈ 20 cm du sol
(2040 × 0,01), donc à hauteur de chevilles, et blanc, alors que le défaut atteint les genoux et montre le pavé.
2. **Pieds = position de l'acteur − 90** : demi-hauteur de capsule 88, maillage à Z relatif −90 (COMP l. 1768, 2556).
3. **La capsule ignore WorldStatic** (profil `Custom`, COMP l. 1881). Ce qui porte un personnage n'est donc pas
n'importe quel décor statique : soit un composant d'un autre type d'objet (WorldDynamic…), soit rien (personnage
tenu par ses seules poses `SetActorLocation`). Les nœuds `SetCollisionResponseToChannel(WorldStatic, Ignore / Block)`
des événements `DisableCol` / `EnableCol` sont **débranchés**, en 5.8 comme en 5.5 (PEG l. 12612-12619, 12876-12887 ;
P55 l. 33919-33929).
4. **Trois poses de position sans balayage**, chacune met le centre de la capsule exactement sur un point donné :
`moveTo` (échec de `MoveToLocation`, ou préfixe `C`) ; `CompleteCurrentMovement` (à chaque arrivée) ;
`MoveAllToCenterRoom` (Z de la variable locale `Loc`, jamais initialisée dans la fonction, ROOM).
5. **Repli de `standIdle`** sans emplacement libre : destination = centre de `Room.StaticMeshComponent` **+ 50** en Z
(SI). Centre de capsule à +50 → **pieds à −40 cm** sous l'origine de la pièce : hauteur du genou.
6. Le défaut existe en 5.5 (utilisateur, U7) ; graphes et donnée de lieu identiques en 5.5 (P55 ; `.lpworld` hors git
dans la copie 5.8 : `.gitignore:83` `/Content/Modules/`).
## 3. Hypothèses (estimé ; à trancher par mesure)
| # | Hypothèse | Ce qui la soutient | Ce qui la distinguerait en jeu |
|---|---|---|---|
| H-SOL1 | **Décor plus haut que la surface de marche** : le pavé visible de `fnt_ext001` (posé à la main en Z relatif 48130,742, soit ≈ +481 cm) est au-dessus du plan de marche `fnt_nav01` / navmesh (+0,6 cm) d'environ 40-50 cm, ou sa collision simple ne suit pas le pavé | street seule signalée ; même famille que la forêt de L7l (sol de neige posé à la main, « mesure en jeu nécessaire ») ; emplacements = points du navmesh | **tous** les personnages de la street, joueur compris, à la même profondeur, en permanence, à toute position |
| H-SOL2 | **Repli à +50 non corrigé** (fait 5) : téléportation du centre de capsule à +50, pas de surface qui la repousse (fait 3) | profondeur prédite = 40 cm = genoux ; street étroite → peu d'emplacements → repli fréquent (STG-C1 K2-K3) | seulement **certains** personnages (repli), tous au **même point**, profondeur constante de 40 cm, qui disparaît après un déplacement |
Les deux peuvent coexister. La capture U7 (la joueuse seule, au pavé) penche vers H-SOL1, sans le prouver.
### Constat du 2026-10-13 (essais CAM sur COMMUN-1, sans `-LPPersonsLog`)
Capture de l'utilisateur (transmise par Big Boss, `images.webp` de la session Big Boss) : street, scène de dialogue en
cours (sous-titre), **deux PNJ debout** (homme t-shirt vert, femme débardeur) enfoncés à la même profondeur (genoux à
mi-cuisses, ≈ 45-55 cm, estimé à l'œil), près de la rambarde blanche. Ce ne sont pas des poses de meuble (H-D5 de STG-C3
écartée pour ce cas). Même profondeur pour deux personnages placés en scène → plutôt H-SOL1 (surface de marche sous le
pavé visible), ou une pose sans balayage commune aux deux (`moveToPersonStand` / `CompleteCurrentMovement`), à trancher
par M1 (`delta`, `floorComp`, `visibleComp`).
## 4. Assets et nœuds en jeu
- Donnée de lieu : `Content/Modules/vin_Base/World/street___vin01.lpworld`, lignes `fnt_ext001` (l. 22) et `fnt_nav01`
(l. 27) — hors git dans la copie 5.8 (dépôt local `Content/Modules` : voir `lp-paths` avant toute écriture).
- Maillages : `Content/Heavy/New2/Furniture/fnt_ext001.uasset`, `fnt_nav01.uasset` (lecture seulement).
- `Content/BPs/Person.uasset` : `standIdle` (repli +50), `EventGraph` `moveTo` (`K2Node_CallFunction_399`),
`CompleteCurrentMovement` (`_487`, `_303`), capsule (CDO).
- `Content/BPs/Room.uasset` : `MoveAllToCenterRoom` (`Loc`), `getStandSpots` — **réservé par CAM**.
- `Source/LifePlay/LPDebugSubsystem.*` : support d'une commande de mesure (M1).
## 5. Mesures demandées (copie UE, sous jeton)
| Fiche | Geste | Coût | Tranche |
|---|---|---|---|
| STG-D1 | `RunCommandlet.ps1` `LPCheckMeshes -Path=/Game/Heavy/New2/Furniture/fnt_ -CSV=…` (existant, colonnes `MinZ`, `MaxZ`) | N0, ≈ 2 min, aucune écriture d'asset | hauteur Z du décor par rapport au plan de marche (première approche de H-SOL1) |
| M1 | commande console non-Shipping `LifePlay.PersonsDump` (C++ dans `LPDebugSubsystem`, aucun asset) : par personnage, position, bas de capsule, mode de mouvement, plancher trouvé (composant, Z), surface visible sous les pieds (trace Visibility : composant, Z) et distance 2D minimale à un autre personnage | ≈ 100 lignes, build, 5 min de jeu en street par l'utilisateur | H-SOL1 / H-SOL2, et critère des 10 cm de B-CHEV |
## 6. Options de correction (après mesure)
| Option | Si | Geste | Coût | Risque |
|---|---|---|---|---|
| S-F1 | H-SOL1 (écart Δ entre pavé et plan de marche) | `street___vin01.lpworld` : `fnt_ext001` abaissé de Δ (Z relatif − Δ × 100), ou `fnt_nav01` relevé de Δ (+ Δ × 100) ; ou par l'éditeur de lieu du jeu (« Edit building ») | 1 ligne de donnée | faible ; donnée du module de base (hors git ici, dépôt `Content/Modules`) ; un mod qui remplace la street n'en profite pas |
| S-F2 | H-SOL2 | `standIdle` : repli à +90 (demi-hauteur + 2) au lieu de +50, ou par C-O2 de STG-C1 (point du navmesh) ; `MoveAllToCenterRoom` : `Loc` initialisé | 1 broche (Person) ; 2-3 nœuds (Room, après CAM) | faible |
| S-F3 | les deux, tous lieux | garde C++ : après chaque arrivée, personnage debout hors meuble et hors scène recalé sur la surface visible sous ses pieds (trace Visibility) | ≈ 80 lignes + build | moyen (lits, chaises, scènes à exclure) ; couvre aussi les lieux des mods |
Recommandation de l'orchestrateur (décision à l'utilisateur) : **D1 puis M1**, puis S-F1 si H-SOL1 (le moins cher), S-F2
si H-SOL2 (à faire avec C-O2 de STG-C1). S-F3 seulement si plusieurs lieux sont touchés.
## 7. Questions pour l'utilisateur (par Big Boss)
- **Q-STG-3** : accord pour la mesure M1 (code de débogage C++, absent du Shipping) et la session de 5 min en street ?
- **Q-STG-4** : si S-F1, accord pour modifier la donnée de lieu du module de base `vin_Base` (street) ?
## 8. Fichiers à commiter
Voir `STG-C1-CART.md` § 7.