Docs/Migration : architecture initiale (pipeline donnees -> GI -> evenements/personnages), audit logiciel 5.5, plan de tests, cahier des charges par lots bornes, journal des modifications, registre des erreurs. Tools : CheckIntegrity (T-STAT-02..04), LogStats (compteurs normalises, A/B 4.27/5.5). Empreinte de reference de l'arbre 4.27. Tests : aller-retour Snapshot/Restore verifie par MD5 ; T-STAT-02, 03, 04 au vert ; T-STAT-01 : 1 package UE4 (GI.uasset), traite en L1. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
8 KiB
8 KiB
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
- Entrée : tests de sortie du lot précédent au vert ;
git statuspropre. git tag lot-XX-avant.Tools\Snapshot.ps1 -Lot XX -Path <tous les fichiers visés>(y compris hors git, ex.Content/Heavy).- Modification. Toute commandlet de correction est d'abord lancée en
-DryRun, rapport archivé dansDocs/Migration/etat/. - Tests de sortie.
- Vert → entrée
CHGau journal, commit,git tag lot-XX-apres. Rouge →Tools\Restore.ps1 -Lot XX(ougit checkout lot-XX-avant -- …), entréeCHGd'annulation, défaut inscrit au registre. - 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 ; sauvegardeD:\Game\LifePlay_Backup_5.5\L0(53 fichiers). - Sortie : aller-retour
Snapshot/Restorevérifié par MD5 ; T-STAT-02 à 04 au vert.
L1 — Assainissement du contenu et des caches
- Objectif : 0 package UE4 ;
GIdans un état 5.5 connu et documenté ; projet débarrassé des artefacts. - Périmètre :
- Reconstituer
GI« R-03 annulé + correctif AssetRegistry » : restaurerSaved/Backups/avant-R03-R06/BPs/GI.uasset, puisLPFixAssetRegistryPins -DryRun, puis réel (décision D-01, §4). - Rendre R-03/R-04 cohérents sur les autres assets (décision D-02, §4).
- Purger les dossiers régénérables (
02_Audit_Logiciel.md§8), après sauvegarde. DefaultEngine.ini: retirerAndroidFileServerRuntimeSettingsetCookerSettings;DefaultEditor.ini: vider lesSharedProfilesgénérés.
- Reconstituer
- Sortie : T-STAT-01 à 05, T-LOAD-02 (0 broche orpheline), T-LOAD-01.
- Retour :
Restore.ps1 -Lot L1; les caches purgés se régénèrent seuls.
L2 — Compilation propre
- Objectif : binaires reconstruits à partir de zéro, projet conforme UE5.
- Périmètre :
.uproject(TargetPlatforms: ["Windows"], sectionPluginsexplicite :ModdingExtra,StreetMap,EnhancedInput,McpAutomationBridgelimité à l'éditeur) ; retrait deBuild/WindowsNoEditoretBuild/LinuxNoEditor; 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
- Objectif : un journal qui sert au diagnostic.
- Périmètre :
Source/LifePlay: catégorieLogLifePlaydéclarée dans le module ; résumé de démarrage (version du jeu et du moteur, modules activés, nombre de fichiers par type, échecsLoadTxt) ;ModdingExtra:LogLPModdingTraceramené enVerbose(activable par-LogCmds="LogLPModdingTrace Verbose") ; échec deLoadTxtjournalisé enWarningune seule fois par fichier ;DefaultEngine.ini[Core.Log]: niveaux par catégorie ; plafonnement desLogScriptrépétitifs.
- Sortie : T-BUILD-01, T-LOG-01 ; A/B : mêmes comptes
GetAllFilesFromFolderqu'avant.
L4 — Chargement stable
- Objectif : 0 erreur de chargement et de compilation des Blueprints, cuisson à 0 erreur.
- Périmètre : relevé
CompileAllBlueprints+LPCheckMeshAssignment; une famille de correction par sous-lot (LPFixAssetRegistryPins,LPFixOrphanBoundEvents,LPFixEditableTextBoxFont,LPFixZeroScaleActors) ; contrôle StreetMap (LPCheckStreetMapsur 4.27 et 5.5, comparaison des CSV). - Sortie : T-LOAD-01 à T-LOAD-05.
L5 — Données et personnages
- Objectif :
generatePerson()sans argument produit des personnages distincts et habillés. - Périmètre :
LPDumpFunctiondans les deux versions surGeneratePerson,determinePersonVars,ChooseNPCBodyShape,DefaultDistributionIfNeeded,SpawnDummy,GenerateAndApplyStrings,ReturnStatIfNeeded; diff archivé.- Instrumenter l'écriture des variables DSL (
AddVariable,SetVariable) : pisteVariable.uasset/ LWC. - 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
- 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 ; étiquettev1.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 | GetSkinnedAsset() pour les proxies ; 56 nœuds, 10 Blueprints |
| 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 |
4. Décisions
| ID | Question | Recommandation | Statut |
|---|---|---|---|
| D-01 | Base de reconstruction de GI |
avant-R03-R06 + LPFixAssetRegistryPins : reproduit l'état « R-03 annulé + correctif » décrit par le rapport du 28/09. Alternative : repartir du GI 4.27 actuel (le moteur le convertira) + même commandlet |
à valider (L1) |
| D-02 | R-03/R-04 présents sur AI, Room et 7 widgets, annulés sur Person et GI |
conserver en l'état pour la V1 (les widgets ne portent pas de proxies ; CompileAllBlueprints passait) ; refaire R-03 proprement en L7a |
à valider (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) |