LifePlay-Revival/Docs/Migration/etat/ST/STG/STG-C2-CART.md
edujiro5972 8084622450 LifePlay UE 5.8 : état de développement au 2026-10-19
Tickets : REP1-T4

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 22:57:42 +02:00

8.4 KiB
Raw Blame 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.