LifePlay-Revival/Docs/Migration/etat/CAM/CAM-B0-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

8.8 KiB
Raw Blame History

CAM-B0-IMPL : sonde MCP des capacités de la phase 2 (2026-10-13)

Lot CAM, sous-lot B0 (CAM-SPEC.md § (a) CAM-B0, Q16). BUILD-GO de Big Boss le 2026-10-13. Exécuté par la session CAM (local_cb58847a), appels MCP un à un depuis la session, sans sous-agent lp-mcp-bp. Aucun fichier suivi écrit. Mode de permission : auto ; 0 refus du mode auto sur ≈ 75 appels MCP (création, écriture, compilation, enregistrement).

1. Déroulé

  • Avant : 0 processus UE, port 8000 libre, Content\Dev absent ; git status -- Content Source Config = GI, Person, TopRight en M (STE-H10).
  • Éditeur headless (lp-mcp § 2) : PID 26368, journal Saved\Logs\CAM-B0_editeur_20261013-074758.log (hors git) ; Wait-HyperAIStudioMCP.ps1 -TimeoutSeconds 540 code 0 ; unreal-mcp visible dans la session sans reconnexion (get_current_level = /Game/Scenes/CentralLondon).
  • Création de /Game/Dev/CAM_Probe (Actor) et /Game/Dev/CAM_Probe2 (Actor) ; essais ; compile_blueprint (warnings_as_errors vrai) ; save_assets des 2 sondes seules ; Stop-Process (accepté) ; UeState.ps1 = 0 ; déplacement vers D:\Game\LifePlay_Backup_5.5\CAM\B0\ ; Content\Dev vide retiré (rmdir).
  • Écart : 2 appels add_variable envoyés en parallèle (contre « un appel à la fois ») ; tous deux réussis, sans effet.
  • Journal brut des appels : CAM-B0-journal.txt (début de séance).

2. Résultats par capacité (R1 / R2 de la SPEC)

# Capacité Résultat Détail (type_id exact, éditeur en français)
1 BlueprintTools.create d'un Actor fait asset_type = /Script/Engine.Actor
2 add_variable bool, Vector fait ProbeBool, ProbeVec
3 add_object_variable CameraActor fait CamRoom (/Script/Engine.CameraActor)
4 add_struct_variable TimerHandle fait ProbeTimer (/Script/Engine.TimerHandle) — nécessaire au point 8
5 add_event personnalisé fait ProbeEvent → K2Node_CustomEvent_0 (broches OutputDelegate 0, then 1)
6 surcharge ReceiveEndPlay / ReceiveBeginPlay fait add_event rend un K2Node_Event (« Ajouterunévénement|ÉvénementEndPlay ») ; BeginPlay rend le nœud fantôme existant
7 SpawnActorFromClass + Class = CameraActor fait Jeu|Faireapparaîtreunacteuràpartird'uneclasse ; après set_pin_value, ReturnValue typé « Acteur De Caméra », broche Instigator ajoutée (index 6)
8 minuterie par événement K2_SetTimerDelegate fait Utilitaires|Temps|SetTimerbyEvent ; OutputDelegate → Delegate (1) ; Time (2) = 0,016, bLooping (3) vrai, bMaxOncePerFrame (4) vrai ; sortie ReturnValue (1) = TimerHandle
9 K2_ClearTimerDelegate ÉCHEC absent de find_node_types (« ClearTimer » → seul ClearTimerbyFunctionName) ; create_node « Utilitaires|Temps|ClearTimerbyEvent » → « The node could not be created / Utilitaires|Temps|ClearTimerbyEvent does not exist »
9b remplacement : arrêt par handle fait SetTimerbyEvent.ReturnValue → Définir ProbeTimer ; Obtenir ProbeTimer → Utilitaires|Temps|ClearandInvalidateTimerbyHandle.Handle (1) ; EndPlay → Clear
10 SphereTraceSingle, canal Camera fait Collision|SphereTraceByChannel ; TraceChannel (4) = TraceTypeQuery2 (relu par get_pin_value), Radius (3) = 12 ; sorties OutHit (1), ReturnValue (2)
11 BreakHitResult fait Collision|BreakHitResult, entrée 0 ← OutHit
12 VInterpTo, RInterpTo fait Math|Interpolation|VInterpTo / RInterpTo ; entrées Current 0, Target 1, DeltaTime 2 (float), InterpSpeed 3 (= 8)
13 GetWorldDeltaSeconds fait Utilitaires|Temps|GetWorldDeltaSeconds, sortie double reliée à DeltaTime float (conversion acceptée)
14 FindLookAtRotation fait Math|Rotateur|FindLookatRotation → RInterpTo.Target
15 GetComponentBounds, GetActorBounds fait Collision|GetComponentBounds, Collision|GetActorBounds (créés, non câblés)
16 GetSocketLocation fait Transformation|GetSocketLocation (créé, non câblé)
17 GetScaledCapsuleHalfHeight fait Composants|Capsule|GetScaledCapsuleHalfHeight
18 Less_DoubleDouble fait opérateur générique Utilitaires|Opérateurs|Inférieurà(<) (K2Node_PromotableOperator) ; devient float<float (double) dès qu'une entrée float est reliée ; B = 0,05
19 EqualEqual_ObjectObject fait Utilitaires|Opérateurs|Égalà(==) ; devient Equal(Object) quand CamRoom est relié
20 addition, soustraction, multiplication de vecteurs fait Utilitaires|Opérateurs|Ajouter / Soustraire / Multiplier → vector+vector, vector-vector ; Multiplier accepte B double (vecteur × scalaire) ; chaîne reliée à Définir ProbeVec (exécutée)
21 affectation de PostProcessSettings d'un CameraComponent fait Classe|CameraComponent|DéfinirPostProcessSettings (K2Node_VariableSet, self 2, valeur 1) ← Classe|CameraComponent|ObtenirPostProcessSettings
22 CamRoom.CameraComponent fait, par la catégorie Classe Variables|Acteurdelacaméra|ObtenirCameraComponent (listé seulement avec context_pins) → « does not exist », même avec declaring_class ; Classe|Acteurdecaméra|ObtenirCameraComponent crée le getter (autre voie : Acteur|GetComponentbyClass + ComponentClass = CameraComponent, sortie typée)
23 2e BP : VariableGet d'une variable du 1er fait, par la catégorie Classe Variables|Pardéfaut|ObtenirProbeBool (rendu par find_node_types(context_pins)) → « does not exist », même avec declaring_class ; Classe|CAMProbe|ObtenirProbeBool crée le getter (self 0 ← variable Probe)
24 2e BP : appel de ProbeEvent fait Classe|CAMProbe|ProbeEvent (self 1) ; BeginPlay → Branche(ProbeBool) vrai → appel
25 compile_blueprint fait CAM_Probe ×3, CAM_Probe2 ×1, warnings_as_errors vrai : aucune exception ; journal : « Compiling Blueprint » sans erreur ni avertissement Blueprint
26 save_assets (2 sondes seules) fait true

Réserve : les nœuds purs non reliés à une exécution (bornes, socket, capsule, <, ==, FindLookAtRotation, VInterpTo, RInterpTo, BreakHitResult) sont créés avec leurs broches typées, mais un nœud pur non relié est écarté par le compilateur : leur compilation n'est donc pas prouvée par B0 (seule la chaîne ProbeEvent → PostProcess → SphereTrace → ProbeVec := ((v + v) − v) × DeltaSeconds l'est).

3. Conséquences pour la SPEC (à reporter avant B1)

  1. B1-13, B2-6 : remplacer K2_ClearTimerDelegate(UpdateRoomCam) par un handle : variable RoomCamTimer (TimerHandle) affectée par la sortie de K2Node_CallFunction_329 (minuterie existante de Room), puis ClearandInvalidateTimerbyHandle(RoomCamTimer). À vérifier en B1 : la sortie ReturnValue du nœud 329 existant.
  2. Accès aux membres d'un autre BP (GI.SexOn, GI.Room, GI.PlayerCharacter, GI.PC, GI.Wall, GI.BuilderOn, GI.SpaceOn, CamRoom.CameraComponent, appels Room_C::ApplyRoomCamera depuis PC / GI) : utiliser les type_id Classe|<Classe affichée>|Obtenir<Var> / Définir<Var> / <Fonction> (sans contexte), pas ceux rendus par find_node_types(context_pins). Le nom affiché de la classe est localisé et sans tiret bas (CAMProbe, Acteurdecaméra) : le relire par find_node_types avec le filtre <Nom>| avant chaque sous-lot.
  3. Comparateurs et opérations vectorielles : opérateurs génériques Utilitaires|Opérateurs|…, typés par la 1re liaison ; relier l'entrée avant set_pin_value.
  4. Le mode auto n'a refusé aucun appel MCP d'écriture fait par la session elle-même (les 4 refus de STE visaient lp-mcp-bp en sous-agent ou un relais entre sessions) : même voie recommandée pour B1-B5.

4. Contrôles de fin (BUILD-FIN)

Contrôle Résultat
MD5 GI / Person / TopRight / Room / PC 71034A04… / D1B4C63D… / 1FCB94A6… / E8F58B2A… / 09F54974… : inchangés
Sondes, avant → après déplacement CAM_Probe.uasset CAAF5D9E48616DBC3281BB703DDA1DB0 → identique ; CAM_Probe2.uasset A5F598B2C3F76DECE8623A5783D9B382 → identique ; sous D:\Game\LifePlay_Backup_5.5\CAM\B0\
Content\Dev absent (2 fichiers déplacés, dossier vide retiré)
git status --short -- Content Source Config GI, Person, TopRight en M (STE-H10) : identique à l'avant
Processus UeState.ps1 : processus=0 éditeur=0 compilation=0 shaders=0 jeu=0
Autosaves Saved\Autosaves\Game\BPs = Room_Auto2, TestStatic_Auto1 (anciens), aucun de la sonde

Fichiers écrits : etat\CAM\CAM-B0-IMPL.md, etat\CAM\CAM-B0-journal.txt, etat\CAM\CAM-TACHES.md (ligne B0). Hors git : journal de l'éditeur sous Saved\Logs\, sondes sous Backup_5.5\CAM\B0\.