9.8 KiB
Fiche MAPDL1-P1-IMPL — Niveau N3 — Modèle prévu opus medium | utilisé claude-opus-5-5 — Agent session « Medium · MAPDL1 » ; compilation et DryRun par le sous-agent lp-builder (MAPDL1-P1-BUILD.md, MAPDL1-P1-BUILD-02.md) — Skills sk-protocol, lp-city, lp-lot, lp-commandlets, lp-paths
MAPDL1-P1 : commandlet LPImportLegacyStreetMap, reprise à l'identique d'une ancienne carte (2026-10-22)
GO de Big Boss (local_d2580e73), décision de l'utilisateur citée : « GO pour MAPDL1 avec les valeurs par défaut D7 à D14 : voie (a), commencer par L1, L2 et P1, vague 1 classée par population. »
Jeton UE : attribué par Big Boss à 11:52, rendu à la fin de cette fiche.
1. Ce qui a été fait
-
Deux fichiers neufs, et seulement eux, sous l'instantané
Snapshot.ps1 -Lot MAPDL1(Existed=False,D:\Game\LifePlay_Backup_5.5\MAPDL1\manifest.csv) :Fichier MD5 après Fins de ligne Source/LifePlayEditorTools/LPImportLegacyStreetMapCommandlet.h34874DB2638C26DE378CCAF5E85F297ALF Source/LifePlayEditorTools/LPImportLegacyStreetMapCommandlet.cpp0678BCCB6C86D9C40D55C11B74742AA0LF -
Ce que fait le commandlet :
- il lit le résumé UE4 (legacy −6 ou −7, non versionné ou version 511 et plus), la table de noms, les imports, puis l'export de classe
StreetMap; - il recopie chaque propriété étiquetée dans la propriété 5.8 du même nom, par réflexion. Types pris en charge : booléen, entier, flottant, chaîne, nom, octet ou énumération,
Vector2DetVectornatifs, structures étiquetées, tableaux ; - il ne recalcule aucune donnée ;
- une propriété inconnue ou incompatible est sautée par sa taille et comptée au rapport ;
- il garde les mêmes protections que
LPImportCityOSM: écriture seulement sous_Pilot/ou/lpm_city_<v>/StreetMap/<Ville>, jamais sur un paquet existant,-DryRunsans écriture.
- il lit le résumé UE4 (legacy −6 ou −7, non versionné ou version 511 et plus), la table de noms, les imports, puis l'export de classe
-
Aucun fichier de STM1 n'est touché, ni
LifePlayEditorTools.Build.cs:StreetMapRuntimeetJsony étaient déjà. MD5 relevés avant l'écriture et relus après, identiques :LPAssetRegistryHelpers.cpp7B44F5FA…et.h8E3B725A…;LPCityWaterSubsystem.cppCC146CC6…et.h4A6C6711…;LPCityWaterMask.hE5027FD7…;LPBuildCityWaterCommandlet.cpp96EC9503…et.hAEFBBF33…;LPImportCityOSMCommandlet.cppCFFBAAEC…;LifePlayEditorTools.Build.cs6487F4B6….
-
Correctif après la première compilation : C4456, la variable
Pmasquait une autre variable (.cpp:188, traité en erreur ;MAPDL1-P1-BUILD.md). Les deux variables ont été renomméesBytePropetEnumProp. La seconde compilation donne code 0, 0 erreur, 0 avertissement (MAPDL1-P1-BUILD-02.md). -
Référence indépendante : le script ponctuel
Saved\MAPDL1\lire_streetmap_ue4.py(MD510D1133BC2BCD1802E3E863E6CE55F5A) a reçu l'option--totaux, un décodage complet et générique.
2. Mesuré
Référence Python :
python -I -X utf8 Saved\MAPDL1\lire_streetmap_ue4.py <…>\Paris.uasset <…>\Paris.uexp --totaux
TOTAUX routes=6719 points_routes=33916 sens_unique=4477 noeuds=7999 refs_noeuds=18057 batiments=43789
points_batiments=551010 nommes=2082 amenites=1290 hauteurs=296 parcs=273 points_parcs=6067 eaux=0
BORNES (-411527.8, -291203.4) a (417012.0, 308414.8) cm ; soit 8.29 x 6.00 km
code=0
DryRun (MAPDL1-P1-BUILD-02.md, rapport D:\Game\LifePlay_Data\Mega-essai\P1-dryrun.md) :
TOTAUX routes=6719 points_routes=33916 sens_unique=4477 noeuds=7999 refs_noeuds=18057 batiments=43789 points_batiments=551010 nommes=2082 amenites=1290 hauteurs=296 parcs=273 points_parcs=6067 eaux=0
BORNES (-411527.8, -291203.4) a (417012.0, 308414.8) cm ; soit 8.29 x 6.00 km
DryRun : aucun asset ecrit
CODE 0
Écriture du pilote :
& .\Tools\RunCommandlet.ps1 -Lot MAPDL1 -Commandlet LPImportLegacyStreetMap -EtatDir '<…>\etat\REL\MAPDL1' -Args '-Uasset=D:\Game\LifePlay_Data\Mega-essai\MAPDL1-entetes\Paris.uasset -Package=/Game/Heavy/StreetMap/_Pilot/MAPDL1_ParisLegacy -Report=D:\Game\LifePlay_Data\Mega-essai\P1-ecriture.md'
code=0 duree=26s erreurs=0 avertissements=0
proprietes lues jusqu'a l'octet 25005768 ; reste 4 octets apres la fin de liste (attendu : 4)
TOTAUX routes=6719 points_routes=33916 sens_unique=4477 noeuds=7999 refs_noeuds=18057 batiments=43789 points_batiments=551010 nommes=2082 amenites=1290 hauteurs=296 parcs=273 points_parcs=6067 eaux=0
BORNES (-411527.8, -291203.4) a (417012.0, 308414.8) cm ; soit 8.29 x 6.00 km
asset ecrit : /Game/Heavy/StreetMap/_Pilot/MAPDL1_ParisLegacy (…/Content/Heavy/StreetMap/_Pilot/MAPDL1_ParisLegacy.uasset), 29616770 octets
CODE 0
Relecture depuis le disque, par un autre outil :
& .\Tools\RunCommandlet.ps1 -Lot MAPDL1 -Commandlet LPCheckStreetMap -EtatDir '<…>\etat\REL\MAPDL1' -Args '-Path=/Game/Heavy/StreetMap/_Pilot -CSV=D:\Game\LifePlay_Data\Mega-essai\P1-relecture.csv'
code=0 duree=21s erreurs=0 avertissements=24 (les 24 lignes sont la synthèse de l'outil, écrite au niveau Warning)
Ville;Charge;Routes;Noeuds;Batiments;Eaux;Parcs;BatimentsNommes;AvecAmenity;TypesAmenity
MAPDL1_ParisLegacy;1;6719;7999;43789;0;273;2082;1290;120
Paris;1;22280;25221;110949;0;658;4246;1781;111
MD5 du pilote : 5BCB7785B9E5564377D9EE54E7D85A02. UeState.ps1 -Kind Editeur en fin de fiche : processus=0 editeur=0, code 0.
3. Verdict
- Les 13 comptes et les bornes sont identiques entre trois lectures :
- le lecteur Python, indépendant du moteur ;
- le commandlet en DryRun et en écriture ;
- la relecture du paquet écrit par
LPCheckStreetMap.
- Le paquet se charge, avec 0 propriété inconnue et 0 propriété incompatible.
La voie (a) est établie pour Paris : l'ancienne carte est reprise à l'identique en UStreetMap 5.8.
Non mesuré :
- le maillage
Static/<Ville>régénéré parLPBuildCityStaticet sa comparaison avec l'ancienStatic\Paris.uexp(lot P2) ; - un zip d'une autre année (2020 à 2022) ;
- l'aspect en jeu.
La ligne Paris du CSV est l'ancien pilote STM1 (_Pilot/Paris, OSM de 2026, 11 × 8 km). Elle n'est pas à comparer.
4. Écarts
- Snapshot :
pwsh -File Snapshot.ps1 -Path a, ba inscrit une entrée fautive…Commandlet.h,(avec la virgule). Les deux fichiers ont ensuite été inscrits un par un. L'entrée fautive est à ignorer au retour arrière : la ligneExisted=Falsed'un chemin inexistant ne retire rien. - Résumés de
Build.ps1: ils sont dansDocs\Migration\etat\MAPDL1\, avec l'avertissement « EtatDir.ps1 : lot 'MAPDL1' hors table », donc un dossier nouveau à la racine d'etat\, ce qui est contraire àlp-lot(« Où écrire »). Je ne l'ai ni déplacé ni corrigé :Tools\EtatDir.ps1est un outil partagé avec l'addon. Décision à Big Boss : ajouterMAPDL1(projetREL) à la table, puis déplacer les deux.txt. - Commandlets de lecture lancés en plus, sous le même jeton, pour préparer L4 comme Big Boss l'a demandé :
LPDumpFunction -BP=City,-BP=City -Fn=EventGraph -Pins -Exec,-BP=CityMenu -Fn=EventGraph -Pins -Exec. Ils sont en lecture seule. Résultat dansMAPDL1-L4-CART-01.md.
5. Fichiers
À commiter (ticket du lot ; aucun fichier partagé) :
- A
Source/LifePlayEditorTools/LPImportLegacyStreetMapCommandlet.h - A
Source/LifePlayEditorTools/LPImportLegacyStreetMapCommandlet.cpp - A
Docs/Migration/etat/REL/MAPDL1/:MAPDL1-CART-01.md,MAPDL1-SPEC-01.md,MAPDL1-SPEC-02.md,MAPDL1-SPEC-03.md,MAPDL1-L1-CART-02.md,MAPDL1-L2-RECH-01.md,MAPDL1-P1-IMPL.md,MAPDL1-P1-BUILD.md,MAPDL1-P1-BUILD-02.md,MAPDL1-L4-CART-01.md,MAPDL1-JOURNAL-BROUILLON.md
Hors git :
Content/Heavy/StreetMap/_Pilot/MAPDL1_ParisLegacy.uasset(pilote) ;Saved/MAPDL1/lire_streetmap_ue4.py;D:\Game\LifePlay_Data\Mega-essai\(extraits et rapports) ;- résumés
.txtdansetat\REL\MAPDL1\etetat\MAPDL1\, non suivis par git.
Retour arrière : .\Tools\Restore.ps1 -Lot MAPDL1 -WhatIf, puis sans -WhatIf. Il retire les deux sources et le pilote.
6. Compte rendu
- Résultat : réussi. Le commandlet est compilé, le pilote Paris écrit et relu, avec des comptes identiques à la référence.
- Tours : ≈ 22 pour P1 (déclaré ;
FicheStats.pyfait foi). - À verser :
lp-commandlets§ Cartes de villes : ajouterLPImportLegacyStreetMap(-Uasset= [-Uexp=] (-DryRun | -Package=) [-Report=], reprise d'une carte « NEW Maps » UE4 cuite) ;lp-commandlets: avecRunCommandlet.ps1, passer-Argspar une variable dans la même session pwsh ($a = '-Uasset=…'; & .\Tools\RunCommandlet.ps1 … -Args $a). Parpwsh -File, une valeur qui commence par-est prise pour un paramètre (« Argument manquant pour le paramètre Args ») ;lp-lot:Snapshot.ps1 -Path a, bparpwsh -Fileinscrita,comme chemin. Un chemin par appel, ou-Command.lp-city§ 7 etlp-commandlets§ Cartes de villes : aucun asset de travail ne reste sousContent\entre deux sessions.DirectoriesToAlwaysCookcouvre tout/Game. Un asset de travail sous_Pilot/, absent de la release de base, fait échouer la cuisson des packs (« Uncooked … referenced by DLC »), comme ici avecMAPDL1_ParisLegacy. Il faut l'écrire sous un chemin exclu de la cuisson, ou le retirer, par déplacement, à la fin du lot.
Après coup (Big Boss) : le pilote a été déplacé hors de Content\, vers D:\Game\LifePlay_Backup_5.5\MAPDL1\pilote-hors-content\MAPDL1_ParisLegacy.uasset (MD5 5BCB7785… inchangé). La mention « Hors git : … pilote » du § 5 désigne maintenant ce chemin. Un Restore.ps1 -Lot MAPDL1 n'a plus de pilote à retirer.
- Suite : P2, le pilote du maillage, sur la première ville de la vague 1 (Tokyo) : l'utilisateur télécharge
Tokyo.zip, puisLPBuildCityStatic -CompareStreetMapet la comparaison avec l'ancienStatic. État : P1 clos, jeton UE rendu.