7.1 KiB
STE-H10-IMPL : écritures MCP (étape (a)) — partielle, 2026-10-11 / 12
Orchestrateur LOT STE ; BUILD-GO (a) de Big Boss (11/10, confirmé le 12/10 par la nouvelle session Big Boss [9f1d99]) ; SPEC
STE-H10-SPEC.md § « Complément d'IMPL » (C.2 à C.6) ; décisions de l'utilisateur : A1, B1-a, B2-a, B3-a, B4-a ; commit et repli
par asset (Q-H10-14).
État : TopRight et Person écrits et enregistrés ; GI non écrit (reprise par la session suivante).
0. Entrée et instantanés
- HEAD a7350fc au GO ; 0 processus ;
git status -- Content Source Configvide. Snapshot.ps1 -Lot STE-H10:D:\Game\LifePlay_Backup_5.5\STE-H10\Content\UI\TopRight.uasset(3DF4DEC4),...\Content\BPs\Person.uasset(BE21838A),...\Content\BPs\GI.uasset(FE4406A0) ; MD5 contrôlés.- Éditeur headless lancé par commande directe (
UnrealEditor.exe "<uproject>" -RenderOffScreen -unattended -nosplash -NoSound -ModelContextProtocolStartServer -ModelContextProtocolPort=8000 -abslog=…, pas le lanceur HyperAIStudio), 11/10 07:21:57.
1. E1 — TopRight : B4-a (fait)
- Relus :
CustomEvent_5(AddEvent|Custom|Current,then= sortie 1 →SwitchString_1.execute,Amenitysortie 2 →SwitchString_1.Selection,VariableSet_18) ;SwitchString_1(execute0). find_node_types« NextFrame » →Utilitaires|Contrôledeflux|DelayUntilNextFrame(seule entrée). CrééK2Node_CallFunction_85(execute0,then0).break_pinsCustomEvent_5.then(1) /SwitchString_1.execute;connect_pinsCustomEvent_5.then→_85.execute;_85.then→SwitchString_1.execute. Relu conforme.- Compilation (avertissements en erreurs) sans erreur ni avertissement (journal 05:23:26 UTC) ;
save_assetstrue. - TopRight =
1FCB94A60061B418E9DEEB08BC1A990D(11/10 07:23:37). - Écart : un
connect_pinset unget_node_infosenvoyés dans le même message (chevauchement d'appels MCP) ; résultat relu conforme.
2. E2 — Person : A1 (fait)
Variables membres ajoutées : HairIdxs (int, ARRAY), PickedHairIdx (int), HairSearch (bool).
Nœuds relus avant (conformes à la SPEC) : CallArrayFunction_10 (Clear de Hairs, then → MacroInstance_402),
MacroInstance_402 (ForEachLoopwithBreak sur HairstyleTable, sorties LoopBody 0, Array Element 1, Array Index 2,
Completed 3 ; entrée Break ← Knot_47), MacroInstance_19 (IsValid, Is Not Valid 1 → CallFunction_96),
CallFunction_96 (|LoadHairMeshIfNeeded, Index = entrée 2), CallArrayFunction_11 (Add à Hairs), MacroInstance_11,
VariableSet_12 (|SetPickedHair, Output_Get 1), VariableGet_52 (Hairs), GetArrayItem_3 (Get par référence),
CallFunction_133 (RandomInteger), VariableGet_896 (HairstyleTable), CallArrayFunction_14 (Length). Hairs et
HairstyleTable sont des tableaux de SMBool.
Nœuds créés (correspondance SPEC → nom réel, type_id) :
| SPEC | Nom réel | type_id |
|---|---|---|
| N1 | CallArrayFunction_73 |
`Utilitaires |
| N2 | CallArrayFunction_74 |
`Utilitaires |
| N4 | VariableGet_157 |
`Variables |
| N5 | CallArrayFunction_75 |
`Utilitaires |
| N6 | CallFunction_497 |
`Math |
| N7 | GetArrayItem_14 |
`Utilitaires |
| N3 | VariableSet_237 |
`Variables |
| N8 | VariableGet_202 |
`Variables |
| V1 | VariableSet_238 |
`Variables |
| V2 | VariableSet_239 |
`Variables |
| GH | VariableGet_249 |
`Variables |
| W | MacroInstance_44 |
`Utilities |
| B1 | IfThenElse_150 |
`Utilitaires |
| IVI | CallArrayFunction_76 |
`Utilitaires |
| B2 | IfThenElse_151 |
Branche |
| IV | CallFunction_536 |
`Utilitaires |
| V3 | VariableSet_240 |
`Variables |
| R | CallArrayFunction_77 |
`Utilitaires |
8 coupures (b1-b8) et 34 liens (c1-c34) faits exactement comme le § C.4, un appel à la fois ; relecture finale : liens conformes,
broches génériques typées Matrice de Nombre entiers / Nombre entier, CallFunction_96.execute ← VariableSet_237 seul,
MacroInstance_44.Completed → CallFunction_1405, VariableSet_12.then → IfThenElse_151, GetArrayItem_3.Array ← VariableGet_896, Dimension 1 ← VariableGet_202. Restent sans exécution : MacroInstance_11, CallFunction_133,
CallArrayFunction_14 (§ C.1-3).
3. E2 — Person : B3-a (fait)
Variable locale ProxySuffix (string, graphe ClearProxies). Créés : VariableSet_0 (DéfinirProxySuffix) et
VariableGet_2 (ObtenirProxySuffix). break_pins DynamicCast_30.then / MacroInstance_301.Exec ; liens
DynamicCast_30.then → VariableSet_0 → MacroInstance_301.Exec ; CommutativeAssociativeBinaryOperator_0.ReturnValue →
VariableSet_0.ProxySuffix ; break_pins CommutativeAssociativeBinaryOperator_0 / CallFunction_2.InSuffix ; VariableGet_2 →
CallFunction_2.InSuffix. Relu conforme.
Compilation de Person (avertissements en erreurs) sans erreur ni avertissement (journal 05:30:06 UTC) ; save_assets true.
Person = D1B4C63D47621B1191AD9352C80C99CD (11/10 07:30:29).
4. E3 — GI : B1-a, B2-a (non fait)
Premier passage (11/10, session coupée) : variables SaveBeforeDestroy, RevertSkipped (membres), MeshSuffix (locale)
ajoutées, 9 nœuds créés, 3 coupures et 9 liens faits, rien enregistré ; l'éditeur s'est fermé avec la session : GI sur disque
inchangé (FE4406A0, = HEAD). À refaire entièrement depuis FE4406A0.
Points relevés lors de ce passage, utiles à la reprise :
CallFunction_104(Préréglages|SavePreset) n'a pas d'entrée Person (self GI) ;CustomEvent_3172(DestroyPerson) :then1,Person2,WithoutDestroying3,ReuseableInScene4 ;CallFunction_166(destroyDummy)then→CallFunction_731(PrintString « DestroyDummy was from DestroyPerson »).- Lecture
Validde Person :create_nodetype_idClasse|Person|ObtenirValid(le filtre avec contexte donneVariables|Pardéfaut|ObtenirValid, quecreate_noderefuse). Appel :Classe|Person|RevertStripAll. SavePreset:IfThenElse_2957.then(0) →CallFunction_16039(|RevertStripAll, self ←VariableGet_9248).GetSMBoolForSMC_Cloth:FunctionEntry_2157.then→MacroInstance_1872.Exec;CommutativeAssociativeBinaryOperator_0→CallFunction_2.InSuffix(1).
5. Pièges MCP rencontrés
create_node: paramètrepos(pasposition) ;connect_pins/break_pins:output_pin,input_pin.find_node_types« Hair » liste les variables nouvelles sousVariables|Pardéfaut|Obtenir…/Définir….- Après relance de l'éditeur, la session ne retrouve pas
unreal-mcpd'elle-même :/mcp→ Reconnect par l'utilisateur (mémoireunreal-mcp-reconnect) ; une session neuve se connecte au démarrage.