LifePlay-Revival/Docs/Migration/etat/CAM/CAM-B1-IMPL.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

15 KiB
Raw Blame History

CAM-B1-IMPL : C1 hors sexe, commutation C, reclassement (Room, PC, GI) (2026-10-13)

Lot CAM, sous-lot B1 (CAM-SPEC.md § (a) CAM-B1, amendée B0a). BUILD-GO de Big Boss le 2026-10-13, réservation de Room, PC et GI jusqu'au commit de B1, sans tag (référence : commit f32df0d). Exécuté par la session CAM (local_cb58847a), appels MCP un à un depuis la session, mode auto ; 0 refus du mode auto. Journal brut des appels : CAM-B1-journal.txt.

1. Déroulé et contrôles d'entrée

Étape Résultat
Entrée HEAD f32df0d, git status -- Content Source Config vide, 0 éditeur ; GI 71034a04, Room e8f58b2a, PC 09f54974, Person d1b4c63d
Redump GI (lecture seule) CAM-B1-PRE_LPDumpFunction_20261013-083048.txt (EventGraph, 6 241 nœuds) et …-083157.txt (CallFunction, 1 563), code 0
Revérification des K2Node_* de la SPEC sur ce GI 18 nœuds conformes (B1-9 30/645, B1-10 3168/1039, B1-11 2699/3053, B4-5 SwitchString_22/242/177/176, B4-6 637/6127, B5-9 682, B5-10 370/269/270, B5-11 107/279)
Instantané Snapshot.ps1 -Lot CAM-B1 (chemins relatifs) : Backup_5.5\CAM-B1\, Room E8F58B2A…, PC 09F54974…, GI 71034A04…, Existed=True ×3
Éditeur headless PID 20732, journal Saved\Logs\CAM-B1_editeur_20261013-083347.log, MCP prêt (code 0)
Nœuds existants relus avant écriture Room 290, IfThenElse_63, 329 ; PC IfThenElse_23, 353 ; GI 30, 3168, 2699 : conformes à la SPEC

2. Écritures par sous-étape (nœuds créés)

# Résultat Détail
B1-1 fait, révisé CamC1On, CamC3On, C1Hidden (bool), RoomCamTimer (TimerHandle). WallWasHidden créée puis retirée (décision utilisateur, § 3)
B1-2 fait ApplyRoomCamera = CustomEvent_43 → IfThenElse_77 (CamC1On) → 78 (GI.SexOn) / 79 (CamC3On)
B1-3 fait, révisé 78.else → 430 Attach(FirstPersonSM, Mesh, head, KeepRelative ×3) → 431 SetRelativeTransform(MakeTransform (0,0,0)(90,90,0)(1,1,1)) → 433 Attach(None, KeepWorld ×3) → 434 SetViewTargetWithBlend(GI.PC, GI.PlayerCharacter, 0, Linear) → IfThenElse_80 (C1Hidden) faux → 436 HairSM.SetVisibility(faux) → 437 SceneSun caché → 438 GI.Wall caché → C1Hidden := vrai → 329 ; vrai → 329. Sans WallWasHidden := GI.Wall.bHidden (§ 3)
B1-4 fait, écart de forme deux voies provisoires séparées : C2 = RestoreC1 (94) → SetViewTargetWithBlend(GI.PC, ChargenCameras[0]) (240) ; C3 = 303 → 394, même cible. Room compte donc 3 SetViewTargetWithBlend après B1 (V5 en attendait 2 avec un repli commun) ; B2 et B3 remplaceront chacune la sienne
B1-5 fait CycleRoomCamera = CustomEvent_44 → 84 (CamC1On) → CamC1On := faux ; sinon 85 (CamC3On) → CamC3On := faux → CamC1On := vrai ; sinon CamC3On := vrai ; les trois → un seul appel ApplyRoomCamera (442)
B1-6 fait LoadRoom : 290.then → 86 (GI.BuilderOn) vrai → 63 ; faux → 87 (GI.SexOn) vrai → 63 ; faux → 88 (GI.SpaceOn) vrai → ApplyRoomCamera (443) → 63 ; faux → 63
B1-7 fait PC : IfThenElse_23.else → 131 (GI.SpaceOn) vrai → Room_C::CycleRoomCamera (134, cible GI.Room)
B1-8 fait PC : 353.then → Room_C::ApplyRoomCamera (140, cible GI.Room) → 194
B1-9 / 10 / 11 fait GI : 30 → ApplyRoomCamera (700) → 645 ; 3168 → 710 → 1039 ; 2699 → 713 → MacroInstance_3053 (cibles : 3 VariableGet Room 320, 780, 781)
B1-12 fait, révisé RestoreC1 = CustomEvent_42 → 76 (C1Hidden) vrai → HairSM visible (71) → SceneSun visible (80) → GI.Wall caché = NON(Room.bHidden) (88 ← 435 NOT ← 273) → C1Hidden := faux
B1-13 fait UpdateRoomCam = CustomEvent_45 ; 32.OutputDelegate → 329 coupé ; 45 → 329.Delegate ; Time 0,016 ; bMaxOncePerFrame vrai ; 329.then → Définir RoomCamTimer ← 329.ReturnValue ; corps : 81 (GI.SexOn) faux → 82 (CamC1On) vrai → 83 (GetViewTarget(GI.PC) == GI.PlayerCharacter) faux, ou 82 faux → RestoreC1 (440) → ClearandInvalidateTimerbyHandle(RoomCamTimer) (441)

Nouveaux identifiants relevés (à ajouter au § « Identifiants de nœuds » de la SPEC) : Classe|Personnage|ObtenirMesh, Classe|Person|ObtenirFirstPersonSM / ObtenirHairSM, Classe|GI|Obtenir<Var>, Classe|Room|ApplyRoomCamera / CycleRoomCamera, Appelerunefonction|RestoreC1 / ApplyRoomCamera (dans Room), Utilitaires|Matrice|Get(unecopie), Jeu|Joueur|SetViewTargetwithBlend, Transformation|AttachComponentToComponent, Transformation|SetRelativeTransform (+ declaring_class SceneComponent), Math|Transformation|MakeTransform, Rendu|SetVisibility (+ declaring_class SceneComponent), Rendu|SetActorHiddenInGame, Math|Booléen|NOTBoolean, Pion|GetViewTarget (Controller, virtuel ; refusé avec declaring_class PlayerController), Variables|Rendu|ObtenirActorHiddenInGame (self seulement).

3. Échec, décision et écarts

  • Échec MCP : lecture de bHidden d'un autre acteur (GI.Wall). Le type_id rendu avec context_pins (Variables|Rendu|ObtenirActorHiddenInGame) crée le getter de Room lui-même, sans broche self (connexion : « PinID index_id 0 out of range ») ; idem avec declaring_class Actor ; aucun Classe|Acteur|…. Nœuds 271 et 272 supprimés (créés par CAM). write_graph_dsl écarté (réécrit et compile un graphe entier).
  • Décision de l'utilisateur (Q20, question posée dans la session, 2026-10-13) : « Règle de PC (Recommandé) » : en sortie de C1, le mur reprend masqué = NON(Room.bHidden), comme PC le fait déjà après sa vue 1re personne (PC:194 ← 152 Not_PreBool(Room.bHidden)). WallWasHidden retirée (nœud 268 supprimé, remove_variable). SPEC à amender (B1-1, B1-3, B1-12, R18).
  • Écart de forme : voies provisoires C2 et C3 séparées (B1-4) → 3 SetViewTargetWithBlend dans Room (V5 : 2).
  • Écart de méthode : 2e envoi de deux appels MCP en parallèle (delete_node 271 + find_node_types), tous deux réussis, sans effet ; le 1er était en B0. Consigne « un appel à la fois » rappelée par Big Boss.

4. VAL

# Résultat
V3 get_node_infos : 329 (execute ← 53, 80 ; Delegate ← 45 ; Time 0.016 ; bMaxOncePerFrame vrai ; then / ReturnValue → 54), IfThenElse_80, 713, 134, 140, 131 : conformes ; chaque connect_pins contrôlé par type à la création
V4 compile_blueprint Room, PC, GI, normal puis warnings_as_errors : aucune exception ; journal : « Compiling Blueprint » seul, 0 erreur, 0 avertissement
save save_assets Room, PC, GI → true ; git status -- Content Source Config = Room, PC, GI en M ; Person d1b4c63d inchangé
arrêt Stop-Process 20732 ; UeState.ps1 : processus=0 éditeur=0 compilation=0 shaders=0 jeu=0
V5 4 dumps code 0 (CAM-B1-VAL_LPDumpFunction_20261013-085432 Room *, -085611 PC, -085727 GI EventGraph, -085856 GI CallFunction). Room EventGraph 1 010 → 1 076 nœuds (66 nouveaux) ; existants modifiés : 290, CustomEvent_32, 329, IfThenElse_63 seulement ; 0 disparu. PC 1 433 → 1 439 ; modifiés IfThenElse_23, 353, 194 seulement. GI 6 241 → 6 247 ; modifiés 30, 645, 3168, 1039, 2699 (+ MacroInstance_3053, broche sans nom) ; GI CallFunction : 0 nœud différent. Événements ApplyRoomCamera, CycleRoomCamera, RestoreC1, UpdateRoomCam : 4. K2_ClearTimerDelegate 0 ; K2_ClearAndInvalidateTimerHandle Room 1 → 2 ; RoomCamTimer 2 nœuds ; 329 : Delegate -> CustomEvent_45, Time = '0.016', bMaxOncePerFrame = 'true'. SetViewTargetWithBlend : Room 0 → 3 (écart § 3), PC 3 → 3, GI 4 → 4
V6 CAM-B1-VAL_CompileAllBlueprints_20261013-090055 : code 3, « Compiling Completed with 3 errors and 0 warnings and 0 blueprints that failed to load » = identique à la référence STE-H10V (ST\STE\STE-H10V_CompileAllBlueprints_20261013-072132, même ligne) ; 16 signatures d'erreur et 42 d'avertissement, 0 nouvelle, 0 disparue ; les 3 erreurs sont celles de l'asset moteur externe /Engine/CC_Shaders/Utilities/CR_FaceExpRig (E1 de STE-H10-VAL, hors projet). GI, PC, Room : « La compilation … a réussi »
V7 Build.ps1 -Lot CAM-B1 -Target LifePlay -Config Development -ExtraArgs "-NoUBA" : code 0, 4 s, 0 unité (aucun C++ changé ; CAM-B1_Build_20261013-090451). BuildDebug.ps1 -Config Development -ArchiveDir "D:\Game\LifePlay_Build_5.8_CAM-B1_Development" -SkipBuild : UAT code 0, 148 s (Saved\Logs\portage\BuildDebug_Development_20261013-090501.log) ; cuisson « Success - 0 error(s), 1 warning(s) » (avertissement connu : LegacyIterative sans ZenStore) ; 163 paquets cuits, 8 752 sautés ; Saved\Cooked\…\BPs\ Room, PC, GI (et Person) cuits à 09 h 06 ; CheckPackage PASS (4/4, code 0) ; exe D:\Game\LifePlay_Build_5.8_CAM-B1_Development\Windows\LifePlay.exe
V8 journaux du jeu D:\Game\LifePlay_Build_5.8_CAM-B1{,c,d}_Development\Windows\LifePlay\Saved\Logs\LifePlay.log : 0 ligne `ApplyRoomCamera
V10 essais de l'utilisateur : essai 1 B1 FAIL (vue dans la tête) → B1c ; essai B1c FAIL (une image de l'intérieur de la tête) → B1d ; essai B1d PASS (« c'est bon pour la vue à la première personne, masculin comme féminin », 2026-10-13). C2 / C3 : ancienne vue de pièce, attendu (B2, B3)

5. Traces (règle TRACE1 : Contexte / Résultat / Suite ; rien déplacé)

  • Saved\Logs\CAM-B1_editeur_20261013-083347.log — Contexte : éditeur headless de B1 (MCP). Résultat : 3 assets modifiés et enregistrés, compilations sans message. Suite : archivage par TRACE1.
  • Saved\Logs\portage\CAM-B1-PRE_LPDumpFunction_20261013-083048.log, …-083157.log (résumés etat\CAM\) — Contexte : redump de GI avant B1. Résultat : nœuds de la SPEC conformes. Suite : base de comparaison de V5.
  • Saved\Logs\portage\CAM-B1-VAL_LPDumpFunction_20261013-085432/085611/085727/085856.log (résumés etat\CAM\) — Contexte : V5. Résultat : § 4. Suite : base de B2.
  • Saved\Logs\portage\CAM-B1-VAL_CompileAllBlueprints_20261013-090055.log (résumé etat\CAM\) — Contexte : V6. Résultat : identique à STE-H10V (3 erreurs externes CR_FaceExpRig). Suite : E1 reste à traiter hors CAM.
  • Saved\Logs\portage\CAM-B1_Build_20261013-090451.log, BuildDebug_Development_20261013-090501.log — Contexte : V7. Résultat : build et archive code 0, CheckPackage PASS. Suite : essais en jeu de l'utilisateur (V8, V10).

Après B1 : Room 2a0c6111…, PC a19510e6…, GI 6a957cb2… (MD5 de départ de B2 / B4 / B5 après commit) ; Person d1b4c63d… inchangé. SPEC amendée B1b (CAM-SPEC.md, copie d'avant Backup_5.5\CAM\SPEC-avant-B1b.md).

6. Correction B1c (essai 1 de l'utilisateur, 2026-10-13)

  • Constat de l'utilisateur (capture) : en C1, la vue est dans la tête (intérieur de la bouche, dents, langue).
  • Cause (dump PC, lecture seule) : la vue 1re personne d'origine de PC masque la tête par Mesh.HideBoneByName('neckLower', PBO_None) (PC:2319-2324, nœud 1493) et la rétablit par UnHideBoneByName (PC:2328-2340) ; nœud omis par la cartographie CAM-T2, donc absent de la SPEC B1-3.
  • Correction (BUILD-GO Big Boss, Room seul, instantané Backup_5.5\CAM-B1c\, Room 2A0C6111 → 99C2455D) : 436 → (N) 444 HideBoneByName(PlayerCharacter.Mesh, 'neckLower', PBO_None) → 437 ; RestoreC1 : 71 → (N) 445 UnHideBoneByName(Mesh, 'neckLower') → 80. Compilation stricte sans message. PC A19510E6 et GI 6A957CB2 inchangés. SPEC amendée B1c (a40ce095, copie d'avant Backup_5.5\CAM\SPEC-avant-B1c.md).
  • Remarque de l'utilisateur « pas de vue plafonnier » : attendu en B1 (C3 provisoire = ancienne vue de pièce ; la caméra au plafond arrive en B3).
  • VAL de B1c : V5 CAM-B1c-VAL_LPDumpFunction_20261013-092122 code 0, Room EventGraph 1 076 → 1 078 nœuds, 444 (436 → 444 → 437, Mesh, 'neckLower') et 445 (71 → 445 → 80) conformes ; V6 CAM-B1c-VAL_CompileAllBlueprints_20261013-092252 code 3 = référence STE-H10V (3 erreurs externes CR_FaceExpRig, 0 signature nouvelle) ; V7 CAM-B1c_Build_20261013-092711 code 0 (0 unité), UAT code 0 (BuildDebug_Development_20261013-092713.log), cuisson « 0 error(s), 1 warning(s) », Room recuit à 09 h 28, CheckPackage PASS 4/4 ; build D:\Game\LifePlay_Build_5.8_CAM-B1c_Development\Windows\LifePlay.exe. Traces (TRACE1) : journaux ci-dessus et Saved\Logs\CAM-B1c_editeur_20261013-091756.log — Contexte : B1c ; Résultat : correction appliquée et construite ; Suite : nouvel essai 1 par l'utilisateur.

7. Correction B1d (2e essai de l'utilisateur, 2026-10-13)

  • Retour : « on peut voir l'intérieur de la tête pendant un frame » ; « déplacer la vue au niveau des yeux ? ».
  • Cause de la rémanence : la vue basculait (434) avant HideBoneByName ; le masquage ne s'applique qu'à la mise à jour suivante du squelette.
  • Correction (BUILD-GO, Room seul, instantané Backup_5.5\CAM-B1d\, Room 99C2455D → 50E736F8) : voie C1 réordonnée (placement de la caméra, masquages, C1Hidden := vrai, DelayUntilNextFrame, puis SetViewTargetWithBlend) ; caméra placée au milieu des yeux : SetWorldLocation(FirstPersonSM, 0,5 × (GetSocketLocation(Mesh,'lEye') + GetSocketLocation(Mesh,'rEye'))), calculé avant le masquage (un os masqué sort des os requis et ne bouge plus, ENG SkeletalMeshComponent.cpp:2300-2330) ; sortie inversée dans les voies provisoires C2 / C3 (vue d'abord, RestoreC1 ensuite). Compilation stricte sans message ; PC, GI, Person inchangés. SPEC amendée B1d (ecefee2f).
  • Squelettes féminins (demande de Big Boss) : get_bone_children(head) identique sur Michael (/Game/Heavy/Daz/Michael/michael) et Bridget (/Game/Heavy/Daz/Bridget/bridget_gp) : lEye, rEye sous head ; neckLower présent chez les deux. Le placement étant calculé à l'exécution sur les os réels, l'écart homme / femme est pris en compte sans constante. Essai avec un personnage féminin ajouté à la liste.
  • Effet résiduel attendu : pendant l'image d'attente, la vue reste celle de la pièce avec la tête déjà masquée (une image « sans tête » vue de loin), au lieu d'une image vue de l'intérieur de la tête.
  • VAL de B1d : V5 CAM-B1d-VAL_LPDumpFunction_20261013-094414 code 0, Room EventGraph 1 078 → 1 084 nœuds, 446 K2_SetWorldLocation (431 → 446 → 433, FirstPersonSM, ← PromotableOperator_2) et 449 DelayUntilNextFrame (VariableSet_53 → 449 → 434) conformes ; V6 CAM-B1d-VAL_CompileAllBlueprints_20261013-094523 code 3 = référence STE-H10V (0 signature nouvelle) ; V7 CAM-B1d_Build_20261013-094934 code 0, UAT code 0 (BuildDebug_Development_20261013-094941.log), cuisson « 0 error(s), 1 warning(s) », Room recuit à 09 h 51, CheckPackage PASS 4/4 ; build D:\Game\LifePlay_Build_5.8_CAM-B1d_Development\Windows\LifePlay.exe. Traces (TRACE1) : ces journaux et Saved\Logs\CAM-B1d_editeur_20261013-093759.log — Contexte : B1d ; Résultat : correction construite ; Suite : essai de l'utilisateur (homme et femme).