LifePlay-Revival/Docs/Migration/etat/REL/STM1/STM1-CART-01.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

17 KiB
Raw Blame History

Fiche STM1-CART-01 — Niveau N2 — Modèle prévu opus medium | utilisé claude-opus-5-5 — Agent session « Medium · STM1 » (pas de sous-agent) — Skills sk-protocol (chargé), lp-ue-compat (SKILL.md et ruptures.md § 3 lus) ; lp-lot, lp-paths non chargés (écart, § 7)

STM1-CART-01 : StreetMap 5.5 contre 5.8 (F3), cartographie sans copie UE (2026-10-19)

Source de l'ordre : Big Boss, message à « Medium · STM1 » ; Docs/37_Feuille_De_Route_Alpha2.md § 1.1 F3 et § 3.1 (lot STM1). Lecture seule des deux copies (D:\Game\LifePlay-master 5.5, D:\Game\LifePlay-master 5.8) et des moteurs D:/Game/Launcher/Engine/UE_5.5 et UE_5.8. Aucun éditeur, aucun MCP, aucune écriture hors ce dossier, aucune commande git qui écrit. Aucune recherche web (sources du moteur installées suffisantes).

Résultat : partiel. La cause n'est pas tranchée sans essai en éditeur, et le symptôme exact de F3 n'est décrit nulle part (feuille de route l. 22 : « ne s'affiche plus normalement »). En revanche :

  1. Le plugin StreetMap n'est pas ce qui dessine la carte en jeu : la carte est un StaticMeshComponent (acteur StreetMap_Static), avec le matériau masqué StreetMapMasked ou opaque StreetMapClassic. Le C++ du plugin, ses correctifs C4996 et son activation sont donc hors cause pour l'affichage en jeu.
  2. Tous les fichiers propres au projet qui touchent la carte sont identiques entre les deux copies (plugin hors gardes C4996, matériaux, données, maillage, rendu de DefaultEngine.ini).
  3. Le seul écart de rendu établi qui touche la carte est un changement de valeur par défaut du moteur : r.EarlyZPassOnlyMaterialMasking passe de 0 (5.5) à 1 (5.8). Il s'applique aux matériaux masqués, donc à StreetMapMasked, le matériau par défaut du maillage de la ville. C'est l'hypothèse H1.

1. Comment la carte est affichée (établi)

Constat Preuve
La carte du niveau est l'acteur StreetMap_Static (BP /Game/BPs/StreetMap_Static), avec un StaticMeshComponent grep -a -o sur Content/Scenes/CentralLondon.umap : StreetMap_Static_C, StaticMeshComponent0, événements OnClicked/BeginCursorOver du StaticMeshComponent ; aucune chaîne StreetMapComponent ni StreetMapActor dans le niveau
Le maillage affiché est /Game/Heavy/StreetMap/Static/CentralLondon (280 maillages Static, un par ville), préchargé par le C++ Source/LifePlay/LPDataCompat.cpp:274-275 (PreloadCityPackages, identique en 5.5, commit 81f75d4) ; ls Content/Heavy/StreetMap/Static | wc -l = 280
Matériau propre au maillage : StreetMapMasked grep -a -o "/Game/..." sur Content/Heavy/StreetMap/Static/CentralLondon.uasset : 1 référence, /Game/Heavy/New2/Buildings/Mats/StreetMapMasked
StreetMapMasked : BLEND_Masked, MSM_DefaultLit, nœuds VertexColor, If, TextureSample (texture road), Constant ×2 grep -a -o sur Content/Heavy/New2/Buildings/Mats/StreetMapMasked.uasset
StreetMapClassic : BLEND_Opaque, MSM_DefaultLit, VertexColor, Constant idem sur StreetMapClassic.uasset
Choix du matériau à l'exécution : événement HideBuildings, branche sur GI.ClassicMap → SetMaterial(0, …) (vrai : K2Node_CallFunction_131, faux : K2Node_CallFunction_111) etat/ST/STB/dumps/StreetMap_Static__EventGraph.txt:5653-5690. Le dump affiche Material (vide) : le dumpeur n'imprime pas les objets par défaut des broches (estimé). Les deux matériaux sont importés par le BP (voir ci-dessous)
Le BP importe bien les deux matériaux, en 5.5, en 5.8 et dans la cuisson 5.8 grep -a -o : /Game/Heavy/New2/Buildings/Mats/StreetMapClassic et .../StreetMapMasked, 1 fois chacun dans les trois fichiers et dans git show 1122e17:Content/BPs/StreetMap_Static.uasset
Caméra de la carte Birdview : perspective, FOV 90, bAutoCalculateOrthoPlanes = False (sans effet en perspective) etat/CAM/CAM-T4_LPDumpComponents_20261011-004910.txt:282-307 (ProjectionMode par défaut = perspective) ; etat/CAM/CAM-AUDIT.md:72 (position (0, 0, 20000), tangage -45)
Monde loin de l'origine : composants du niveau vers X ≈ -3,13e6, Y ≈ -1,50e7 (≈ 150 km) CAM-T4_LPDumpComponents_20261011-004910.txt:237, 476, 715

Conséquence (estimé) : le proxy C++ du plugin (StreetMapSceneProxy.cpp) ne sert qu'aux composants UStreetMapComponent (éditeur, acteurs importés), pas à la carte du jeu. En jeu, StreetMap ne sert que de données (UStreetMap : routes, bâtiments, aménités ; structs StreetMapBuilding, StreetMapRoad dans StreetMap_Static, Birdview, CityExpansion).

2. Comparaison 5.5 / 5.8

Élément 5.5 5.8 Verdict Preuve
Plugin : fichiers hors Binaries/Intermediate — — 2 fichiers diffèrent, seulement par les gardes C4996 diff -rq des deux Plugins/StreetMap
StreetMapSceneProxy.cpp GetMaterialRelevance(FeatureLevel) même appel sous #if UE_VERSION_OLDER_THAN(5, 8, 0), sinon GetMaterialRelevance(GetScene().GetShaderPlatform()) équivalent (commentaire l. 25-27) ; proxy hors jeu (§ 1) Plugins/StreetMap/Source/StreetMapRuntime/StreetMapSceneProxy.cpp:22-28
StreetMapComponentDetails.cpp API 5.5 W2, W3, W4 sous garde éditeur seulement (panneau de détails, police, ImportVersion) diff, ruptures.md § 3 W2-W4
StreetMap.uplugin identique diff -rq (aucune ligne)
StreetMapDefaultMaterial.uasset e21255aa… e21255aa… identique md5sum
Activation dans LifePlay.uproject "StreetMap", "Enabled": true idem, l. 45-46 identique diff des deux .uproject (aucune ligne StreetMap)
Addon LPSandbox.uproject — "StreetMap", "Enabled": false l. 31-32 sans effet sur le jeu (estimé) : seul le .uproject du jeu est lu ; l'addon est monté par AdditionalPluginDirectories ../LifePlay-Sandbox-5.8/Plugins (LifePlay.uproject:333), pas par son .uproject grep -n ; à confirmer dans le journal (StreetMap monté, ci-dessous)
Journal 5.8 — LogPluginManager: Mounting Project plugin StreetMap ; InternalLoadLibrary: 'StreetMapRuntime' ; aucune ligne StreetMap en Warning/Error plugin chargé Saved/Logs/LifePlay.log, LifePlay-backup-2026.10.19-09.27.31.log
Matériaux StreetMapMasked, StreetMapClassic a5a08453, 2a650161 idem identiques (non réenregistrés en 5.8 : U5 « hors Heavy ») md5sum
Maillage Heavy/StreetMap/Static/CentralLondon fba15a84cc46 idem identique (format 5.5, données de rendu reconstruites par le moteur 5.8) md5sum
Données Heavy/StreetMap/CentralLondon (UStreetMap) a6c4d9b6 idem identiques ; 280/280 villes contrôlées en 5.8 md5sum ; etat/U58/U8/U8-T7b-VAL.md § 3.3
BP StreetMap_Static diffère : resave U5 (809102a) et IsValid STB-SMS (281207f, CHG-288) ; références de matériaux inchangées git log -- Content/BPs/StreetMap_Static.uasset
DefaultEngine.ini [/Script/Engine.RendererSettings] identique (seuls commentaires et CompilerVersion diffèrent) : TAA, pas de Lumen, SSR, VSM off diff des deux fichiers ; Config/DefaultEngine.ini:13-27
DefaultScalability.ini r.TranslucencyLightingVolumeDim r.TranslucencyLightingVolume.Dim renommage voulu (U3) ; les 18 variables de la 5.8 existent dans le moteur sauf fx.Niagara.QualityLevel (plugin Niagara, hors périmètre de la recherche) et r.PostProcessAAQuality (absente aussi en 5.5 : aucun écart) boucle grep -rqF sur UE_5.8/Engine/Source/Runtime/{Renderer,Engine,RenderCore,Landscape,RHI}
Nanite, Lumen, VSM, ordre de tri, translucidité aucune clé StreetMap ; projet sans Nanite/Lumen/VSM ; carte non translucide (Masked / Opaque) § 1

3. Valeurs par défaut du moteur qui changent (non fixées par le projet)

Variable 5.5 5.8 Touche la carte ? Preuve
r.EarlyZPassOnlyMaterialMasking (lecture seule, redémarrage requis) 0 1 oui : matériaux masqués, dont StreetMapMasked UE_5.5/.../Renderer/Private/RendererScene.cpp:111-112 ; UE_5.8/.../Renderer/Private/RendererScene.cpp:138-139 ; utilisé par MaskedInEarlyPass() UE_5.8/.../RenderCore/Private/RenderUtils.cpp:534-545
r.EarlyZPass 3 3 — RendererScene.cpp 5.5 l. 119-120, 5.8 l. 146-147
r.Material.Translator.EnableNew (nouveau traducteur MIR) — false non UE_5.8/.../Engine/Private/Materials/MaterialShared.cpp:109-110
Nœud If : Compile() code identique MaterialExpressions.cpp des deux moteurs (fonction UMaterialExpressionIf::Compile) ; en-tête : seuls initialiseurs et GetInputValueType changent
r.Substrate, r.VertexFoggingForOpaque, r.SkyAtmosphere, r.LocalFogVolume, r.Shadow.CSM.MaxCascades, r.GPUScene.UploadEveryFrame mêmes défauts relevé grep -A2 dans les deux moteurs
BaseScalability.ini : blocs r.MegaLights.*, r.Shadow.Virtual.* (biais LOD, rayons) ajoutés ou changés peu probable : VSM désactivé par le projet ; MegaLights non activé par le projet (aucune clé) diff des deux BaseScalability.ini
MaterialAO (visualisation) EnableOnMobile=true non diff des BaseEngine.ini

4. Hypothèses classées

# Hypothèse Niveau Pour Contre / manque Essai qui tranche (J2)
H1 r.EarlyZPassOnlyMaterialMasking=1 (défaut 5.8) change le rendu de StreetMapMasked : masque calculé dans la prépasse de profondeur, passe de base en test de profondeur « égal ». Sur un maillage plat, immense, aux couches coplanaires (sol, routes, emprises de bâtiments) et à ≈ 150 km de l'origine, un écart de profondeur entre prépasse et passe de base donnerait trous, scintillement ou couches qui se mangent estimé (seul écart établi qui touche la carte) écart de défaut établi (§ 3) ; matériau masqué établi (§ 1) ; aucun autre écart dans les fichiers du projet mécanisme d'artefact non prouvé ; symptôme F3 non décrit E1, E2
H2 Données de rendu du maillage Static/CentralLondon reconstruites par le moteur 5.8 (paquet de format 5.5 non réenregistré) avec d'autres réglages de construction (couleurs de sommets, tangentes, précision des UV) : le matériau lit VertexColor incertain paquet non réenregistré (U5 « hors Heavy ») ; matériaux pilotés par la couleur de sommet ERR-018 et U8-T7b montrent des données sources identiques ; aucune preuve de perte E3
H3 Éclairage global du niveau changé par d'autres défauts 5.8 (exposition, ciel, brouillard) : la carte « paraît » différente sans défaut propre incertain, faible STA-T3-DOC.md (STA-D07) : rendu 5.5 / 5.8 jamais comparé au même cadrage, « StreetMap non plus » aucun défaut de variable changé trouvé dans ce périmètre (§ 3) E1 (captures au même cadrage)
H4 Plugin StreetMap (C4996, MaterialRelevance par plateforme de shader) écarté pour le jeu (estimé fort) — la carte en jeu n'utilise pas UStreetMapComponent (§ 1) ; changement W1 équivalent E4 si l'écart concerne l'éditeur
H5 Activation : plugin désactivé dans l'addon écarté — LifePlay.uproject:45-46 active le plugin ; journal 5.8 : plugin monté, DLL chargée —
H6 Matériaux, données, BP, config de rendu du projet écarté — identiques (§ 2) ; BP : seules les modifications U5 et CHG-288, références de matériaux présentes —

Défaut latent hors F3 (même code en 5.5 et 5.8) : FStreetMapSceneProxy::MakeMeshBatch dessine toujours StreetMapComp->GetDefaultMaterial() en passe statique et ignore MaterialInterface (matériau posé sur le composant) (StreetMapSceneProxy.cpp:52-64 et :128). Sans effet sur la carte du jeu (§ 1) ; à noter si un essai porte sur un StreetMapActor en éditeur.

5. BUILD-DEMANDE pour le J2 (proposition, sous le jeton UE de Big Boss)

Préalable sans copie UE : l'utilisateur décrit le symptôme (ce qui est « anormal » : couleurs, trous, scintillement, couches manquantes, bâtiments, routes, vue Birdview ou carte au sol) et, si possible, une capture 5.5 et 5.8 au même cadrage. Sans cela, E1 sert aussi de constat.

Essai Action Écriture Attendu qui tranche
E1 Jeu 5.8 (PIE ou Development), carte ouverte : captures avec ClassicMap vrai (opaque) puis faux (masqué), même cadrage ; mêmes captures en 5.5 aucune Classic normal et Masked anormal en 5.8 seulement → H1 très probable ; les deux anormaux → H2 ou H3
E2 Ajouter r.EarlyZPassOnlyMaterialMasking=0 dans Config/DefaultEngine.ini [/Script/Engine.RendererSettings] (variable lecture seule : relancer l'éditeur, recompilation des shaders de passe de base), refaire E1 1 ligne d'ini, sous instantané Tools/Snapshot.ps1, retour arrière par Restore.ps1 rendu 5.8 redevenu égal à la 5.5 → H1 établie ; correctif = cette ligne (même principe que L7c : rendre explicite la valeur jouée en 5.5)
E3 Éditeur 5.8, ouvrir Heavy/StreetMap/Static/CentralLondon (lecture) : sommets, triangles, sections, affichage des couleurs de sommets ; comparer aux valeurs d'ERR-018 / U8-T7b_streetmap_58.csv aucune couleurs de sommets absentes ou comptes différents → H2
E4 (si l'écart est en éditeur) placer un StreetMapActor de Heavy/StreetMap/CentralLondon dans un niveau vide non enregistré aucune sauvegarde écart visible seulement là → piste plugin, hors jeu
E5 stat / console en jeu : r.EarlyZPassOnlyMaterialMasking, r.EarlyZPass (valeurs effectives) aucune confirme les valeurs du § 3 en exécution

Ordre conseillé : E5 + E1 (sans écriture, ≈ 10 min), puis E2 seulement si E1 désigne le matériau masqué. E2 touche tous les matériaux masqués du jeu (feuillage, grilles, cheveux) : à valider aussi sur une scène d'intérieur avec personnages.

6. Mesuré (commandes et sorties brutes, extraits)

$ diff -rq "/d/Game/LifePlay-master 5.5/Plugins/StreetMap" Plugins/StreetMap | grep -v -E "Binaries|Intermediate"
Files '.../5.5/Plugins/StreetMap/Source/StreetMapImporting/StreetMapComponentDetails.cpp' and Plugins/StreetMap/Source/StreetMapImporting/StreetMapComponentDetails.cpp differ
Files '.../5.5/Plugins/StreetMap/Source/StreetMapRuntime/StreetMapSceneProxy.cpp' and Plugins/StreetMap/Source/StreetMapRuntime/StreetMapSceneProxy.cpp differ

$ md5sum (5.5 puis 5.8)
e21255aaa643d2485f476fa04e3dcce3  Plugins/StreetMap/Content/StreetMapDefaultMaterial.uasset (les deux)
2a650161 2a650161 Content/Heavy/New2/Buildings/Mats/StreetMapClassic.uasset
a5a08453 a5a08453 Content/Heavy/New2/Buildings/Mats/StreetMapMasked.uasset
a6c4d9b6 a6c4d9b6 Content/Heavy/StreetMap/CentralLondon.uasset
fba15a84cc46 fba15a84cc46 Content/Heavy/StreetMap/Static/CentralLondon.uasset

$ sed -n 108,118p UE_5.5/.../RendererScene.cpp ; sed -n 134,150p UE_5.8/.../RendererScene.cpp
	TEXT("r.EarlyZPassOnlyMaterialMasking"),
	0,                       (5.5)
	TEXT("r.EarlyZPassOnlyMaterialMasking"),
	1,                       (5.8)

$ grep -a -o ... Content/Heavy/New2/Buildings/Mats/StreetMapMasked.uasset | sort | uniq -c
      2 BLEND_Masked
      1 MSM_DefaultLit
      1 MaterialExpressionVertexColor
      1 MaterialExpressionIf
      1 MaterialExpressionTextureSample
      1 /Game/Heavy/New2/Buildings/Mats/road

7. Incertitudes, non mesuré, écarts

  • Non mesuré : tout rendu (aucun éditeur ni jeu lancé, par consigne) ; le symptôme de F3 lui-même ; valeurs effectives des variables en exécution.
  • Non relevé : journaux d'un jeu empaqueté 5.8 (Shipping) ; liste complète des défauts de variables changés entre 5.5 et 5.8 (seules celles du § 3 sont vérifiées) ; plugins de rendu activés dans le seul .uproject 5.8 (liste diff du § 2 : outils MCP éditeur et HyperAIStudio, sans rôle de rendu en jeu, estimé).
  • Écarts à la fiche : lp-lot et lp-paths non chargés (chemins et format repris de la fiche et de QG1-TACHES.md) ; grep/sed en Bash utilisés pour lire (sk-protocol § 7 recommande Read/Grep).
  • Fichiers écrits : D:\Game\LifePlay-master 5.8\Docs\Migration\etat\REL\STM1\STM1-CART-01.md (A), D:\Game\LifePlay-master 5.8\Docs\Migration\etat\REL\STM1\STM1-TACHES.md (A). Fichiers à commiter : ces deux (A), par le gardien.

Tours : ≈ 33 / 40 (déclaré ; FicheStats.py fait foi).

À verser :

  • lp-ue-compat § 4 (points surveillés) — défaut moteur r.EarlyZPassOnlyMaterialMasking 0 → 1 en 5.8 (RendererScene.cpp 5.5:111, 5.8:138), non fixé par le projet ; touche tous les matériaux masqués.
  • lp-paths ou doc de la carte — la carte du jeu est StreetMap_Static (StaticMeshComponent, maillages Heavy/StreetMap/Static, matériaux StreetMapMasked / StreetMapClassic selon GI.ClassicMap) ; le plugin StreetMap n'y sert que de données.
  • lp-commandlets (LPDump) — les broches objet par défaut (SetMaterial.Material) s'affichent « (vide) » : ne pas en conclure une référence nulle.

Suite : Big Boss doit faire décrire le symptôme à l'utilisateur puis ouvrir le J2 STM1 (E5 + E1 sans écriture, E2 sous instantané si E1 désigne le matériau masqué), état : CART close, H1 en tête, aucun fichier du projet modifié.