LifePlay-Revival/Docs/Migration/etat/REL/STM1/STM1-CART-04.md
edujiro5972 56dfcfc3d2 LifePlay UE 5.8 : état de développement au 2026-10-20
Tickets : PUB-20261020-T1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 17:35:10 +02:00

12 KiB
Raw Blame History

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/Plane avec PavementMat, texture pavement) posé par le Blueprint MapMarkers. MapMarkers place 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), MapMarkers masque ce plan, et la carte StreetMap se dessine avec StreetMapClassic (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, et ClassicMap vaut false par 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 :

  • MapMarkers importe /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 MapMarkers référence les maisons et les arbres (grep -rla "Buildings/House1", "Buildings/LP_tree").
  • ClassicMap est déclaré dans GameSettings, GI, MapMarkers, StreetMap_Static et UI/CityMenu (option du menu des villes). Il est absent des trois GameSettings.sav relevé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 donc false (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 ClassicMap vrai 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 StaticMeshes masque d'un coup le plan PavementMat de MapMarkers, les instances HISM (maisons, arbres, voitures) et la carte StreetMap. Le sol vu dans le fleuve est bien un maillage statique : le plan PavementMat. Le bleu sombre est le fond, sans doute le sol de planète du SkyAtmosphere (Z = −100 000, CHG-050), éclairé de biais (estimé).
  • W1c (un Cube sous la ville) est écartée : aucun acteur Cube dans le niveau (find_actors, § 1). L'import /Engine/BasicShapes/Cube est le maillage du mur Wall, 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 StaticMeshes sur la même vue, pour comparer le fond. Une lecture MCP de la transformation du Plane en 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 acteur MapMarkers créé à l'exécution) ; défauts objet des broches SetMaterial de HideBuildings (dump « (vide) » ; une lecture hyper_blueprint_snapshot avec broches est possible mais volumineuse) ; écart du masque If_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.