7.1 KiB
Fiche STF-T0 — Niveau N1 — Modèle prévu orchestrateur STF (Opus 5.5) | utilisé claude-opus-5-5 — Agent orchestrateur — Skills lp-lot, lp-mcp, sk-protocol
STF-T0 : les 12 SpinBox de MainMenu liées à GI (hors caméra / durée), carte préalable (2026-10-10)
Copie D:\Game\LifePlay-master 5.8 (branche ue5.8, HEAD 20620f6), pendant le gel STC : aucune écriture, aucun
outil d'écriture MCP. Sources : etat\ST\STC\STC-T0-CART.md (bornes, défauts GI), diagnostic
side-session-notes\local_b6d8fc6e-…\STC-reponse-fable.md § 1.1 (liaisons, lecture binaire de l'asset), dump
etat\ST\STB\dumps\MainMenu__EventGraph.txt (2026-10-09, antérieur à CHG-294 : CHG-294 n'a retiré que
OnInitialized ; gestionnaires SpinBox réputés inchangés, à relire par get_node_infos après le gel, § 4), source
Source\LifePlay\LPSettingsSubsystem.cpp. Deux appels MCP en lecture seule (list_toolsets,
ObjectTools.list_properties sur /Game/UI/MainMenu.MainMenu), éditeur de la session STC, aucune autre session MCP active.
1. Les 12 couples (établi : bornes et défauts STC-T0, liaisons diagnostic § 1.1)
| # | SpinBox | Variable GI | Min / Max | Défaut GI | Liaison Value |
Gestionnaire OnValueChanged (n°) |
Chaîne écrite (dump) |
|---|---|---|---|---|---|---|---|
| 1 | ChildGrowthMult | ChildGrowthMultiplier | 0.01 / 10000 | 1 | Property GI.ChildGrowthMultiplier |
6 | IsValid (Macro_2) → Set (VariableSet_1) ; GI = VariableGet_29 (partagé avec 13, 17) |
| 2 | ShadeDepth | ShadeDepth | 0 / 1 | 0.5 | Property GI.ShadeDepth |
118 | IsValid (Macro_40) → Set (VariableSet_106) → Cast MID du blendable [1] du PostProcessVolume de GI → SetScalarParameterValue('ShadeDepth', valeur), échec → PrintString 'Cast failed' |
| 3 | SpinBoxBGA | Vol_BGA | 0 / 5 | 0.5 | Property GI.Vol_BGA |
20 | IsValid (Macro_10) → Set (VariableSet_16) ; GI = VariableGet_1 (partagé avec 21, 22, 23) |
| 4 | SpinBoxMarkerSize | MarkerSize | 1 / 100 | 28 | Property GI.MarkerSize |
13 | IsValid (Macro_5) → Set (VariableSet_6) ; OnValueCommitted existant (15) : RetriggerableDelay 2 s → GI.SpawnMapMarkers(false) |
| 5 | SpinBoxMoan | Vol_Moan | 0 / 5 | 1 | Property GI.Vol_Moan |
23 | IsValid (Macro_8) → Set (VariableSet_19) |
| 6 | SpinBoxPhysicsMult | PhysicsMult | 0 / 100 | 1 | Property GI.PhysicsMult |
17 | IsValid (Macro_7) → Set (VariableSet_11) |
| 7 | SpinBoxSceneFrequency | SceneFrequency | 0.2 / 100 | 10 | Property GI.SceneFrequency |
178 | IsValid (Macro_42) → Set (VariableSet_116) |
| 8 | SpinBoxSexDescription | SexLineDuration | 1 / 100 | 15 | Property GI.SexLineDuration |
84 | IsValid (Macro_90) → Set (VariableSet_48) |
| 9 | SpinBoxSex | Vol_Sex | 0 / 5 | 1 | Property GI.Vol_Sex |
22 | IsValid (Macro_12) → Set (VariableSet_18) |
| 10 | SpinBoxSquirtMult | SquirtMult | 0 / 100 | 2 | Property GI.SquirtMult |
26 | Set (VariableSet_25) sans IsValid (GI = VariableGet_40) |
| 11 | SpinBoxUI | Vol_UI | 0 / 5 | 1 | Property GI.Vol_UI |
21 | IsValid (Macro_11) → Set (VariableSet_17) |
| 12 | SpinBoxPregnancyTerm | PregnancyMultiplier | 0.01 / 3 | 1 | Property GI.PregnancyMultiplier |
42 (nom d'événement hérité BndEvt__SpinBox_0_…_42) |
IsValid (Macro_57) → Set (VariableSet_70) |
Persistance (etat\ST\STB\STB-SET-INV.md § 2-3) : seules SceneFrequency et SexLineDuration figurent dans
GameSettings.sav ; les 10 autres ne sont dans aucun .sav (estimé : défauts de GI à chaque lancement).
Compte : 12 liaisons Property, 12 gestionnaires OnValueChanged, 1 OnValueCommitted existant (MarkerSize).
Hors périmètre : SpinBox_0 (flou de champ CharGen, liaison Function, OnValueCommitted 19), caméra et durée (STC).
2. Points particuliers (établi par le dump, à confirmer au § 4)
- ShadeDepth (2) : le gestionnaire applique aussi la valeur au matériau de post-traitement. Déplacé sur
OnValueCommitted, l'aperçu en direct pendant un glisser disparaît (application en fin de geste, saisie ou flèche). La chaîne entière (Set + matériau) part surOnValueCommitted, comportement à la validation inchangé. - SquirtMult (10) : aucune garde
IsValid. Aujourd'huiSynchronizeProperties(GI nul) déclenche donc unSetsur None à chaque ouverture du menu (Accessed None probable, estimé : non relevé dansLogStats). Après correctif, le gestionnaire ne part que sur action du joueur (GI valide) ; ajout d'unIsValidpour l'uniformité, état « vide » impossible aprèsConstruct(règle 4lp-mcp: écrit au CHG). - Nœuds
GIpartagés : VariableGet_29 (6, 13, 17), VariableGet_1 (20-23) ; déplacer un gestionnaire ne doit pas couper les autres (rebrancher les broches d'exécution etInValueseulement). - Volumes (3, 5, 9, 11) :
Vol_*sont relus par GI ailleurs (GI__EventGraph.txt:22870-22898) ; l'effet suit à la prochaine lecture, un commit en fin de geste ne change rien d'audible pendant le glisser (estimé). - Construct (dump l. 121-141) :
Construct→Cast To GI→Set GI(VariableSet_2904) →CallFunction_1278(UpdateDonors). STC y insère sesSetValue(STC-SPEC § 3.3) ; STF s'insère après la chaîne STC, avantUpdateDonors. - C++ :
LPSettingsSubsystem.cpp:256-366(CollectSpinBoxes,HardenSettingsControls) traite les SpinBox par type (style, police), jamais par nom ni par valeur : un remplacement de widget reste couvert. Aucune autre référence aux 12 noms dansSource\.
3. Retrait d'une liaison Property : méthode (ouvert)
- STC-SPEC § 1 : « aucun outil MCP ne retire une liaison de propriété » → remplacement du widget par un widget neuf d'un autre nom (méthode A, modèle STC).
ObjectTools.list_propertiessur/Game/UI/MainMenu.MainMenurenvoie les propriétés de la classe générée (variables de widgets,gI…), pas le tableauBindingsduUWidgetBlueprint(établi, cette session). Écriture directe du tableau (méthode B : garder les noms et les événements) : non démontrée ; à mesurer en STF-T1, après le gel, sans écriture (lecture du tableau par un autre chemin d'objet ou parUMGToolSet,MVVMToolset).- Choix tranché en STF-T1 sur deux faits : (1) ce qu'a donné la méthode A en STC (avertissements de liaisons orphelines,
STC-SPEC § 7, relecture des
Bindingsaprès STC) ; (2) existence d'une écriture du tableauBindingspar un outil Epic. Sans (2), méthode A.
4. Reste à mesurer après la levée du gel STC (STF-T1)
get_node_infossur les 12 gestionnaires et sur la chaîneConstructréelle (après STC) : confirmer le § 1 sur l'asset courant.UMGToolSet.GetWidgets: parent, créneau, propriétés (style, police,MinFractionalDigits,Delta, bornes de glisser) de chacun des 12 widgets, pour la méthode A.- Relecture binaire des deux tableaux
Bindingsaprès STC (attendu 33 − 2 = 31 entrées, dont nos 12). - Méthode B : existe ou non (§ 3).
Fichiers à commiter : aucun (Docs/Migration/etat/ est ignoré par git, .gitignore:74 de la copie 5.5).