6.4 KiB
Fiche STG-SPEC — Niveau N3 — Modèle prévu claude-opus-5-5 | utilisé claude-opus-5-5
SPEC du lot STG (B-CHEV, B-SOL), d'après STG-C1-CART.md et STG-C2-CART.md, et les décisions de l'utilisateur du
2026-10-13 (« 1 les deux. 2 Blueprint. 3 oui 4 oui », registre STG-TACHES.md). Copie D:\Game\LifePlay-master 5.8,
branche ue5.8, HEAD de départ 0745917. Instantané : D:\Game\LifePlay_Backup_5.5\STG\ (manifeste ; LPDebugSubsystem
.cpp 22912735…, .h 1DE29C12…).
0. Ordre et jetons
| Rang | Fiche | Nature | Copie UE | Dépend de |
|---|---|---|---|---|
| 1 | STG-D1 | LPCheckMeshes fnt_* (lecture) |
UE-DEMANDE envoyée | — |
| 2 | STG-M1 | build de la mesure M1 (code écrit, § 1), puis 5 min de jeu en street par l'utilisateur avec -LPPersonsLog=5 |
BUILD-DEMANDE | — |
| 3 | STG-B1 | correctifs B-CHEV sur Person (§ 2 : C-O2, C-O4b, C-O7) par MCP (lp-mcp-bp) |
UE-DEMANDE | M1 relevé « avant » |
| 4 | STG-B2 | correctifs B-CHEV sur Room (§ 2 : C-O1, C-O3, C-O8 si mesuré) | UE-DEMANDE | commit de CAM sur Room |
| 5 | STG-S1 | correctif B-SOL (§ 3), selon D1 + M1 | selon option | D1, M1 |
| 6 | STG-V | build, M1 « après » en street + 2 intérieurs, essai utilisateur | BUILD-DEMANDE | B1, B2, S1 |
Note (Big Boss, 2026-10-13) : le build M1 embarque Content/BPs/Room.uasset de CAM-B2, non commité, tel qu'il est sur
le disque (B2 ne touche que la caméra) ; à citer dans la BUILD-FIN et la VAL.
1. Mesure M1 (écrite, à compiler)
Source/LifePlay/LPDebugSubsystem.cpp (+154 lignes, sous #if !UE_BUILD_SHIPPING), .h (commentaire) :
- commande console
LifePlay.PersonsDump→ journalLogLifePlay+Saved/Profiling/LPDebug/PersonsDump_*.txt; - interrupteur
-LPPersonsLog[=s]→ même relevé au journal toutes les s secondes (5 par défaut), sans console. - Par personnage (
Person_C*, joueur compris) : position, bas de capsule, pieds (origine du maillage), mode de mouvement, plancher trouvé (composant, Z), surface visible sous lui (trace Visibility, personnages ignorés : composant, Z) etdelta= surface visible − pieds (positif = enfoncé) ;Room: position et échelle. - Paires de personnages visibles dont l'écart entre capsules (distance 2D − rayons) < 10 cm : lignes
CLOSE, plusPersons=… Close=… MinGap=…. Critères : compile sans avertissement nouveau ; en street,deltades personnages debout → tranche H-SOL1 (tous ≈ même delta) / H-SOL2 (quelques-uns à ≈ 40, au même XY) ;Closedonne l'état « avant » de B-CHEV.
2. B-CHEV (voie Blueprint, Q-STG-2)
Seuil retenu : écart entre capsules ≥ 30 cm au repos (centres ≥ 70 cm), pour garder ≥ 10 cm entre les corps (épaules et bras plus larges que la capsule de 20 cm) ; vérifié par M1 et à l'œil.
| Id | Asset, fonction | Geste | Nœuds |
|---|---|---|---|
| C-O1 | Room getStandSpots |
GI.removeTooClose : Distance 40 → 70 |
1 broche |
| C-O3 | Room getStandSpots |
rayon de tirage : MinOfFloatArray → MaxOfFloatArray (toute la longueur des pièces étroites, street) ; tirages × 30 → × 60 |
1 nœud remplacé + 1 broche |
| C-O8 | Room getStandSpots |
(si M1 montre des CLOSE juste après un chargement de lieu) emplacements à moins de 70 cm d'un personnage visible déjà présent : inscrits occupés par lui |
≈ 12 |
| C-O2 | Person standIdle |
repli sans emplacement libre : au lieu du centre de Room + 50, jusqu'à 10 tirages GetRandomLocationInNavigableRadius (origine NearVec ou centre, rayon 300) ; premier point à ≥ 70 cm (2D) de tout personnage visible (GI.DummyPersonsInUse + GI.PlayerCharacter, hors soi) → ajouté à Standspots et inscrit dans Standspots_Occupied ; sinon position courante. Supprime aussi le +50 (H-SOL2) |
≈ 25-30 |
| C-O4b | Person EventGraph moveToPersonStand |
point calculé (K2Node_CallFunction_658) à moins de 70 cm d'un tiers visible → branche standIdle(Near = P, Distance = d) existante (comme d = 250) |
≈ 12 |
| C-O7 | Person CDO CharMoveComp |
marche (Q-STG-1 « les deux ») : bUseRVOAvoidance = True, AvoidanceWeight = 0.5 ; la capsule reste Pawn = Ignore (C-O6 écarté) |
2 propriétés |
Exception confirmée par l'utilisateur (Q-STG-5, réponse « ouii » rapportée par Big Boss le 2026-10-13) : scènes de
contact (sexe, câlin, couple sur un même meuble, SexPersons en NoCollision par GI.toggleGravity) hors règle.
B1 (GO de Big Boss, 2026-10-13) : C-O4b et C-O7 seulement ; C-O2 reporté après la session street (le Z du point de
repli dépend de la surface porteuse mesurée par M1) ; pas de build après B1.
Identifiants de nœuds : ceux des dumps AP5 / STA / STE-D4 ; relire par MCP (lecture, lp-mcp) au début de B1 et B2
(Person a changé depuis STA : CHG-284 ; Room change avec CAM).
3. B-SOL (selon D1 et M1 ; Q-STG-3, Q-STG-4 accordées)
| Id | Si | Geste |
|---|---|---|
| S-F1 | H-SOL1 : écart Δ entre la surface visible de street et la surface de marche, identique pour tous | Content/Modules/vin_Base/World/street___vin01.lpworld : ligne 22 (fnt_ext001) Z relatif − Δ × 100, ou ligne 27 (fnt_nav01) + Δ × 100 selon la surface qui porte (M1 floorComp) ; fichier hors git dans la copie 5.8 → instantané, puis dépôt par lp-paths |
| S-F2 | H-SOL2 | couvert par C-O2 ; en plus, Room MoveAllToCenterRoom : Loc initialisé au centre de StaticMeshComponent + 90 en Z |
| S-F3 | plusieurs lieux touchés | garde C++ de recalage (non retenue sans mesure) |
4. VAL (agent distinct de l'IMPL)
- Diffs relus (C++ :
git diff; Blueprint : dumps avant / après, nombre de nœuds par fonction). - Compilation 0 erreur, 0 avertissement nouveau ;
CompileAllBlueprints0 erreur/Game/; LPTestStringCompat 3120 / 0 / 60. - Build Development,
-LPPersonsLog=5, parcours de l'utilisateur : street (≥ 2 min, foule), 2 intérieurs, une scènemoveToPersonStand; journal :Close=0hors scènes de contact au repos ; en street,deltades personnages debout ≤ 5 cm ; aucun nouvelAccessed Noneni avertissementStandspots. - Contrôle visuel de l'utilisateur (captures) : pas de pieds sous le pavé, pas de corps qui se touchent.
5. Fichiers à commiter (prévus)
Source/LifePlay/LPDebugSubsystem.cpp, .h ; Content/BPs/Person.uasset ; Content/BPs/Room.uasset (après CAM) ;
livrables etat/ST/STG/ ; street___vin01.lpworld par son dépôt si S-F1. Un commit par sous-lot (M1, B1, B2, S1).