L7a valide en jeu : partie d'1 h sans plantage, pas de regression imputable
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
093331b77f
commit
5739f3f4a5
4 changed files with 233 additions and 225 deletions
|
|
@ -1,162 +1,162 @@
|
|||
# 04 — Cahier des charges : migration itérative par lots bornés
|
||||
|
||||
> Méthode : développement itératif. Chaque lot tient dans **une session IA** (≈ 2 à 3 h), a **un
|
||||
> objectif mesurable**, des **tests d'entrée et de sortie** (catalogue : `03_Plan_Migration_Tests.md`)
|
||||
> et une **procédure de retour arrière**. Un lot ne commence qu'après validation du précédent.
|
||||
|
||||
---
|
||||
|
||||
## 1. Exigences
|
||||
|
||||
### 1.1 V1 — « compile, fonctionne, ne plante pas, journal exploitable »
|
||||
|
||||
| ID | Exigence | Test d'acceptation |
|
||||
|---|---|---|
|
||||
| EX-01 | L'éditeur `LifePlayEditor Win64 Development` compile sans erreur | T-BUILD-01 |
|
||||
| EX-02 | Tous les Blueprints se chargent et se compilent | T-LOAD-01, T-LOAD-02 |
|
||||
| EX-03 | Tous les packages sont au format UE5 | T-STAT-01 |
|
||||
| EX-04 | Les données `Modules` sont intactes et chargées comme en 4.27 | T-STAT-02, T-RUN-01 |
|
||||
| EX-05 | Une build Development empaquetée démarre, génère des personnages distincts et visibles, joue une scène, sauvegarde et recharge | T-RUN-02 à T-RUN-04 |
|
||||
| EX-06 | Aucun plantage sur une session de 30 minutes | T-RUN-05 |
|
||||
| EX-07 | Journal efficace : catégorie `LogLifePlay`, résumé de démarrage, erreurs répétitives plafonnées, instrumentation de portage retirée du niveau par défaut | T-LOG-01 |
|
||||
| EX-08 | Toute modification est tracée et réversible | T-STAT-05 ; essai réel de `Restore.ps1` |
|
||||
| EX-09 | Environnement de développement et référence 4.27 préservés | T-STAT-03, T-STAT-04 |
|
||||
|
||||
Hors V1, tolérés et inscrits au registre : visuel dégradé (éclairage précalculé, brouillard),
|
||||
avertissements cosmétiques du moteur, dette R-03/R-07, rendu Cascade.
|
||||
|
||||
### 1.2 V2 et suivantes — corrections par lots soutenables
|
||||
|
||||
Traitement du `Registre_Erreurs.md` **par ordre de fréquence × gravité**, un lot par famille
|
||||
(≤ 30 assets ou une commandlet), avec non-régression complète des tests V1.
|
||||
|
||||
## 2. Règles de conduite d'un lot
|
||||
|
||||
1. **Entrée** : tests de sortie du lot précédent au vert ; `git status` propre.
|
||||
2. `git tag lot-XX-avant`.
|
||||
3. `Tools\Snapshot.ps1 -Lot XX -Path <tous les fichiers visés>` (y compris hors git, ex. `Content/Heavy`).
|
||||
4. Modification. Toute commandlet de correction est d'abord lancée en `-DryRun`, rapport archivé
|
||||
dans `Docs/Migration/etat/`.
|
||||
5. Tests de sortie.
|
||||
6. Vert → entrée `CHG` au journal, commit, `git tag lot-XX-apres`.
|
||||
Rouge → `Tools\Restore.ps1 -Lot XX` (ou `git checkout lot-XX-avant -- …`), entrée `CHG` d'annulation,
|
||||
défaut inscrit au registre.
|
||||
7. Un lot qui dépasse la session est **coupé** : ce qui est validé est commité, le reste redevient
|
||||
un lot à part.
|
||||
|
||||
## 3. Lots
|
||||
|
||||
### L0 — Filet de sécurité et documentation ✅ (2026-09-29)
|
||||
- **Objectif** : pouvoir tout annuler et savoir ce qu'on migre.
|
||||
- **Livrables** : documents 01 à 04, journal, registre ; dépôt git local (tag `lot-L0-base`) ;
|
||||
`Tools/` (Snapshot, Restore, AssetHeaders, CheckIntegrity, LogStats) ; empreintes L0 ; sauvegarde
|
||||
`D:\Game\LifePlay_Backup_5.5\L0` (53 fichiers).
|
||||
- **Sortie** : aller-retour `Snapshot`/`Restore` vérifié par MD5 ; T-STAT-02 à 04 au vert.
|
||||
|
||||
### L1 — Base saine ✅ (2026-09-29)
|
||||
- **Objectif** : repartir d'un contenu de gameplay **connu et sain** (décisions D-01, D-02) et
|
||||
mesurer ce que le moteur 5.5 en dit, sans aucun correctif.
|
||||
- **Périmètre réalisé** :
|
||||
1. `Content/{BPs,UI,Structs,Scenes,Render,Characters}` (385 fichiers) remis **à l'identique de
|
||||
4.27** (MD5 vérifiés). Tous les correctifs de contenu antérieurs sont ainsi retirés, R-03 et
|
||||
R-04 compris. `Content/Heavy` (resave moteur seul, sans correctif) est conservé et sera
|
||||
contrôlé en L4.
|
||||
2. Correctifs isolés : catalogue et protocole de réimport dans `05_Correctifs_Isoles.md` ;
|
||||
écarts de code 4.27 → 5.5 exportés dans `correctifs/P01…P06.patch`.
|
||||
3. Diagnostic brut de la base : `LPCheckMeshAssignment` et `CompileAllBlueprints`
|
||||
(`etat/L1_*.txt`).
|
||||
- **Écarté du lot** : suppression des sections `AndroidFileServerRuntimeSettings` / `CookerSettings`
|
||||
de `DefaultEngine.ini` : le plugin moteur AndroidFileServer la **recrée à chaque lancement**
|
||||
(nouveau `SecurityToken`). Traitement correct en L2 : désactiver ce plugin dans le `.uproject`.
|
||||
`DefaultEditor.ini` conservé (profils de prévisualisation réécrits par l'éditeur).
|
||||
- **Déplacé en L2** : purge des dossiers régénérables (`Binaries`, `Intermediate` sont
|
||||
nécessaires aux commandlets tant que la reconstruction n'est pas faite).
|
||||
- **Sortie** : contenu de gameplay = 4.27 (MD5) ; relevé de base archivé ; T-STAT-02 à 05.
|
||||
T-STAT-01 (0 package UE4) est **reporté** au sous-lot `L4-CX-B07` (resave contrôlé).
|
||||
- **Retour** : `Tools\Restore.ps1 -Lot L1` ou `git checkout lot-L1-avant -- Content`.
|
||||
|
||||
### L2 — Compilation propre ✅ (2026-09-29)
|
||||
- **Objectif** : binaires reconstruits à partir de zéro, projet conforme UE5.
|
||||
- **Périmètre** : `.uproject` (`TargetPlatforms: ["Windows"]`, section `Plugins` explicite :
|
||||
`ModdingExtra`, `StreetMap`, `EnhancedInput`, `McpAutomationBridge` limité à l'éditeur,
|
||||
`AndroidFileServer` désactivé puis retrait de sa section dans `DefaultEngine.ini`) ;
|
||||
retrait de `Build/WindowsNoEditor` et `Build/LinuxNoEditor` ; mise de côté (déplacement vers
|
||||
`D:\Game\LifePlay_Backup_5.5\L2\_purge`, pas de suppression) de `Binaries`, `Intermediate`,
|
||||
`Plugins/*/Binaries`, `Plugins/*/Intermediate`, `Saved/Cooked`, `Saved/StagedBuilds` ;
|
||||
régénération des fichiers de projet ; compilation éditeur et jeu.
|
||||
- **Sortie** : T-BUILD-01, T-BUILD-02, T-LOAD-04.
|
||||
|
||||
### L3 — Journalisation efficace ✅ (2026-09-29)
|
||||
- **Objectif** : un journal qui sert au diagnostic.
|
||||
- **Périmètre** :
|
||||
- `Source/LifePlay` : catégorie `LogLifePlay` déclarée dans le module ; résumé de démarrage
|
||||
(version du jeu et du moteur, modules activés, nombre de fichiers par type, échecs `LoadTxt`) ;
|
||||
- `ModdingExtra` : `LogLPModdingTrace` ramené en `Verbose` (activable par
|
||||
`-LogCmds="LogLPModdingTrace Verbose"`) ; échec de `LoadTxt` journalisé en `Warning` une seule
|
||||
fois par fichier ;
|
||||
- `DefaultEngine.ini` `[Core.Log]` : niveaux par catégorie ; plafonnement des `LogScript`
|
||||
répétitifs.
|
||||
- **Sortie** : T-BUILD-01, T-LOG-01 ; A/B : mêmes comptes `GetAllFilesFromFolder` qu'avant.
|
||||
|
||||
### L4 — Réimport contrôlé des correctifs, chargement stable ✅ (2026-09-30)
|
||||
> Clôture : CX-B01 à B04, B08 et B07 réimportés ; A/B d'exécution faits par les parties utilisateur (L5d, L6a, V1rc) ;
|
||||
> cuisson 0 erreur (T-LOAD-05) ; 8563/8563 paquets UE5 (T-STAT-01). Le contrôle StreetMap 4.27/5.5 est reporté en L7h
|
||||
> (aucun défaut visible de carte signalé en jeu).
|
||||
> État au 2026-09-29 : CX-B01, CX-B02 (essai 2), CX-B03, CX-B04 réimportés et validés statiquement ;
|
||||
> T-LOAD-01 (0 erreur) et T-LOAD-02 (0 broche orpheline) au vert. Restent : A/B d'exécution de
|
||||
> CX-B01 sur build Development, CX-B07 (resave UE5), contrôle StreetMap 4.27/5.5, T-LOAD-05 (cuisson).
|
||||
- **Objectif** : 0 erreur de chargement et de compilation des Blueprints, cuisson à 0 erreur.
|
||||
- **Périmètre** : un sous-lot par correctif, dans l'ordre de `05_Correctifs_Isoles.md` §2, selon
|
||||
le protocole §3 (photographie avant/après, `-DryRun`, diff, compilation, A/B si gameplay) :
|
||||
`L4-CX-B01` (broches AssetRegistry de `GI`, **avec A/B d'exécution**), `L4-CX-B02`
|
||||
(`EditableTextBoxStyle`), `L4-CX-B03` (mur à échelle nulle), `L4-CX-B04` (événements orphelins),
|
||||
`L4-CX-B07` (resave UE5 des dossiers de gameplay) ; contrôle StreetMap (`LPCheckStreetMap` sur
|
||||
4.27 **et** 5.5, comparaison des CSV).
|
||||
- **Sortie** : T-LOAD-01 à T-LOAD-05, T-STAT-01.
|
||||
|
||||
### L5 — Données et personnages ✅ (2026-09-30)
|
||||
> ERR-027/ERR-002 clos par CX-B08 (`ParseIntoArray` UE5), validé en jeu (build L5d).
|
||||
- **Objectif** : `generatePerson()` sans argument produit des personnages distincts et habillés.
|
||||
- **Périmètre** :
|
||||
1. `LPDumpFunction` dans les deux versions sur `GeneratePerson`, `determinePersonVars`,
|
||||
`ChooseNPCBodyShape`, `DefaultDistributionIfNeeded`, `SpawnDummy`, `GenerateAndApplyStrings`,
|
||||
`ReturnStatIfNeeded` ; diff archivé.
|
||||
2. Instrumenter l'**écriture** des variables DSL (`AddVariable`, `SetVariable`) : piste
|
||||
`Variable.uasset` / LWC.
|
||||
3. Correction minimale, puis inconnues de `01_Architecture_Initiale.md` §7.
|
||||
- **Sortie** : T-RUN-01 à T-RUN-03 sur build Development, A/B avec la référence 4.27.
|
||||
|
||||
### L6 — Session complète → **V1** ✅ (2026-09-30, étiquette `v1.0`)
|
||||
> Lots L6a (TAA, ERR-032), L6e (marges des boutons, ERR-034), L6f (ERR-031 préexistant en 4.27, hors périmètre).
|
||||
> Validation finale : build `LifePlay_Build_5.5_V1rc` (= L4-CX-B07), partie utilisateur d'environ 2 h, 339 personnages,
|
||||
> 0 plantage, sortie normale, sauvegardes `1.sav`/`2.sav` ; « pas de souci majeur constaté ». EX-01 à EX-09 au vert
|
||||
> (tableau dans `Journal_Modifications.md`, section V1).
|
||||
- **Objectif** : EX-01 à EX-09 au vert.
|
||||
- **Périmètre** : build Development `D:\Game\LifePlay_Build_5.5_V1` ; scénario T-RUN-04 ;
|
||||
session de 30 min ; tri du registre ; étiquette `v1.0`.
|
||||
- **Sortie** : tous les tests V1.
|
||||
|
||||
### L7+ — Lots post-V1 (un par famille)
|
||||
Ordre indicatif, à réviser selon le registre :
|
||||
|
||||
| Lot | Famille | Périmètre |
|
||||
|---|---|---|
|
||||
| L7a | R-03 refait correctement | ✅ outil et réimport faits (CX-B10, 56 nœuds, 8 Blueprints) ; validation en jeu en attente |
|
||||
| L7b | Erreurs d'exécution fréquentes | `ParseIntoArray`, `getBeautyValue`, `standIdle`, `ContactMenu` |
|
||||
| L7c | Configuration | clés de nativisation, rendu 5.5 explicite (GI, ombres, RHI) |
|
||||
| L7d | Visuel | AtmosphericFog → SkyAtmosphere ; reconstruction de l'éclairage |
|
||||
| L7e | Effets | 4 systèmes Cascade → Niagara (si nécessaire) ; NvCloth → Chaos |
|
||||
| L7f | Entrées | Enhanced Input (R-07), avec test manuel des 34 commandes |
|
||||
| L7g | Packaging | build Shipping ; exclusion de `McpAutomationBridge` |
|
||||
| L7h | Vérification StreetMap | `LPCheckStreetMap` sur 4.27 et 5.5, comparaison des CSV (ERR-018) |
|
||||
| L7i | Variables DSL `Person` vides | ERR-030/ERR-003 : `GI::Dress` par rafales (0 à 284 par personnage selon les lieux), `ReturnStatIfNeeded` ; traceur par fonction |
|
||||
| L7j | Écran secondaire (amélioration) | ERR-031, préexistant en 4.27 : caméra `SecondScreen` sans racine ; seulement si souhaité |
|
||||
|
||||
## 4. Décisions
|
||||
|
||||
| ID | Question | Recommandation | Statut |
|
||||
|---|---|---|---|
|
||||
| D-01 | Base de reconstruction de `GI` | **Décidé (utilisateur, 2026-09-29)** : les correctifs antérieurs sont douteux (ni suivis ni testés). On repart d'une base saine — le contenu de gameplay 4.27 — et on **isole** les correctifs pour les réimporter un par un avec un contrôle renforcé (`05_Correctifs_Isoles.md`) | acquis (L1) |
|
||||
| D-02 | R-03/R-04 présents sur `AI`, `Room` et 7 widgets, annulés sur `Person` et `GI` | **Décidé (utilisateur)** : tout annuler maintenant — réalisé par le retour à la base 4.27 | acquis (L1) |
|
||||
| D-03 | Mesure d'exécution | builds empaquetées Development uniquement (règle §2 du document 03) | acquis |
|
||||
| D-04 | Suivi de version | dépôt git local, Blueprints de gameplay inclus, `Content/Heavy` exclu (sauvegardes par lot) | acquis (L0) |
|
||||
# 04 — Cahier des charges : migration itérative par lots bornés
|
||||
|
||||
> Méthode : développement itératif. Chaque lot tient dans **une session IA** (≈ 2 à 3 h), a **un
|
||||
> objectif mesurable**, des **tests d'entrée et de sortie** (catalogue : `03_Plan_Migration_Tests.md`)
|
||||
> et une **procédure de retour arrière**. Un lot ne commence qu'après validation du précédent.
|
||||
|
||||
---
|
||||
|
||||
## 1. Exigences
|
||||
|
||||
### 1.1 V1 — « compile, fonctionne, ne plante pas, journal exploitable »
|
||||
|
||||
| ID | Exigence | Test d'acceptation |
|
||||
|---|---|---|
|
||||
| EX-01 | L'éditeur `LifePlayEditor Win64 Development` compile sans erreur | T-BUILD-01 |
|
||||
| EX-02 | Tous les Blueprints se chargent et se compilent | T-LOAD-01, T-LOAD-02 |
|
||||
| EX-03 | Tous les packages sont au format UE5 | T-STAT-01 |
|
||||
| EX-04 | Les données `Modules` sont intactes et chargées comme en 4.27 | T-STAT-02, T-RUN-01 |
|
||||
| EX-05 | Une build Development empaquetée démarre, génère des personnages distincts et visibles, joue une scène, sauvegarde et recharge | T-RUN-02 à T-RUN-04 |
|
||||
| EX-06 | Aucun plantage sur une session de 30 minutes | T-RUN-05 |
|
||||
| EX-07 | Journal efficace : catégorie `LogLifePlay`, résumé de démarrage, erreurs répétitives plafonnées, instrumentation de portage retirée du niveau par défaut | T-LOG-01 |
|
||||
| EX-08 | Toute modification est tracée et réversible | T-STAT-05 ; essai réel de `Restore.ps1` |
|
||||
| EX-09 | Environnement de développement et référence 4.27 préservés | T-STAT-03, T-STAT-04 |
|
||||
|
||||
Hors V1, tolérés et inscrits au registre : visuel dégradé (éclairage précalculé, brouillard),
|
||||
avertissements cosmétiques du moteur, dette R-03/R-07, rendu Cascade.
|
||||
|
||||
### 1.2 V2 et suivantes — corrections par lots soutenables
|
||||
|
||||
Traitement du `Registre_Erreurs.md` **par ordre de fréquence × gravité**, un lot par famille
|
||||
(≤ 30 assets ou une commandlet), avec non-régression complète des tests V1.
|
||||
|
||||
## 2. Règles de conduite d'un lot
|
||||
|
||||
1. **Entrée** : tests de sortie du lot précédent au vert ; `git status` propre.
|
||||
2. `git tag lot-XX-avant`.
|
||||
3. `Tools\Snapshot.ps1 -Lot XX -Path <tous les fichiers visés>` (y compris hors git, ex. `Content/Heavy`).
|
||||
4. Modification. Toute commandlet de correction est d'abord lancée en `-DryRun`, rapport archivé
|
||||
dans `Docs/Migration/etat/`.
|
||||
5. Tests de sortie.
|
||||
6. Vert → entrée `CHG` au journal, commit, `git tag lot-XX-apres`.
|
||||
Rouge → `Tools\Restore.ps1 -Lot XX` (ou `git checkout lot-XX-avant -- …`), entrée `CHG` d'annulation,
|
||||
défaut inscrit au registre.
|
||||
7. Un lot qui dépasse la session est **coupé** : ce qui est validé est commité, le reste redevient
|
||||
un lot à part.
|
||||
|
||||
## 3. Lots
|
||||
|
||||
### L0 — Filet de sécurité et documentation ✅ (2026-09-29)
|
||||
- **Objectif** : pouvoir tout annuler et savoir ce qu'on migre.
|
||||
- **Livrables** : documents 01 à 04, journal, registre ; dépôt git local (tag `lot-L0-base`) ;
|
||||
`Tools/` (Snapshot, Restore, AssetHeaders, CheckIntegrity, LogStats) ; empreintes L0 ; sauvegarde
|
||||
`D:\Game\LifePlay_Backup_5.5\L0` (53 fichiers).
|
||||
- **Sortie** : aller-retour `Snapshot`/`Restore` vérifié par MD5 ; T-STAT-02 à 04 au vert.
|
||||
|
||||
### L1 — Base saine ✅ (2026-09-29)
|
||||
- **Objectif** : repartir d'un contenu de gameplay **connu et sain** (décisions D-01, D-02) et
|
||||
mesurer ce que le moteur 5.5 en dit, sans aucun correctif.
|
||||
- **Périmètre réalisé** :
|
||||
1. `Content/{BPs,UI,Structs,Scenes,Render,Characters}` (385 fichiers) remis **à l'identique de
|
||||
4.27** (MD5 vérifiés). Tous les correctifs de contenu antérieurs sont ainsi retirés, R-03 et
|
||||
R-04 compris. `Content/Heavy` (resave moteur seul, sans correctif) est conservé et sera
|
||||
contrôlé en L4.
|
||||
2. Correctifs isolés : catalogue et protocole de réimport dans `05_Correctifs_Isoles.md` ;
|
||||
écarts de code 4.27 → 5.5 exportés dans `correctifs/P01…P06.patch`.
|
||||
3. Diagnostic brut de la base : `LPCheckMeshAssignment` et `CompileAllBlueprints`
|
||||
(`etat/L1_*.txt`).
|
||||
- **Écarté du lot** : suppression des sections `AndroidFileServerRuntimeSettings` / `CookerSettings`
|
||||
de `DefaultEngine.ini` : le plugin moteur AndroidFileServer la **recrée à chaque lancement**
|
||||
(nouveau `SecurityToken`). Traitement correct en L2 : désactiver ce plugin dans le `.uproject`.
|
||||
`DefaultEditor.ini` conservé (profils de prévisualisation réécrits par l'éditeur).
|
||||
- **Déplacé en L2** : purge des dossiers régénérables (`Binaries`, `Intermediate` sont
|
||||
nécessaires aux commandlets tant que la reconstruction n'est pas faite).
|
||||
- **Sortie** : contenu de gameplay = 4.27 (MD5) ; relevé de base archivé ; T-STAT-02 à 05.
|
||||
T-STAT-01 (0 package UE4) est **reporté** au sous-lot `L4-CX-B07` (resave contrôlé).
|
||||
- **Retour** : `Tools\Restore.ps1 -Lot L1` ou `git checkout lot-L1-avant -- Content`.
|
||||
|
||||
### L2 — Compilation propre ✅ (2026-09-29)
|
||||
- **Objectif** : binaires reconstruits à partir de zéro, projet conforme UE5.
|
||||
- **Périmètre** : `.uproject` (`TargetPlatforms: ["Windows"]`, section `Plugins` explicite :
|
||||
`ModdingExtra`, `StreetMap`, `EnhancedInput`, `McpAutomationBridge` limité à l'éditeur,
|
||||
`AndroidFileServer` désactivé puis retrait de sa section dans `DefaultEngine.ini`) ;
|
||||
retrait de `Build/WindowsNoEditor` et `Build/LinuxNoEditor` ; mise de côté (déplacement vers
|
||||
`D:\Game\LifePlay_Backup_5.5\L2\_purge`, pas de suppression) de `Binaries`, `Intermediate`,
|
||||
`Plugins/*/Binaries`, `Plugins/*/Intermediate`, `Saved/Cooked`, `Saved/StagedBuilds` ;
|
||||
régénération des fichiers de projet ; compilation éditeur et jeu.
|
||||
- **Sortie** : T-BUILD-01, T-BUILD-02, T-LOAD-04.
|
||||
|
||||
### L3 — Journalisation efficace ✅ (2026-09-29)
|
||||
- **Objectif** : un journal qui sert au diagnostic.
|
||||
- **Périmètre** :
|
||||
- `Source/LifePlay` : catégorie `LogLifePlay` déclarée dans le module ; résumé de démarrage
|
||||
(version du jeu et du moteur, modules activés, nombre de fichiers par type, échecs `LoadTxt`) ;
|
||||
- `ModdingExtra` : `LogLPModdingTrace` ramené en `Verbose` (activable par
|
||||
`-LogCmds="LogLPModdingTrace Verbose"`) ; échec de `LoadTxt` journalisé en `Warning` une seule
|
||||
fois par fichier ;
|
||||
- `DefaultEngine.ini` `[Core.Log]` : niveaux par catégorie ; plafonnement des `LogScript`
|
||||
répétitifs.
|
||||
- **Sortie** : T-BUILD-01, T-LOG-01 ; A/B : mêmes comptes `GetAllFilesFromFolder` qu'avant.
|
||||
|
||||
### L4 — Réimport contrôlé des correctifs, chargement stable ✅ (2026-09-30)
|
||||
> Clôture : CX-B01 à B04, B08 et B07 réimportés ; A/B d'exécution faits par les parties utilisateur (L5d, L6a, V1rc) ;
|
||||
> cuisson 0 erreur (T-LOAD-05) ; 8563/8563 paquets UE5 (T-STAT-01). Le contrôle StreetMap 4.27/5.5 est reporté en L7h
|
||||
> (aucun défaut visible de carte signalé en jeu).
|
||||
> État au 2026-09-29 : CX-B01, CX-B02 (essai 2), CX-B03, CX-B04 réimportés et validés statiquement ;
|
||||
> T-LOAD-01 (0 erreur) et T-LOAD-02 (0 broche orpheline) au vert. Restent : A/B d'exécution de
|
||||
> CX-B01 sur build Development, CX-B07 (resave UE5), contrôle StreetMap 4.27/5.5, T-LOAD-05 (cuisson).
|
||||
- **Objectif** : 0 erreur de chargement et de compilation des Blueprints, cuisson à 0 erreur.
|
||||
- **Périmètre** : un sous-lot par correctif, dans l'ordre de `05_Correctifs_Isoles.md` §2, selon
|
||||
le protocole §3 (photographie avant/après, `-DryRun`, diff, compilation, A/B si gameplay) :
|
||||
`L4-CX-B01` (broches AssetRegistry de `GI`, **avec A/B d'exécution**), `L4-CX-B02`
|
||||
(`EditableTextBoxStyle`), `L4-CX-B03` (mur à échelle nulle), `L4-CX-B04` (événements orphelins),
|
||||
`L4-CX-B07` (resave UE5 des dossiers de gameplay) ; contrôle StreetMap (`LPCheckStreetMap` sur
|
||||
4.27 **et** 5.5, comparaison des CSV).
|
||||
- **Sortie** : T-LOAD-01 à T-LOAD-05, T-STAT-01.
|
||||
|
||||
### L5 — Données et personnages ✅ (2026-09-30)
|
||||
> ERR-027/ERR-002 clos par CX-B08 (`ParseIntoArray` UE5), validé en jeu (build L5d).
|
||||
- **Objectif** : `generatePerson()` sans argument produit des personnages distincts et habillés.
|
||||
- **Périmètre** :
|
||||
1. `LPDumpFunction` dans les deux versions sur `GeneratePerson`, `determinePersonVars`,
|
||||
`ChooseNPCBodyShape`, `DefaultDistributionIfNeeded`, `SpawnDummy`, `GenerateAndApplyStrings`,
|
||||
`ReturnStatIfNeeded` ; diff archivé.
|
||||
2. Instrumenter l'**écriture** des variables DSL (`AddVariable`, `SetVariable`) : piste
|
||||
`Variable.uasset` / LWC.
|
||||
3. Correction minimale, puis inconnues de `01_Architecture_Initiale.md` §7.
|
||||
- **Sortie** : T-RUN-01 à T-RUN-03 sur build Development, A/B avec la référence 4.27.
|
||||
|
||||
### L6 — Session complète → **V1** ✅ (2026-09-30, étiquette `v1.0`)
|
||||
> Lots L6a (TAA, ERR-032), L6e (marges des boutons, ERR-034), L6f (ERR-031 préexistant en 4.27, hors périmètre).
|
||||
> Validation finale : build `LifePlay_Build_5.5_V1rc` (= L4-CX-B07), partie utilisateur d'environ 2 h, 339 personnages,
|
||||
> 0 plantage, sortie normale, sauvegardes `1.sav`/`2.sav` ; « pas de souci majeur constaté ». EX-01 à EX-09 au vert
|
||||
> (tableau dans `Journal_Modifications.md`, section V1).
|
||||
- **Objectif** : EX-01 à EX-09 au vert.
|
||||
- **Périmètre** : build Development `D:\Game\LifePlay_Build_5.5_V1` ; scénario T-RUN-04 ;
|
||||
session de 30 min ; tri du registre ; étiquette `v1.0`.
|
||||
- **Sortie** : tous les tests V1.
|
||||
|
||||
### L7+ — Lots post-V1 (un par famille)
|
||||
Ordre indicatif, à réviser selon le registre :
|
||||
|
||||
| Lot | Famille | Périmètre |
|
||||
|---|---|---|
|
||||
| L7a | R-03 refait correctement | ✅ CX-B10 (56 nœuds, 8 Blueprints), validé en jeu le 2026-09-30 |
|
||||
| L7b | Erreurs d'exécution fréquentes | `ParseIntoArray`, `getBeautyValue`, `standIdle`, `ContactMenu` |
|
||||
| L7c | Configuration | clés de nativisation, rendu 5.5 explicite (GI, ombres, RHI) |
|
||||
| L7d | Visuel | AtmosphericFog → SkyAtmosphere ; reconstruction de l'éclairage |
|
||||
| L7e | Effets | 4 systèmes Cascade → Niagara (si nécessaire) ; NvCloth → Chaos |
|
||||
| L7f | Entrées | Enhanced Input (R-07), avec test manuel des 34 commandes |
|
||||
| L7g | Packaging | build Shipping ; exclusion de `McpAutomationBridge` |
|
||||
| L7h | Vérification StreetMap | `LPCheckStreetMap` sur 4.27 et 5.5, comparaison des CSV (ERR-018) |
|
||||
| L7i | Variables DSL `Person` vides | ERR-030/ERR-003 : `GI::Dress` par rafales (0 à 284 par personnage selon les lieux), `ReturnStatIfNeeded` ; traceur par fonction |
|
||||
| L7j | Écran secondaire (amélioration) | ERR-031, préexistant en 4.27 : caméra `SecondScreen` sans racine ; seulement si souhaité |
|
||||
|
||||
## 4. Décisions
|
||||
|
||||
| ID | Question | Recommandation | Statut |
|
||||
|---|---|---|---|
|
||||
| D-01 | Base de reconstruction de `GI` | **Décidé (utilisateur, 2026-09-29)** : les correctifs antérieurs sont douteux (ni suivis ni testés). On repart d'une base saine — le contenu de gameplay 4.27 — et on **isole** les correctifs pour les réimporter un par un avec un contrôle renforcé (`05_Correctifs_Isoles.md`) | acquis (L1) |
|
||||
| D-02 | R-03/R-04 présents sur `AI`, `Room` et 7 widgets, annulés sur `Person` et `GI` | **Décidé (utilisateur)** : tout annuler maintenant — réalisé par le retour à la base 4.27 | acquis (L1) |
|
||||
| D-03 | Mesure d'exécution | builds empaquetées Development uniquement (règle §2 du document 03) | acquis |
|
||||
| D-04 | Suivi de version | dépôt git local, Blueprints de gameplay inclus, `Content/Heavy` exclu (sauvegardes par lot) | acquis (L0) |
|
||||
|
|
|
|||
|
|
@ -1,62 +1,62 @@
|
|||
# 05 — Correctifs isolés et protocole de réimport sous contrôle renforcé
|
||||
|
||||
> Décision D-01 (2026-09-29) : les correctifs appliqués avant la reprise n'ont été ni suivis ni
|
||||
> testés. Ils sont **isolés** : retirés du contenu (retour à la base 4.27 en L1) ou exportés en
|
||||
> patchs relisibles pour le code. Chacun est **réimporté seul**, selon le protocole du §3.
|
||||
> Décision D-02 : R-03 et R-04 sont annulés partout.
|
||||
|
||||
---
|
||||
|
||||
## 1. Correctifs de code (conservés, relisibles)
|
||||
|
||||
Le code 5.5 est nécessaire pour compiler : il reste en place, mais chaque écart avec 4.27 est
|
||||
exporté dans `Docs/Migration/correctifs/` pour relecture.
|
||||
|
||||
| ID | Patch | Contenu | Nécessaire à | Statut |
|
||||
|---|---|---|---|---|
|
||||
| CX-C01 | `P06` | `Target.cs` : `BuildSettingsVersion.V5`, `Unreal5_5` | compilation | conservé |
|
||||
| CX-C02 | `P06` | `.uproject` : `EngineAssociation 5.5`, suppression des 5 entrées de plugins (Victory, VisualStudioTools, SteamVR, ModdingPlus, MultiTask) | ouverture du projet | conservé ; section `Plugins` explicite en L2 |
|
||||
| CX-C03 | `P06` | `.uplugin` : suppression de `EngineVersion "4.27.0"` | chargement des plugins | conservé |
|
||||
| CX-C04 | `P03` | `ModdingExtra` : inclusions UE5 (`Engine.h` retiré), `Path.Combine` | compilation | conservé |
|
||||
| CX-C05 | `P04` | `StreetMap` : portage LWC (`FVector3f`, `FBox3f`), R-01 (`FAssetRegistryTagsContext`), R-02 (initialiseurs) | compilation, 280 villes | conservé ; vérifié en L4 (`LPCheckStreetMap` 4.27 et 5.5) |
|
||||
| CX-C06 | `P01`, `P05` | `LPVictoryCompat` (2 fonctions) + 3 `[CoreRedirects]` Victory → LifePlay | chargement de `GI`, `ExtImg`, `FaceTexture`, `MainMenu`, `Inventory` | conservé ; à contrôler en L4 (T-LOAD-01) |
|
||||
| CX-C07 | `P01` | `LPAssetRegistryHelpers::GetAssetByObjectPath` : conversion `FSoftObjectPath` | compilation | conservé |
|
||||
| CX-C08 | `P01` | `LPAssetRegistryHelpers::GetAssetsByClassName`, `GetAssetObjectPath` (nouvelles fonctions) | réimport de CX-B01 | conservé, **inutilisé** tant que CX-B01 n'est pas réimporté |
|
||||
| CX-C09 | `P01` | `LPNavigationHelpers` (enrobage pur de `K2_GetRandomLocationInNavigableRadius`) | R-04 | conservé, inutilisé (R-04 annulé) |
|
||||
| CX-C10 | `P01` | `LifePlay.Build.cs` : `PublicIncludePaths`, `NavigationSystem`, `ImageWrapper`, `ApplicationCore` | compilation | conservé |
|
||||
| CX-C11 | `P05` | `Config` : `[CoreRedirects]`, 4 clés PhysX retirées, classes Enhanced Input par défaut, description, `StagingDirectory`, section `McpAutomationBridgeSettings` | — | conservé ; relu en L2 |
|
||||
| CX-C12 | `P03` (hors patch : ajouté le 2026-09-28) | instrumentation `LogLPModdingTrace` | diagnostic | **à retirer** en L3 |
|
||||
| CX-C13 | `P02` | commandlets `LifePlayEditorTools` (1 777 lignes) | outillage éditeur | conservé ; ne touche pas au jeu |
|
||||
|
||||
## 2. Correctifs de contenu (retirés en L1, à réimporter un par un)
|
||||
|
||||
| ID | Outil | Cible | Effet attendu | Justification | Priorité | Statut |
|
||||
|---|---|---|---|---|---|---|
|
||||
| CX-B00 | `LPFixAssetRegistryNodes` (portage 4.27) | `GI`, `Person`, `Room`, `UI/VisualMorph` | `GetAssetByObjectPath` en nœud pur | **déjà présent dans la base 4.27** (les 4 assets importent `LifePlay.LPAssetRegistryHelpers`) | — | inclus dans la base |
|
||||
| CX-B01 | `LPFixAssetRegistryPins` | `GI` : 3 `GetAssetsByClass` (+ 2 broches associées) | nœuds rebranchés sur `GetAssetsByClassName` avec la valeur de classe d'origine | **candidat n°1 pour ERR-002** : sans lui, `GetAssetsByClass` interroge avec un chemin de classe vide ; aucun corps, vêtement ni coiffure énumérable | 1 | **réimporté** (CHG-018, validé statiquement) ; A/B d'exécution après CX-B02 |
|
||||
| CX-B02 | `LPFixEditableTextBoxFont` | `UI/CharGen`, `UI/StatMenu` : 6 nœuds `Make/Break EditableTextBoxStyle` | broche `Font` orpheline retirée | **bloque la cuisson** (6 erreurs, cook du 2026-09-07) | 2 | **réimporté** (CHG-022) ; commandlet corrigée au passage (ERR-025) |
|
||||
| CX-B03 | `LPFixZeroScaleActors -Fix -Scale=0.1` | `Scenes/CentralLondon` : `Wall.StaticMeshComponent0` | échelle X 0 → 0,1 | corps physique invalide ; `ensure InverseFast` (plantage éditeur du 2026-09-07) | 3 | **réimporté** (CHG-023) |
|
||||
| CX-B04 | `LPFixOrphanBoundEvents` | `UI/TopRight` (1), `UI/CharGen` (2) | 3 événements `On Clicked` orphelins supprimés | avertissements ; clics déjà morts | 4 | **réimporté** (CHG-024) |
|
||||
| CX-B05 | `LPFixDeprecatedNodes` (R-03) | 56 nœuds `SkeletalMesh`, 10 Blueprints | `GetSkeletalMeshAsset()` | **rejeté** : aggrave ERR-002 (16,6 → 35 `Accessed None`/perso) car les proxies sont des `USkinnedMeshComponent` | — | à refaire autrement (L7a) |
|
||||
| CX-B06 | `LPFixDeprecatedNodes` (R-04) | 6 nœuds, `AI`, `Person`, `Room` | `LPNavigationHelpers` | avertissements de dépréciation seulement | 5 | reporté (L7) |
|
||||
| CX-B08 | `LPFixParseIntoArray` (nouveau) | 114 nœuds `ParseIntoArray`, 17 Blueprints | rebranchés sur `LPStringCompat::ParseIntoArray` (algorithme UE 4.27) | UE5 renvoie `[""]` pour une chaîne vide : cause d'ERR-027 (personnages de quête invisibles/dévêtus) | 1 | **réimporté** (CHG-029), validé en jeu |
|
||||
| CX-B09 | `LPFixButtonPadding` (nouveau) | 430 `UButton`, 46 Widget Blueprints | marges des boutons remises au défaut UE 4.27 (Normal 2,2,2,2 ; Pressed 2,3,2,1), composante par composante | le style par défaut de `UButton` est passé à 12 px horizontaux en UE5 (`FUMGCoreStyle`) ; les assets 4.27 ne stockent pas la marge par défaut : cause d'ERR-034 (barre de temps décalée) | 1 | **réimporté** (CHG-033), validé en jeu |
|
||||
| CX-B10 | `LPFixSkeletalMeshGet` (nouveau) | 56 nœuds `Get SkeletalMesh`, 8 Blueprints (`Person` 28, `GI` 17, `CharGen` 3, `Inventory` 3, `Hairstyle` 2, `CharGenSlider`, `Cursor`, `Inventory_Cloth` 1) | remplacés par `LPMeshCompat::GetSkeletalMesh(Component)` = `Cast<USkeletalMesh>(GetSkinnedAsset())`, la sémantique exacte du getter déprécié, valable pour tout `USkinnedMeshComponent` | R-03 refait (L7a) ; remplace CX-B05 rejeté | 1 | **réimporté** (CHG-036) ; validation en jeu en attente |
|
||||
| CX-B07 | `LPResavePackages` (nouveau) | 239 paquets UE4 restants (`UI` 147, `Structs` 57, `BPs` 22, `Render` 11, `Characters` 1, `Scenes` 1) | format UE5, contenu inchangé | EX-03 ; T-STAT-01 | 6 | **réimporté** (CHG-035), diff avant/après neutre ; validation en jeu en attente |
|
||||
|
||||
## 3. Protocole de réimport sous contrôle renforcé
|
||||
|
||||
Un correctif = un sous-lot (`L4-CX-B01`, …) = un commit. Pas de regroupement.
|
||||
|
||||
| Étape | Action | Preuve archivée dans `Docs/Migration/etat/` |
|
||||
|---|---|---|
|
||||
| 1 | `git tag L4-CX-xx-avant` ; `Tools\Snapshot.ps1 -Lot L4-CX-xx -Path <assets cibles>` | manifeste MD5 |
|
||||
| 2 | **Photographie avant** : `LPDumpFunction -BP=<asset> -Fn=<fonctions touchées> -Pins` | `<id>_dump_avant.txt` |
|
||||
| 3 | **Simulation** : commandlet avec `-DryRun` ; le nombre de nœuds trouvés doit égaler celui attendu (§2) | `<id>_dryrun.txt` ; tout écart arrête le sous-lot |
|
||||
| 4 | Application réelle | journal de la commandlet |
|
||||
| 5 | **Photographie après** + diff avant/après : seuls les nœuds attendus diffèrent | `<id>_dump_apres.txt`, `<id>_diff.txt` |
|
||||
| 6 | `CompileAllBlueprints` + `LPCheckMeshAssignment` : aucune erreur **nouvelle** par rapport au relevé de base | résumés `RunCommandlet` |
|
||||
| 7 | Si le correctif touche le gameplay (CX-B01) : build Development + A/B avec la référence 4.27 (`Tools\LogStats.ps1 -Compare`) | tableau A/B |
|
||||
| 8 | Journal `CHG`, commit, `git tag L4-CX-xx-apres` ; en cas d'échec : `Tools\Restore.ps1 -Lot L4-CX-xx` | entrée de journal |
|
||||
|
||||
Critère d'acceptation commun : **effet attendu observé, aucun effet de bord mesuré**.
|
||||
# 05 — Correctifs isolés et protocole de réimport sous contrôle renforcé
|
||||
|
||||
> Décision D-01 (2026-09-29) : les correctifs appliqués avant la reprise n'ont été ni suivis ni
|
||||
> testés. Ils sont **isolés** : retirés du contenu (retour à la base 4.27 en L1) ou exportés en
|
||||
> patchs relisibles pour le code. Chacun est **réimporté seul**, selon le protocole du §3.
|
||||
> Décision D-02 : R-03 et R-04 sont annulés partout.
|
||||
|
||||
---
|
||||
|
||||
## 1. Correctifs de code (conservés, relisibles)
|
||||
|
||||
Le code 5.5 est nécessaire pour compiler : il reste en place, mais chaque écart avec 4.27 est
|
||||
exporté dans `Docs/Migration/correctifs/` pour relecture.
|
||||
|
||||
| ID | Patch | Contenu | Nécessaire à | Statut |
|
||||
|---|---|---|---|---|
|
||||
| CX-C01 | `P06` | `Target.cs` : `BuildSettingsVersion.V5`, `Unreal5_5` | compilation | conservé |
|
||||
| CX-C02 | `P06` | `.uproject` : `EngineAssociation 5.5`, suppression des 5 entrées de plugins (Victory, VisualStudioTools, SteamVR, ModdingPlus, MultiTask) | ouverture du projet | conservé ; section `Plugins` explicite en L2 |
|
||||
| CX-C03 | `P06` | `.uplugin` : suppression de `EngineVersion "4.27.0"` | chargement des plugins | conservé |
|
||||
| CX-C04 | `P03` | `ModdingExtra` : inclusions UE5 (`Engine.h` retiré), `Path.Combine` | compilation | conservé |
|
||||
| CX-C05 | `P04` | `StreetMap` : portage LWC (`FVector3f`, `FBox3f`), R-01 (`FAssetRegistryTagsContext`), R-02 (initialiseurs) | compilation, 280 villes | conservé ; vérifié en L4 (`LPCheckStreetMap` 4.27 et 5.5) |
|
||||
| CX-C06 | `P01`, `P05` | `LPVictoryCompat` (2 fonctions) + 3 `[CoreRedirects]` Victory → LifePlay | chargement de `GI`, `ExtImg`, `FaceTexture`, `MainMenu`, `Inventory` | conservé ; à contrôler en L4 (T-LOAD-01) |
|
||||
| CX-C07 | `P01` | `LPAssetRegistryHelpers::GetAssetByObjectPath` : conversion `FSoftObjectPath` | compilation | conservé |
|
||||
| CX-C08 | `P01` | `LPAssetRegistryHelpers::GetAssetsByClassName`, `GetAssetObjectPath` (nouvelles fonctions) | réimport de CX-B01 | conservé, **inutilisé** tant que CX-B01 n'est pas réimporté |
|
||||
| CX-C09 | `P01` | `LPNavigationHelpers` (enrobage pur de `K2_GetRandomLocationInNavigableRadius`) | R-04 | conservé, inutilisé (R-04 annulé) |
|
||||
| CX-C10 | `P01` | `LifePlay.Build.cs` : `PublicIncludePaths`, `NavigationSystem`, `ImageWrapper`, `ApplicationCore` | compilation | conservé |
|
||||
| CX-C11 | `P05` | `Config` : `[CoreRedirects]`, 4 clés PhysX retirées, classes Enhanced Input par défaut, description, `StagingDirectory`, section `McpAutomationBridgeSettings` | — | conservé ; relu en L2 |
|
||||
| CX-C12 | `P03` (hors patch : ajouté le 2026-09-28) | instrumentation `LogLPModdingTrace` | diagnostic | **à retirer** en L3 |
|
||||
| CX-C13 | `P02` | commandlets `LifePlayEditorTools` (1 777 lignes) | outillage éditeur | conservé ; ne touche pas au jeu |
|
||||
|
||||
## 2. Correctifs de contenu (retirés en L1, à réimporter un par un)
|
||||
|
||||
| ID | Outil | Cible | Effet attendu | Justification | Priorité | Statut |
|
||||
|---|---|---|---|---|---|---|
|
||||
| CX-B00 | `LPFixAssetRegistryNodes` (portage 4.27) | `GI`, `Person`, `Room`, `UI/VisualMorph` | `GetAssetByObjectPath` en nœud pur | **déjà présent dans la base 4.27** (les 4 assets importent `LifePlay.LPAssetRegistryHelpers`) | — | inclus dans la base |
|
||||
| CX-B01 | `LPFixAssetRegistryPins` | `GI` : 3 `GetAssetsByClass` (+ 2 broches associées) | nœuds rebranchés sur `GetAssetsByClassName` avec la valeur de classe d'origine | **candidat n°1 pour ERR-002** : sans lui, `GetAssetsByClass` interroge avec un chemin de classe vide ; aucun corps, vêtement ni coiffure énumérable | 1 | **réimporté** (CHG-018, validé statiquement) ; A/B d'exécution après CX-B02 |
|
||||
| CX-B02 | `LPFixEditableTextBoxFont` | `UI/CharGen`, `UI/StatMenu` : 6 nœuds `Make/Break EditableTextBoxStyle` | broche `Font` orpheline retirée | **bloque la cuisson** (6 erreurs, cook du 2026-09-07) | 2 | **réimporté** (CHG-022) ; commandlet corrigée au passage (ERR-025) |
|
||||
| CX-B03 | `LPFixZeroScaleActors -Fix -Scale=0.1` | `Scenes/CentralLondon` : `Wall.StaticMeshComponent0` | échelle X 0 → 0,1 | corps physique invalide ; `ensure InverseFast` (plantage éditeur du 2026-09-07) | 3 | **réimporté** (CHG-023) |
|
||||
| CX-B04 | `LPFixOrphanBoundEvents` | `UI/TopRight` (1), `UI/CharGen` (2) | 3 événements `On Clicked` orphelins supprimés | avertissements ; clics déjà morts | 4 | **réimporté** (CHG-024) |
|
||||
| CX-B05 | `LPFixDeprecatedNodes` (R-03) | 56 nœuds `SkeletalMesh`, 10 Blueprints | `GetSkeletalMeshAsset()` | **rejeté** : aggrave ERR-002 (16,6 → 35 `Accessed None`/perso) car les proxies sont des `USkinnedMeshComponent` | — | à refaire autrement (L7a) |
|
||||
| CX-B06 | `LPFixDeprecatedNodes` (R-04) | 6 nœuds, `AI`, `Person`, `Room` | `LPNavigationHelpers` | avertissements de dépréciation seulement | 5 | reporté (L7) |
|
||||
| CX-B08 | `LPFixParseIntoArray` (nouveau) | 114 nœuds `ParseIntoArray`, 17 Blueprints | rebranchés sur `LPStringCompat::ParseIntoArray` (algorithme UE 4.27) | UE5 renvoie `[""]` pour une chaîne vide : cause d'ERR-027 (personnages de quête invisibles/dévêtus) | 1 | **réimporté** (CHG-029), validé en jeu |
|
||||
| CX-B09 | `LPFixButtonPadding` (nouveau) | 430 `UButton`, 46 Widget Blueprints | marges des boutons remises au défaut UE 4.27 (Normal 2,2,2,2 ; Pressed 2,3,2,1), composante par composante | le style par défaut de `UButton` est passé à 12 px horizontaux en UE5 (`FUMGCoreStyle`) ; les assets 4.27 ne stockent pas la marge par défaut : cause d'ERR-034 (barre de temps décalée) | 1 | **réimporté** (CHG-033), validé en jeu |
|
||||
| CX-B10 | `LPFixSkeletalMeshGet` (nouveau) | 56 nœuds `Get SkeletalMesh`, 8 Blueprints (`Person` 28, `GI` 17, `CharGen` 3, `Inventory` 3, `Hairstyle` 2, `CharGenSlider`, `Cursor`, `Inventory_Cloth` 1) | remplacés par `LPMeshCompat::GetSkeletalMesh(Component)` = `Cast<USkeletalMesh>(GetSkinnedAsset())`, la sémantique exacte du getter déprécié, valable pour tout `USkinnedMeshComponent` | R-03 refait (L7a) ; remplace CX-B05 rejeté | 1 | **réimporté** (CHG-036), validé en jeu |
|
||||
| CX-B07 | `LPResavePackages` (nouveau) | 239 paquets UE4 restants (`UI` 147, `Structs` 57, `BPs` 22, `Render` 11, `Characters` 1, `Scenes` 1) | format UE5, contenu inchangé | EX-03 ; T-STAT-01 | 6 | **réimporté** (CHG-035), diff avant/après neutre ; validation en jeu en attente |
|
||||
|
||||
## 3. Protocole de réimport sous contrôle renforcé
|
||||
|
||||
Un correctif = un sous-lot (`L4-CX-B01`, …) = un commit. Pas de regroupement.
|
||||
|
||||
| Étape | Action | Preuve archivée dans `Docs/Migration/etat/` |
|
||||
|---|---|---|
|
||||
| 1 | `git tag L4-CX-xx-avant` ; `Tools\Snapshot.ps1 -Lot L4-CX-xx -Path <assets cibles>` | manifeste MD5 |
|
||||
| 2 | **Photographie avant** : `LPDumpFunction -BP=<asset> -Fn=<fonctions touchées> -Pins` | `<id>_dump_avant.txt` |
|
||||
| 3 | **Simulation** : commandlet avec `-DryRun` ; le nombre de nœuds trouvés doit égaler celui attendu (§2) | `<id>_dryrun.txt` ; tout écart arrête le sous-lot |
|
||||
| 4 | Application réelle | journal de la commandlet |
|
||||
| 5 | **Photographie après** + diff avant/après : seuls les nœuds attendus diffèrent | `<id>_dump_apres.txt`, `<id>_diff.txt` |
|
||||
| 6 | `CompileAllBlueprints` + `LPCheckMeshAssignment` : aucune erreur **nouvelle** par rapport au relevé de base | résumés `RunCommandlet` |
|
||||
| 7 | Si le correctif touche le gameplay (CX-B01) : build Development + A/B avec la référence 4.27 (`Tools\LogStats.ps1 -Compare`) | tableau A/B |
|
||||
| 8 | Journal `CHG`, commit, `git tag L4-CX-xx-apres` ; en cas d'échec : `Tools\Restore.ps1 -Lot L4-CX-xx` | entrée de journal |
|
||||
|
||||
Critère d'acceptation commun : **effet attendu observé, aucun effet de bord mesuré**.
|
||||
|
|
|
|||
|
|
@ -538,3 +538,11 @@ Supprimés (environ 37 Go, binaires régénérables depuis les tags git) : `Life
|
|||
`Saved/SaveGames`, `Saved/Crashes` et scripts `.bat` ont été copiés dans `D:\Game\LifePlay_Backup_5.5\builds_supprimees`.
|
||||
Conservés : `LifePlay_Build_5.5_V1rc` (build validée `v1.0`), `LifePlay_Build_5.5_L7a` (test en cours),
|
||||
`LifePlay_Build_427_Dev` et `LifePlay_Build_2026.9` (UE4).
|
||||
|
||||
Validation L7a (build `LifePlay_Build_5.5_L7a`, partie utilisateur 2026-09-30, environ 1 h) : 294 personnages, 0 plantage,
|
||||
sortie normale, sauvegardes `1.sav`/`2.sav` ; tests utilisateur effectués sans anomalie signalée. Journal :
|
||||
`Saved/Logs/portage/L7a_partie_20260930.log`. `Accessed None` par personnage : 334 (V1rc) → 127, surtout `GI::Dress`
|
||||
(situationnel, ERR-030). Messages moteur `GetSocketInfoByName … No SkeletalMesh for Component(CharacterMesh0)` : même
|
||||
signature et mêmes 5 sockets qu'en V1rc, volume lié aux scènes jouées (ERR-011, existe en 4.27) : non imputable à L7a.
|
||||
Fonctions de variables DSL (`getActorVar`, `clearVariable`, `CallFunction`) non touchées par L7a, en hausse par personnage
|
||||
sur cette partie : famille ERR-003, à suivre en L7i.
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
| ERR-009 | `SpawnActor failed because no class was specified` | PIE 09-28 | 11 | moyenne | L6 | ouvert |
|
||||
| ERR-010 | `LogLPModdingTrace` : instrumentation de portage à chaque `LoadTxt` | tous journaux | ≈ 1 300 à 5 400 / session | faible (bruit) | L3 | clos (CHG-016) : `LogModdingExtra` en Verbose |
|
||||
| ERR-011 | `GetSocketInfoByName … No SkeletalMesh for CharacterMesh` | tous journaux | 80/perso en 4.27, 76 en 5.5 | bruit (existe en 4.27) | — | accepté |
|
||||
| ERR-012 | Nœud `SkeletalMesh` déprécié (`GI` 52, `Person` 24) | `LogBlueprint` | 153 | faible (dette) | L7a | **corrigé (CHG-036, CX-B10)** : 56 nœuds (8 Blueprints) remplacés par `LPMeshCompat::GetSkeletalMesh` ; compilation 190 → 6 avertissements, cuisson 95 → 3 ; validation en jeu en attente |
|
||||
| ERR-012 | Nœud `SkeletalMesh` déprécié (`GI` 52, `Person` 24) | `LogBlueprint` | 153 | faible (dette) | L7a | **corrigé (CHG-036, CX-B10)** : 56 nœuds (8 Blueprints) remplacés par `LPMeshCompat::GetSkeletalMesh` ; compilation 190 → 6 avertissements, cuisson 95 → 3 ; **validé en jeu le 2026-09-30** (build L7a) |
|
||||
| ERR-013 | `Daz/Michael/hairs/other/Pubes05-06` introuvable (assets dans `Daz/Bridget/Hairs/Pubic/`) | journaux 4.27 et 5.5 | 56 / session | faible (existe en 4.27) | L7b | ouvert |
|
||||
| ERR-014 | `Modules/ModLauncher.config` absent : `LoadTxt ECHEC` | journaux 4.27 et 5.5 | 2 / session | faible (existe en 4.27) | L3 | accepté : signalé une seule fois (CHG-016) ; absence = tous les modules actifs |
|
||||
| ERR-015 | `InputMode:UIOnly … Non-Focusable widget` | PIE 09-28 | 25 | faible | L7b | ouvert |
|
||||
|
|
|
|||
Loading…
Reference in a new issue