82 lines
6.2 KiB
Markdown
82 lines
6.2 KiB
Markdown
|
|
Fiche STM1-B6 (IMPL O2 + BUILD-FIN, STM1-SPEC-08) — Niveau N3 — Modèle prévu opus medium | utilisé claude-opus-5-5 — Agent session « Medium · STM1 » (pas de sous-agent) — Skills sk-protocol
|
|||
|
|
|
|||
|
|
# STM1-B6 : masquage des maisons génériques posées dans l'eau (O2, option D) (2026-10-20)
|
|||
|
|
|
|||
|
|
Décisions :
|
|||
|
|
- choix de l'utilisateur, tapé dans cette session et cité mot pour mot : « option D » ;
|
|||
|
|
- GO de Big Boss sur SPEC-08 et sur le code sans processus UE ;
|
|||
|
|
- puis GO de jeton UE (après la BUILD-FIN de KEY2). Ordre : CopieEtat, instantané, éditeur, commandlet (`Water/CentralLondon_Mask`, seul asset écrit), Development.
|
|||
|
|
|
|||
|
|
**Résultat : code et builds à 0. Masque écrit (59 centres). Aucun autre asset modifié.** L'essai en jeu reste à faire (build d'essai sur ordre de l'utilisateur).
|
|||
|
|
|
|||
|
|
## 1. Code
|
|||
|
|
|
|||
|
|
| Fichier | État | MD5 avant (instantané `STM1-O2`) | MD5 après | Lignes | Fins de ligne |
|
|||
|
|
|---|---|---|---|---|---|
|
|||
|
|
| `Source/LifePlay/LPCityWaterMask.h` | A | – | `966dc14d525c34c7fd19d0f0b73b8a6d` | 34 | LF (0 CR) |
|
|||
|
|
| `Source/LifePlay/LPCityWaterSubsystem.h` | M | `DEB58EC1…` | `2cdc10018eb1287d7f9e302eee182185` | 72 | LF (0 CR) |
|
|||
|
|
| `Source/LifePlay/LPCityWaterSubsystem.cpp` | M | `EC0946C5…` | `9c0b257ee0ae377146aeda72519330bf` | 323 | LF (0 CR) |
|
|||
|
|
| `Source/LifePlayEditorTools/LPBuildCityWaterCommandlet.cpp` | M | `C5709BDD…` (après O3) ; `69746A35…` avant O3 (instantané `STM1-O3`) | `fa6fbb72cabc0fd73663ef0e86942309` | 731 | LF (0 CR) |
|
|||
|
|
|
|||
|
|
- **`ULPCityWaterMask`** (`UDataAsset`, module `LifePlay`) : `City`, `SourceBuildingCount`, `Centers` (centres de boîte, repère de la carte, cm) et `AreasM2`.
|
|||
|
|
- **Commandlet**, deux options :
|
|||
|
|
- `-ListBuildingsInWater=<f.md> [-ThresholdM2]` (O3) ;
|
|||
|
|
- `-MaskOnly` (O2) : écrit `/Game/Heavy/StreetMap/Water/<Ville>_Mask`. Il ne relit ni ne réécrit le maillage d'eau, refuse d'écraser un masque existant, et ne fait qu'un rapport en `-DryRun`.
|
|||
|
|
- **Sous-système de l'eau** :
|
|||
|
|
- `LoadMask` est appelé à chaque changement de carte ;
|
|||
|
|
- `HideHousesInWater` traite les `UInstancedStaticMeshComponent` de `MapMarkers` dont le maillage commence par `House` ou `Skyscraper`. Les arbres et jeeps ne sont pas touchés ;
|
|||
|
|
- chaque instance est ramenée dans le repère de la carte, puis comparée aux centres du masque (≤ 50 cm, cases de 1 m) ;
|
|||
|
|
- une instance trouvée est mise à l'échelle 0 par `UpdateInstanceTransform`, avec un `MarkRenderStateDirty` par composant ;
|
|||
|
|
- une nouvelle passe a lieu quand le nombre d'instances change ;
|
|||
|
|
- constantes : `SpareAboveAreaM2 = 0` (option D : aucune épargne), `MatchToleranceCm = 50`, `MaskCellCm = 100` ;
|
|||
|
|
- témoin, écrit au changement seulement : `[LPCity] EAU <Ville> : masque n centres ; instances maisons N ; masquees m ; epargnees k (seuil s m2) ; centres sans instance c`.
|
|||
|
|
- Aucun Blueprint, GI, MapMarkers ni carte modifié. Aucune lecture du GI ajoutée.
|
|||
|
|
|
|||
|
|
## 2. Builds et commandlet (jeton UE)
|
|||
|
|
|
|||
|
|
| # | Geste | Résultat | Résumé |
|
|||
|
|
|---|---|---|---|
|
|||
|
|
| 1 | `CopieEtat -Lot STM1` avant | `proc=0` ; alertes GIT attendues (fichiers STM1 et `LPKeyboardSubsystem.cpp` de KEY2) | `STM1-B6-AVANT.json` |
|
|||
|
|
| 2 | Instantané `STM1-O2` : 3 sources, puis `Content\Heavy\StreetMap\Water` (`CentralLondon` `5BDF4F0A`, `M_LP_Water` `D413292C`) | 5 entrées | `LifePlay_Backup_5.5\STM1-O2\manifest.csv` |
|
|||
|
|
| 3 | `Build.ps1 -Lot STM1 -EtatDir <absolu>` (éditeur) | `code=0 duree=52s erreurs=0 avertissements=1 unites=3` | `STM1_Build_20261020-162803.txt` |
|
|||
|
|
| 4 | `LPBuildCityWater … -MaskOnly -DryRun` | `code=0` ; 59 centres ; masque non écrit | `STM1_LPBuildCityWater_20261020-162902.txt` |
|
|||
|
|
| 5 | `LPBuildCityWater … -MaskOnly` | `code=0 duree=21s` ; `asset ecrit : /Game/Heavy/StreetMap/Water/CentralLondon_Mask, 59 centres sur 49425 batiments ; maillage d'eau non touche` | `STM1_LPBuildCityWater_20261020-162935.txt` |
|
|||
|
|
| 6 | `Build.ps1 -Lot STM1 -Target LifePlay -Config Development -EtatDir <absolu>` | `code=0 duree=53s erreurs=0 avertissements=1 unites=2` | `STM1_Build_20261020-163006.txt` |
|
|||
|
|
| 7 | `CopieEtat -Lot STM1` après ; `UeState` | `proc=0 parasites=0 verrou=243:libre` ; `processus=0` | `STM1-B6-APRES.json` |
|
|||
|
|
|
|||
|
|
L'avertissement unique des deux builds est le C4701 de `LPCameraModeSubsystem.cpp(2378)`, fichier du lot CAM2 et antérieur à STM1.
|
|||
|
|
|
|||
|
|
Les sorties des commandlets sont passées par le scratchpad (chemin sans espace, leçon d'O3) ; ce chemin est neutralisé dans les résumés.
|
|||
|
|
|
|||
|
|
## 3. MD5 des assets
|
|||
|
|
|
|||
|
|
| Asset | MD5 | Taille | État |
|
|||
|
|
|---|---|---|---|
|
|||
|
|
| `Content/Heavy/StreetMap/Water/CentralLondon_Mask.uasset` | `F6F684B295B31298F8FB747F4F5946F4` | 2 712 o | **A** (seul fichier écrit dans `Content`, hors git) |
|
|||
|
|
| `Water/CentralLondon.uasset` | `5BDF4F0A6B3E709DAE9EFCFE8BCA2F6E` | 391 602 o | inchangé |
|
|||
|
|
| `Water/M_LP_Water.uasset` | `D413292C80C8C190766AD83ACFE2E418` | 5 717 o | inchangé |
|
|||
|
|
| `BPs/GI` / `BPs/MapMarkers` / `BPs/StreetMap_Static` | `32FC0A97` / `FB72765C` / `B7F20462` | – | inchangés (identiques à B5) |
|
|||
|
|
| `StreetMap/CentralLondon` / `Static/CentralLondon` | `A6C4D9B6` / `FBA15A84` | – | inchangés |
|
|||
|
|
|
|||
|
|
`find Content -newer <début du build éditeur>` ne renvoie que `CentralLondon_Mask.uasset`. `LPKeyboardSubsystem.cpp` (KEY2) vaut toujours `0eb6a592` : non touché.
|
|||
|
|
|
|||
|
|
## 4. Essai en jeu (à faire, sur ordre de l'utilisateur)
|
|||
|
|
|
|||
|
|
Une build d'essai cuite est nécessaire : elle inclut le masque, puisque `/Game` est cuit en entier.
|
|||
|
|
|
|||
|
|
Sur la carte de Londres, en mode par défaut :
|
|||
|
|
- plus aucune maison générique sur la Tamise (59 bâtiments visés) ;
|
|||
|
|
- ponts, jeeps, arbres et quais intacts ;
|
|||
|
|
- une ligne `[LPCity] EAU CentralLondon : masque 59 centres ; … masquees ≈ 59 ; epargnees 0 (seuil 0 m2) ; centres sans instance ≈ 0`.
|
|||
|
|
|
|||
|
|
Si le nombre de centres sans instance est élevé, le repère des instances diffère de celui de la carte : à diagnostiquer avant toute retouche.
|
|||
|
|
|
|||
|
|
## 5. Fichiers
|
|||
|
|
|
|||
|
|
- Projet : `LPCityWaterMask.h` (A) ; `LPCityWaterSubsystem.h` et `.cpp` (M) ; `LPBuildCityWaterCommandlet.cpp` (M).
|
|||
|
|
- Hors git : `Content/Heavy/StreetMap/Water/CentralLondon_Mask.uasset` (A).
|
|||
|
|
- Livrables : `STM1-SPEC-08.md`, `STM1-B6-FIN.md`, `STM1-B6-AVANT.json`, `STM1-B6-APRES.json`, résumés de build et de commandlet ci-dessus.
|
|||
|
|
- CHG : à réserver (brouillon).
|
|||
|
|
|
|||
|
|
État : O2 implémenté et compilé, jeton UE rendu ; essai en jeu en attente.
|