8.8 KiB
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\Devabsent ;git status -- Content Source Config= GI, Person, TopRight enM(STE-H10). - Éditeur headless (
lp-mcp§ 2) : PID 26368, journalSaved\Logs\CAM-B0_editeur_20261013-074758.log(hors git) ;Wait-HyperAIStudioMCP.ps1 -TimeoutSeconds 540code 0 ;unreal-mcpvisible 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_errorsvrai) ;save_assetsdes 2 sondes seules ;Stop-Process(accepté) ;UeState.ps1= 0 ; déplacement versD:\Game\LifePlay_Backup_5.5\CAM\B0\;Content\Devvide retiré (rmdir). - Écart : 2 appels
add_variableenvoyé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)
- B1-13, B2-6 : remplacer
K2_ClearTimerDelegate(UpdateRoomCam)par un handle : variableRoomCamTimer(TimerHandle) affectée par la sortie deK2Node_CallFunction_329(minuterie existante de Room), puisClearandInvalidateTimerbyHandle(RoomCamTimer). À vérifier en B1 : la sortieReturnValuedu nœud 329 existant. - Accès aux membres d'un autre BP (
GI.SexOn,GI.Room,GI.PlayerCharacter,GI.PC,GI.Wall,GI.BuilderOn,GI.SpaceOn,CamRoom.CameraComponent, appelsRoom_C::ApplyRoomCameradepuis PC / GI) : utiliser les type_idClasse|<Classe affichée>|Obtenir<Var>/Définir<Var>/<Fonction>(sans contexte), pas ceux rendus parfind_node_types(context_pins). Le nom affiché de la classe est localisé et sans tiret bas (CAMProbe,Acteurdecaméra) : le relire parfind_node_typesavec le filtre<Nom>|avant chaque sous-lot. - Comparateurs et opérations vectorielles : opérateurs génériques
Utilitaires|Opérateurs|…, typés par la 1re liaison ; relier l'entrée avantset_pin_value. - 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-bpen 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\.