LifePlay-Revival/Docs/Migration/etat/ST/STG/STG-COMMUN3-ANALYSE.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

9 KiB
Raw Blame History

Fiche STG-C3a — Niveau N3 — Modèle prévu claude-opus-5-5 | utilisé claude-opus-5-5

Analyse STG de l'essai COMMUN-3 (demande de Big Boss, 2026-10-13 : KO 1 à 5), DIAG en lecture seule. Bilan de l'essai : etat/BOSS/COMMUN-3-BILAN.md. Lot STG, registre STG-TACHES.md. Heures du journal en UTC (locale = UTC + 2).

Repère Fichier (D:\Game\LifePlay_Backup_5.5\COMMUN-3\essais\) MD5
S1 LifePlay_commun3_session1_definitif_BOSS.log (41 986 lignes) 27e654cc…
S2 LifePlay_commun3_session2_ferme_BOSS.log (17 624 lignes) 61e37cf3…

Écart de méthode à signaler. Ton message précédent demandait un DIAG en lecture seule pour les points 2 et 3. J'ai en plus écrit le correctif C++ (KO3b) dans LPDirectControlSubsystem, sans compiler et sous instantané (Backup_5.5\STG-KO3b). Il est détaillé dans STG-KO3b-DIAG.md (.cpp 827f19c0, .h 3cdb4985) et sa VAL statique est PASS-STATIC (STG-KO3b-VAL.md). Ce n'est pas encore accepté : à toi de le garder pour COMMUN-4 ou de demander le retour aux fichiers de COMMUN-3 (.cpp 64766f64, .h 7b8fed0e), restaurés depuis l'instantané.

1. Passants enfoncés le long de la rambarde (D1, exception) — position établie, cause estimée

Relevés M1 (personnages visibles dont les pieds sont sous -125, en street) :

Session Acteur Relevés Premier x z pieds plancher trouvé
S1 …980 4 18:25:21 -3131401,4 -80,3 -165,5 _223 à -105,1
S1 …908 4 18:26:46 -3131401,4 -89,9 -170,3 _0 à -105,1
S1 …956 2 18:26:46 -3131677,3 -48,0 -138,0 _0 à -105,1
S2 …932 11 18:56:59 -3131401,4 -87,1 -177,1 _0 à -105,1
S2 …908 11 18:56:59 -3131401,4 -82,7 -172,7 _0 à -105,1
S2 …980 5 18:56:59 -3131677,5 -59,8 -149,8 _0 à -105,1

Lecture :

  • Tous ces passants sont sur deux abscisses fixes de la street : centre de Room (-3131543) + 141,6 et − 134,5 cm. Ce sont les bords de la zone de marche, côté rambarde. Au milieu de la rue, tout le monde a les pieds au pavé (D1 OK).
  • Ils y arrivent par standIdle (« test270522 found a spot within distance », S2 18:56:55 pour …980), c'est-à-dire posés sans balayage (moveTo → SetActorLocation) sur un point du navmesh. Bas de capsule de -138 à -178 : 24 à 64 cm sous le dessus de la Box (-114,4) et sous le plan de marche fnt_nav01 (-105,1), d'où « jusqu'aux hanches ».
  • Ils restent immobiles à cette hauteur jusqu'à leur destruction (MOVE_Walking, plancher trouvé au-dessus d'eux).
  • Ce n'est pas le piège fnt_ext : S-F4b est actif (« 1 decor(s) fnt_ext en Pawn Ignore » à chaque entrée). Le décor est le même (street___vin01.lpworld n'a que deux objets : fnt_ext001 et fnt_nav01), mais le défaut est la hauteur du point posé.
  • Cause estimée : au bord de la rue, le navmesh suit la géométrie basse du décor (caniveau, pied de rambarde de fnt_ext001), et non le pavé. Le personnage y est posé, puis reste coincé sous le plan de marche. C'est la piste S-F2 de STG-SF4b-DIAG.md § 4.

Correctif proposé pour COMMUN-4 : S-F5 (C++, LPOutdoorRoomSubsystem, sans asset).

  • En extérieur, toutes les 0,5 s (même minuterie que S-F4b), pour chaque Person visible, sans meuble (OccupyingFnt vide) et dont la capsule n'est pas en NoCollision : si le bas de la capsule est plus de 15 cm sous le dessus de la Box, relever l'acteur à « dessus de la Box + demi-hauteur + 2 cm », même x et y, avec une ligne au journal.
  • Environ 30 lignes. Risque : un passant relevé à l'aplomb de la rambarde reste au bord de la rue, mais visible en entier.
  • Alternative en Blueprint (filtrer les points trop bas dans getStandSpots ou standIdle) : touche Room ou Person. Plus lourd, et non recommandé avant l'alpha.

2. Joueur piégé dans une étagère (D6) — voir STG-KO3b-DIAG.md § 3

Établi : l'action fnt_new038-f-0-look pose le joueur dans le volume de collision de l'étagère _56 (floorHit 0, trace arrêtée sur _56 au-dessus de la tête). 3b libère la place, mais la capsule reste dans le volume : accel 2048, speed 0 pendant 70 s, jusqu'à ce que le jeu replace le joueur (18:59:59).

Correctif (piste (b)) : Pawn en Ignore sur ce meuble jusqu'à la sortie du volume. Il est écrit (voir l'écart en tête).

3. Boucle de 469 « le joueur quitte » (S1, 18:27) — voir STG-KO3b-DIAG.md § 2

Établi : 461 lignes de 18:27:01 à 18:27:11, jusqu'à une par image, sur _1, juste après un changement de pièce (18:26:59) (recompte de la VAL). La référence OccupyingFnt désigne un composant de la pièce quittée : unOccupyFnt (Blueprint) le voit comme non valide et ne le vide pas, alors que le C++ le voit comme non nul (cas H-D5).

Correctif : vider la référence invalide directement, plus une garde après l'appel. Écrit dans KO3b.

4. PNJ …1884 debout dans un fauteuil (community_centre) — estimé, hors STG probable

  • S2, 18:55:24 : « Laura plays socialize (test2805) », puis fnt_chair14-f-0-sit (deux fois), puis « play fnt » et « _17 Occupied by Laura ». Relevés suivants : occupyingFnt _17, currentAnimation = fnt_chair14-f-0-sit, meshZ -90, pieds à -102,1 (au sol), anim bp:Daily_F_C.
  • Dans S1 et S2, l'activité socialize donne 12 fois sur 12 une place fnt_chair14-*-0-sit (10 f, 4 m d'après les lignes qui la suivent). La place est attribuée par le chemin normal (getFntAnim → PlayFntAnim).
  • Ce n'est pas une place partagée (K8) : à 18:49:53, trois personnes sont sur chair14, chacune sur un composant différent (_14, _17, _18).
  • M1 ne lit pas la pose jouée par l'Anim BP, et les pieds d'une personne assise sont aussi au sol : le relevé ne peut pas trancher entre « pose assise non jouée » et « animation de l'activité (debout) jouée sur la place ».
  • Aucun correctif STG ne touche la pose : B1 et G-B1a portent sur moveToPersonStand, K8-a seulement sur la valeur écrite dans OccupiedFnts.
  • Proposition : CART d'animation (PlayFntAnim, animation fnt_chair14-f-0-sit présente ou non en 5.8, activité socialize), puis la question « le défaut existe-t-il dans le build 5.5 DC4 ? ». Hors alpha, sauf décision de l'utilisateur.

5. Tri des CLOSE (S1 : 43 ; S2 : 32)

Session Paire Relevés Contexte Classement
S1 joueur / …1884 20 + 3 (gap -40) NoCollision des deux, sexOn = 1, MF_kol07, MF_sp01 (pregnant_trap) exception Q-STG-5
S2 joueur / …1884 18 + 4 + 6 + 2 (gap -40) idem, SF_ft07, FF_dildo02, FF_gf04, SF_ft02 exception Q-STG-5
S1 …980 / …908 3 + 11 (gap -0,3) extérieur (échelle Z 0,4), fnt_new084-m-0-use / fnt_new085-f-0-use : deux meubles voisins (_226, _225) places de deux meubles distincts, posées par les données du lieu ; hors règle B-CHEV (ni repos libre, ni marche)
S1 joueur / …932 4 (gap -29,1) fnt_new198-m-1-buy / m-0-buy : deux places d'un même comptoir. L'occupyingFnt du joueur est déjà vidé (-), d'où l'absence de filtrage places d'un même meuble : pas un chevauchement au sens du filtre CLOSE
S1 joueur / …1884 1 (gap 0,8) deux fauteuils voisins (new216, new236) données du lieu
S1 …980 / …956 1 (gap -4,4) street, work_hourly, debout sans meuble vrai chevauchement résiduel (1 relevé sur 502)
S2 joueur / …932 1 (gap 0,5) joueur assis (new037 place 1), …932 debout à côté ponctuel (< 10 cm, sans recouvrement)
S2 joueur / …980 1 (gap -9,8) new013-f-0-buy / new055-f-0-sit : deux meubles voisins données du lieu

Bilan : hors exception, un seul vrai chevauchement de personnages debout (S1, 18:42:28, 1 relevé). Les autres cas viennent de places de meubles voisins, posées par les données des lieux.

  • À corriger dans l'outil M1 : un personnage qui joue encore l'animation d'un meuble (currentAnimation en fnt_…) mais dont occupyingFnt vient d'être vidé (3b) doit être filtré comme s'il occupait toujours ce meuble.
  • Hors alpha : places de meubles voisins trop proches (donnée des .lpworld).

6. Synthèse et propositions pour COMMUN-4

KO État Proposition
1 rambarde position établie, cause estimée S-F5 (C++, LPOutdoorRoomSubsystem) : relever les passants posés sous le pavé ; essai : bords de la street
2 étagère établi KO3b (écrit, VAL PASS-STATIC)
3 boucle établi KO3b (même correctif)
4 fauteuil estimé CART d'animation et comparaison avec DC4 5.5 ; hors alpha sauf décision
5 CLOSE établi rien à corriger dans le jeu ; outil M1 : filtre par currentAnimation (optionnel)
C1 (CAM § 7, partie Walk) proposé par CAM à écrire dans LPDirectControlSubsystem::Walk à ton GO, dans le même build que la partie Room de CAM

7. Fichiers à commiter

Docs/Migration/etat/ST/STG/STG-COMMUN3-ANALYSE.md.