91 lines
6.5 KiB
Markdown
91 lines
6.5 KiB
Markdown
|
|
Fiche MAPDL1-S7-IMPL — Niveau N3 — Modèle prévu sonnet — Agent lp-impl — Skills sk-protocol, lp-city, lp-lot, lp-commandlets
|
||
|
|
|
||
|
|
# MAPDL1-S7 : données ODbL et LICENCE.txt dans la chaîne des anciennes cartes (SPEC-07) (fiche préparée le 2026-10-22, à lancer au signal de Big Boss)
|
||
|
|
|
||
|
|
## 1. Objectif
|
||
|
|
|
||
|
|
Les packs repris d'une ancienne carte doivent livrer, en version 1.0.2 :
|
||
|
|
- `Module\ODbL\<Ville>.geojson` : les données de l'ancienne carte, en GeoJSON en coordonnées locales ;
|
||
|
|
- `Module\ODbL\ODbL.txt` ;
|
||
|
|
- `Module\LICENCE.txt`.
|
||
|
|
|
||
|
|
Ces fichiers sont produits par la chaîne existante, sans geste à la main. L'outil prépare aussi la recette 1.0.2 du lot 2 (NYC, Mumbai, Tokyo, Bangalore), produit demain.
|
||
|
|
|
||
|
|
## 2. Décisions citées
|
||
|
|
|
||
|
|
- Utilisateur, cité mot pour mot par Big Boss : « approuvés ». C'est sa réponse à SPEC-07 § 7 (GeoJSON en coordonnées locales ; `ODbL.txt` au texte proposé ; lot 2 directement en 1.0.2) et au texte de licence des packs.
|
||
|
|
- Texte de `LICENCE.txt`, cité tel quel, à recopier **à l'identique** : « Free pack for LifePlay. Personal use. You may not sell this pack or charge for access to it. You may share it unmodified and free of charge. Third-party content keeps its own licence (OpenStreetMap data: ODbL 1.0; models: see CREDITS.txt). »
|
||
|
|
- Spécification : `MAPDL1-SPEC-07.md` (§ 2 à 4). Elle fait foi pour le format et le texte d'`ODbL.txt`.
|
||
|
|
|
||
|
|
## 3. Périmètre : fichiers, et seulement ceux-là
|
||
|
|
|
||
|
|
Tous sont des outils locaux de `Tools\`, **liés physiquement** à `D:\Game\LifePlay-Sandbox-5.8\Tools\`.
|
||
|
|
|
||
|
|
| Fichier | MD5 avant (2026-10-22) |
|
||
|
|
|---|---|
|
||
|
|
| `Tools\LireCarteUE4.py` | `6BA579413D32AC23128C28980EF0308F` |
|
||
|
|
| `Tools\RepriseCarte.ps1` | `2042423AE3F52D1E928E831D021F2077` |
|
||
|
|
| `Tools\RecetteCarte.ps1` | `DF48FF7495741B376DEB2050853DD732` |
|
||
|
|
|
||
|
|
**Hors périmètre** :
|
||
|
|
- `ProduirePack.ps1` (STM1) : son étape `poser` suffit (l. 340-366) ;
|
||
|
|
- `Source\`, `Content\`, l'index et la fenêtre du jeu : ils passent dans l'IMPL SPEC-06, pour COM32.
|
||
|
|
|
||
|
|
## 4. Travail
|
||
|
|
|
||
|
|
1. **`LireCarteUE4.py`** : deux options, `--geojson <fichier>` et `--odbl <dossier>`, à partir des dictionnaires déjà décodés par `--totaux` (l. 228-254).
|
||
|
|
- Format de SPEC-07 § 2 :
|
||
|
|
- `FeatureCollection`, avec les membres `lifeplay_crs` et `lifeplay_source` ;
|
||
|
|
- routes en `LineString` ; bâtiments, parcs et eaux en `Polygon` à anneau fermé ;
|
||
|
|
- coordonnées en mètres, arrondies au centimètre ;
|
||
|
|
- valeurs vides omises ;
|
||
|
|
- UTF-8 sans BOM, fins de ligne LF, `ensure_ascii=False`.
|
||
|
|
- `--odbl` écrit `ODbL.txt` d'après le gabarit de SPEC-07 § 3, en ASCII, avec des fins de ligne **CRLF**, comme `CREDITS.txt`.
|
||
|
|
- Ligne de sortie : `GEOJSON routes=<n> batiments=<n> parcs=<n> eaux=<n> octets=<n>`. Les comptes doivent égaler la ligne `TOTAUX` ; sinon, code 1.
|
||
|
|
2. **`RepriseCarte.ps1`** : nouvelle étape `-Etape ODbL`, sans moteur.
|
||
|
|
- Elle lit l'ancienne carte du dossier de travail de `Lire` (`D:\Game\LifePlay_Data\Mega-essai\MAPDL1-<ville>\`).
|
||
|
|
- Elle écrit `ODbL\<Ville>.geojson` et `ODbL\ODbL.txt` dans ce dossier de travail, et nulle part dans le pack.
|
||
|
|
- Elle imprime le SHA-256 des deux fichiers, pour la recette.
|
||
|
|
- Si le dossier `ODbL\` existe déjà, elle refuse.
|
||
|
|
- Elle accepte `-ABlanc`.
|
||
|
|
3. **`RecetteCarte.ps1`** : pour la version 1.0.2 (paramètre de version existant ou ajouté), la recette reçoit, après `version` et avant `demonter`, trois étapes `poser` et une étape `remplacer` :
|
||
|
|
- `poser` de `${Monte}\Module\ODbL\<Ville>.geojson` et de `${Monte}\Module\ODbL\ODbL.txt`, depuis le dossier de travail, avec le `sha256` de l'étape 2 ;
|
||
|
|
- `poser` de `${Monte}\Module\LICENCE.txt` par `texte` (le texte du § 2 ; `poser` écrit en CRLF) ;
|
||
|
|
- `remplacer` dans `CREDITS.txt` : ajout de la ligne `From version 1.0.2: the map data is included in ODbL/<Ville>.geojson (ODbL 1.0, see ODbL/ODbL.txt); licence of this pack: LICENCE.txt.` Même forme que la ligne de la 1.0.1 ; dans le même appel pour les packs qui reçoivent aussi la 3D classique ;
|
||
|
|
- contrôles de l'archive :
|
||
|
|
- `fichiers installes` passe de 6 à **9** ;
|
||
|
|
- fourchette d'octets = fourchette actuelle + l'apport du GeoJSON compressé, avec un taux **mesuré à l'étape 5** (et non deviné) ;
|
||
|
|
- les packs encore en 1.0.0 (lot 2) reçoivent aussi l'étape `classique` de la 1.0.1 : la 1.0.2 contient la 3D classique et l'ODbL.
|
||
|
|
4. **Instantané** avant toute écriture : `Snapshot.ps1 -Lot MAPDL1-S7 -Path Tools\LireCarteUE4.py, Tools\RepriseCarte.ps1, Tools\RecetteCarte.ps1`.
|
||
|
|
**Écriture EN PLACE** : l'outil Edit et l'outil Write rompent le lien physique avec l'addon.
|
||
|
|
- Rédiger le nouveau fichier dans le scratchpad.
|
||
|
|
- Le recopier par `[IO.File]::WriteAllBytes(<fichier de Tools>, [IO.File]::ReadAllBytes(<scratchpad>))`, qui tronque le même fichier sans le remplacer.
|
||
|
|
- Relire `fsutil hardlink list <fichier>` : 2 liens attendus. Relire aussi le MD5 côté jeu et côté addon : ils doivent être égaux.
|
||
|
|
5. **Essais, sans jeton**, dans des dossiers de travail neufs : jamais dans `ModSources\`, ni dans `Mods\`.
|
||
|
|
- `LireCarteUE4.py --totaux --geojson --odbl` sur **Tokyo** (la plus grande : 18 340 routes, 129 240 bâtiments) et sur **Manila**.
|
||
|
|
- Relever pour chacune : comptes `GEOJSON` contre `TOTAUX` ; taille en clair ; taille dans un zip, mesurée avec 7-Zip ou `System.IO.Compression` dans le scratchpad, d'où le taux de compression ; validité JSON (`python -I -c` interdit : un script ponctuel dans `Saved\MAPDL1\` ou `json.load` dans l'outil même).
|
||
|
|
- `RepriseCarte.ps1 -Etape ODbL -ABlanc` sur une ville, puis `RecetteCarte.ps1` à blanc pour NYC 1.0.2. Relire la recette produite.
|
||
|
|
|
||
|
|
## 5. Critères de fin
|
||
|
|
|
||
|
|
- Les 3 outils sont écrits en place : liens gardés, ASCII, LF ; MD5 relevés avant et après, des deux côtés.
|
||
|
|
- Tokyo et Manila : comptes `GEOJSON` = `TOTAUX` ; JSON valide ; tailles et taux de compression mesurés.
|
||
|
|
- La recette NYC 1.0.2 est produite à blanc, avec les étapes du § 4.3, et relue.
|
||
|
|
- Rien n'est écrit dans `ModSources\`, `Mods\`, `Source\` ni `Content\`.
|
||
|
|
|
||
|
|
## 6. Interdits
|
||
|
|
|
||
|
|
Les règles de `sk-protocol` § 2 s'appliquent : aucune commande git qui écrit ; aucune suppression ; aucun jeton UE (ni cuisson, ni commandlet) ; aucun réseau.
|
||
|
|
|
||
|
|
## 7. Livrable
|
||
|
|
|
||
|
|
`D:\Game\LifePlay-master 5.8\Docs\Migration\etat\REL\MAPDL1\MAPDL1-S7-IMPL.md` (en-tête de fiche, MD5, sorties brutes des essais, recette à blanc, mesures, fichiers). PubCheck à 0.
|
||
|
|
|
||
|
|
## 8. Suite
|
||
|
|
|
||
|
|
Lot 2 en 1.0.2 (demain) : Big Boss lance `ProduireCartes.ps1` avec `lp-builder` en haiku, sous jeton. Les 10 villes déjà produites passent ensuite en 1.0.2, au rythme des lots.
|
||
|
|
|
||
|
|
## 9. Budget
|
||
|
|
|
||
|
|
40 tours.
|