12 KiB
Fiche STM1-CART-04 — Niveau N2 — Modèle prévu opus medium | utilisé claude-opus-5-5 — Agent session « Medium · STM1 » (pas de sous-agent) — Skills sk-protocol, lp-mcp (règles reprises de la fiche)
STM1-CART-04 : lecture MCP du sol de la carte (T4 de CART-03) (2026-10-20)
Ordre : BUILD-GO de Big Boss (local_104ff22d) : lecture MCP seule, garde v7, aucune écriture, aucune sauvegarde, aucune PIE, un appel à
la fois. Éditeur lancé par .hyperai/scripts/Start-HyperAIStudioEditor.ps1 (exit 0 ; pid 33856, port 8000). Le client unreal-mcp de la
session a dû être reconnecté par l'utilisateur (deux /mcp → Reconnect). Test list_toolsets : OK. ≈ 28 appels MCP, tous en lecture (list_toolsets, describe_toolset ×4,
get_current_level, find_actors, get_components, get_properties ×8, get_actor_bounds ×4, get_expressions ×2, get_property_input ×3,
get_expression_inputs ×2). Deux appels ont échoué sans effet : ProgrammaticToolset.describe (« Unknown tool describe ») et
get_expressions sur PavementMat (« Expected a Material or MaterialFunction, got MaterialInstanceConstant »). Aucun outil d'écriture appelé.
Résultat : réussi. Le sol qu'on voit dans le lit du fleuve est identifié, et le mécanisme d'eau aussi.
- En mode carte par défaut (
ClassicMap = false), le sol de toute la ville, fleuve compris, est un plan beige (/Engine/BasicShapes/PlaneavecPavementMat, texturepavement) posé par le BlueprintMapMarkers.MapMarkersplace aussi les maisons, gratte-ciel, arbres et jeeps génériques (Heavy/New2/Buildings/*) : ce sont les « bâtiments lambda ». Dans ce mode, aucune couche ne dessine d'eau, dans aucune version : ni le plan, ni le matériau de la carte, ni les données (0 eau, CART-03). - En mode carte classique (
ClassicMap = true),MapMarkersmasque ce plan, et la carte StreetMap se dessine avecStreetMapClassic(couleurs de sommet pures). Le fleuve, sans géométrie, redevient un trou : on y voit le fond (ciel, atmosphère). C'est le seul mode où le fleuve peut paraître de l'eau (W1d de CART-03 § 5 bis, estimé fort). - Ni le niveau, ni
MapMarkers, ni les matériaux ne diffèrent entre 5.5 et 5.8, etClassicMapvautfalsepar défaut et dans toutes les sauvegardes de réglages relevées (5.5, 5.8, build). Ce que l'utilisateur voit en 5.8 est donc le mode par défaut de la carte, déjà présent en 5.5 (estimé). L'« eau » dont il se souvient correspondrait au mode classique, ou à la version 4.27.
1. Relevés MCP (établi, sorties brutes abrégées)
| # | Objet | Appel | Sortie |
|---|---|---|---|
| 1 | niveau courant | SceneTools.get_current_level |
/Game/Scenes/CentralLondon |
| 2 | acteurs du niveau | SceneTools.find_actors |
32 acteurs : BP_Sky_Sphere_294, SkyAtmosphere_0, SkyLight_3, Sun, StreetMap_Static, Birdview, Wall, SecondScreenFloor_2, Brush_1, InstancedFoliageActor_0, BuoyancyManager_0, PostProcessVolume_2, … ; aucun acteur d'eau ni plan de sol à l'échelle de la ville |
| 3 | composants de StreetMap_Static |
ActorTools.get_components |
StaticMeshComponent0, PlayerWC (2 seulement) |
| 4 | StaticMeshComponent0 |
ObjectTools.get_properties |
StaticMesh: None (posé à l'exécution par GI.MoveCity), OverrideMaterials: [], position et rotation nulles, échelle 1, bVisible: true, bHiddenInGame: false, CastShadow: false |
| 5 | emprises (get_actor_bounds) |
Wall : X ≈ −3 131 490, Y −14 967 847 à −14 966 591, Z −261 à 313 ; SecondScreenFloor_2 : 800 × 800 à Y ≈ −24 967 000, Z ≈ −100 ; Brush_1 : 200 × 200 ; InstancedFoliageActor_0 : vide (0) |
petits objets des pièces, aucun ne couvre la ville |
| 6 | StreetMapMasked : couleur de base |
get_property_input(MP_BaseColor) puis get_expression_inputs(If_1) |
If_1(A = VertexColor.R, B = Constant_0) ; A > B → TextureSample_0 (texture road) ; A == B et A < B → Constant3Vector_0 |
| 7 | constantes | get_properties |
Constant_0.R = 0.9 ; Constant3Vector_0 = (0 ; 0,1 ; 0) : vert foncé |
| 8 | StreetMapMasked : masque |
get_property_input(MP_OpacityMask), get_expression_inputs(If_0) |
If_0(A = VertexColor.R, B = VertexColor.R) ; A == B → Constant_5 (R = 0) ; A > B et A < B → Constant_2 |
| 9 | StreetMapMasked : réglages |
get_properties |
BLEND_Masked, OpacityMaskClipValue = 0.3333, une face, MSM_DefaultLit |
| 10 | StreetMapClassic : couleur de base |
get_property_input(MP_BaseColor) |
VertexColor_0 directement (couleurs de sommet pures) |
| 11 | PavementMat (instance) |
get_properties |
parent Bu_Base ; Color = (1 ; 0,827 ; 0,651) (beige) ; MapDiffuse = /Game/Heavy/New2/Buildings/Mats/pavement ; TilingRate = 50000 ; aucune logique d'eau |
| 12 | valeur par défaut du GI | get_properties(Default__GI_C, ClassicMap) |
ClassicMap: false |
Relevés hors MCP, pour compléter :
MapMarkersimporte/Engine/BasicShapes/Plane,Mats/PavementMat,House1-4,Skyscraper1-7,LP_tree,LowPolyJeep,/Game/BPs/HISM; imports identiques en 5.5 et 5.8 (MM-IDENTIQUES).- Dans son graphe, branche sur
GI.ClassicMap: vrai →Plane.SetVisibility(false)(etat/ST/STA/dumps/MapMarkers__EventGraph.txt:1040-1063,K2Node_CallFunction_49). - Seul
MapMarkersréférence les maisons et les arbres (grep -rla "Buildings/House1","Buildings/LP_tree"). ClassicMapest déclaré dansGameSettings,GI,MapMarkers,StreetMap_StaticetUI/CityMenu(option du menu des villes). Il est absent des troisGameSettings.savrelevés : copie 5.5, copie 5.8 et build%LOCALAPPDATA%. Une sauvegarde UE ne stocke que les valeurs différentes du défaut : il valait doncfalse(estimé fort).
2. Lecture
| Point | Conclusion | Niveau |
|---|---|---|
| Qui dessine le sol du lit du fleuve ? | le plan PavementMat de MapMarkers, en mode par défaut |
établi (plan et matériau lus ; c'est le seul objet à l'échelle de la ville) ; position et échelle du plan non lues (composant d'un acteur créé à l'exécution) |
| Les bandes vertes de la capture 2 | StreetMapMasked peint en vert foncé (0 ; 0,1 ; 0) toute surface dont VertexColor.R ≤ 0,9 : parcs (ParkColor R = 0), emprises et bas-côtés ; le reste prend la texture road (routes gris clair) |
établi par le graphe ; l'attribution zone par zone est estimée |
Le masque If_0 (R comparé à lui-même → 0, sous le seuil 0,333) |
lu tel quel, il découperait toute la carte. Or les captures montrent des routes et des bandes vertes, donc la carte se dessine bien. Écart non résolu : il faut lire le code compilé, ou tester en jeu (ClassicMap, show StaticMeshes) |
incertain |
| Ce qui distinguait le fleuve | en mode classique seulement : plan masqué, carte opaque en couleurs de sommet, fleuve = trou sur le fond (W1d) | estimé fort |
| Différence 5.5 / 5.8 | aucune dans les fichiers (niveau, MapMarkers, matériaux, données, réglage par défaut) ; si un écart existe, il porte sur le rendu du fond en mode classique (CART-03 W1a-W1c) |
estimé |
3. Contrôle qui tranche (le moins cher)
T2 de CART-03 devient le contrôle principal : dans la build Development (et si possible en 5.5), sur la vue de la Tamise, activer la
carte classique (menu des villes, option ClassicMap), puis faire une capture.
- Fleuve bleu ou couleur de ciel en mode classique → pas de régression : l'utilisateur jouait en mode classique, ou s'en souvient. Décision possible : rendre
ClassicMapvrai par défaut, ou ajouter de l'eau au mode par défaut (plan d'eau sous le pavé, aux emprises du fleuve). Choix de rendu pour l'utilisateur. - Fleuve couleur sol aussi en mode classique, alors qu'il était bleu en 5.5 dans ce mode → régression du rendu du fond en 5.8 : reprendre CART-03 W1a-W1c (console
show Atmosphere,show Fog…).
3 bis. Complément : essai T1 bis de l'utilisateur (show StaticMeshes, captures 3 et 4, transmises par Big Boss)
- Capture 3 (référence) : même aspect qu'en CART-03 § 5 bis (sol pavé gris-beige continu, fleuve compris, routes gris clair). Capture 4 (
show StaticMeshes) : tout disparaît (sol entre les maisons, lit du fleuve, maisons, arbres) ; restent les icônes, au-dessus d'une surface bleu sombre jusqu'à l'horizon, qui ressemble à de l'eau. - Lecture (établi par ce relevé MCP) :
show StaticMeshesmasque d'un coup le planPavementMatdeMapMarkers, les instances HISM (maisons, arbres, voitures) et la carte StreetMap. Le sol vu dans le fleuve est bien un maillage statique : le planPavementMat. Le bleu sombre est le fond, sans doute le sol de planète duSkyAtmosphere(Z = −100 000, CHG-050), éclairé de biais (estimé). - W1c (un
Cubesous la ville) est écartée : aucun acteurCubedans le niveau (find_actors, § 1). L'import/Engine/BasicShapes/Cubeest le maillage du murWall, qui est petit (emprise de 10 × 1 257 × 575 unités, près des pièces). - Différence 5.5 / 5.8 du plan : aucune dans les fichiers.
| Fichier | MD5 5.5 | MD5 5.8 |
|---|---|---|
Mats/PavementMat |
3aba2695 |
3aba2695 |
Mats/Bu_Base (parent) |
27f3866a |
27f3866a |
Mats/pavement (texture) |
d36176b5 |
d36176b5 |
BPs/MapMarkers |
eafc7894 |
fb72765c (resave U5 809102a ; collisions retirées en O9 et O9b, 8abf1d4, d13a17d, faites en 5.5) |
Imports de MapMarkers identiques ; mêmes propriétés sérialisées du composant Plane (RelativeLocation, RelativeScale3D, OverrideMaterials, bVisible) dans les deux paquets.
L'hypothèse « en 5.5, le plan n'était pas visible ou était plus bas » n'a donc aucun appui dans les fichiers. Si elle est vraie, la cause est à l'exécution : transformation calculée par le graphe, ou mode ClassicMap.
- Ce qui reste à faire pour trancher, sans relancer de lecture MCP longue :
- T0 : capture 5.5, même vue, même mode ;
- T2 : mode classique en 5.8. Le plan est alors masqué par
MapMarkers, et l'on doit voir dans le fleuve le même bleu sombre que sur la capture 4 ; - (option) en 5.5 :
show StaticMeshessur la même vue, pour comparer le fond. Une lecture MCP de la transformation duPlaneen jeu n'est possible qu'en PIE (acteur créé à l'exécution), hors du périmètre lecture seule sans PIE de cette fiche.
4. Contrôles de fin (boss.md § 4)
Voir le compte rendu BUILD-FIN (UeState après fermeture de l'éditeur, CopieEtat, PubCheck). Aucun asset écrit : MD5 des 8 assets de référence attendus inchangés.
5. Incertitudes, écarts, fichiers
- Non lu : position et échelle du plan
PavementMat(composant d'un acteurMapMarkerscréé à l'exécution) ; défauts objet des brochesSetMaterialdeHideBuildings(dump « (vide) » ; une lecturehyper_blueprint_snapshotavec broches est possible mais volumineuse) ; écart du masqueIf_0(§ 2). - Écart : la reconnexion MCP a demandé deux gestes de l'utilisateur. L'éditeur a été lancé avant la reconnexion.
- Fichiers écrits :
D:\Game\LifePlay-master 5.8\Docs\Migration\etat\REL\STM1\STM1-CART-04.md(A),STM1-TACHES.md(M),STM1-B4-APRES.json(A, contrôle de fin).
Tours : ≈ 30 / 40 (déclaré ; FicheStats.py fait foi).
À verser : doc de la carte ou lp-paths — deux modes de carte : par défaut (ClassicMap = false), plan PavementMat et bâtiments génériques de MapMarkers, carte StreetMapMasked (routes texturées, verts) ; classique, plan masqué et carte StreetMapClassic en couleurs de sommet. L'eau n'existe dans aucun des deux : en classique, c'est un trou sur le fond.
Suite : Big Boss doit faire passer T2 (mode classique, 5.8 et 5.5) à l'utilisateur ; ensuite, décision de rendu (défaut classique, ou plan d'eau) et SPEC. État : CART-04 close.