LifePlay-Revival/Docs/Migration/03_Plan_Migration_Tests.md
2026-10-02 00:25:11 +02:00

8.4 KiB

03 — Plan de migration fondé sur les tests

Règle : aucun lot n'est validé sans ses tests de sortie. Un test de sortie en échec entraîne le retour arrière du lot (§5), puis une analyse. Les résultats sont consignés dans Journal_Modifications.md, les défauts dans Registre_Erreurs.md.


1. Environnement de test

Élément Chemin
Moteur 5.5.4 D:\Game\Launcher\Engine\UE_5.5
Moteur 4.27 (référence) D:\Game\Launcher\Engine\UE_4.27
Projet cible D:\Game\LifePlay-master 5.5\LifePlay.uproject
Projet de référence (lecture seule) D:\Game\LifePlay-master 4.27\LifePlay.uproject
Build de référence 4.27 Development (journalisée) D:\Game\LifePlay_Build_427_Dev\WindowsNoEditor\LifePlay
Sauvegardes de lots D:\Game\LifePlay_Backup_5.5\<lot>\

Raccourcis utilisés ci-dessous :

$UE   = 'D:\Game\Launcher\Engine\UE_5.5\Engine'
$Cmd  = "$UE\Binaries\Win64\UnrealEditor-Cmd.exe"
$Proj = 'D:\Game\LifePlay-master 5.5\LifePlay.uproject'

2. Règles de mesure (acquises, à ne pas remettre en cause)

  1. Ne jamais mesurer l'exécution avec UnrealEditor.exe -game : ce mode casse l'affichage des personnages en 4.27 comme en 5.5 (rapport du 2026-09-28, §5.1).
  2. Comparer des builds empaquetées de même configuration (Development ; Shipping ne journalise pas).
  3. Vérifier que les deux journaux atteignent le même point : index SPAWN > 0 des deux côtés.
  4. Normaliser les compteurs par le nombre de personnages générés.
  5. Recouper tout écart catégorique par un second comptage formulé autrement.

3. Catalogue des tests

3.1 Niveau statique (secondes, sans moteur)

ID Vérifie Commande Critère
T-STAT-01 format des packages Tools\AssetHeaders.ps1 0 package UE4, 0 illisible
T-STAT-02 données de jeu intactes Tools\CheckIntegrity.ps1 -Modules 2 051 fichiers, MD5 identiques à 4.27
T-STAT-03 environnement de développement intact Tools\CheckIntegrity.ps1 -Env .claude/, .mcp.json, Saved/Backups = empreintes L0
T-STAT-04 référence 4.27 non modifiée Tools\CheckIntegrity.ps1 -Ref427 Source, Config, .uproject, Content/BPs 4.27 = empreintes L0
T-STAT-05 traçabilité git status arbre propre après commit du lot ; tag lot-XX-apres posé

3.2 Niveau compilation

ID Vérifie Commande Critère
T-BUILD-01 éditeur & "$UE\Build\BatchFiles\Build.bat" LifePlayEditor Win64 Development -Project="$Proj" -WaitMutex code 0, 0 erreur, 0 nouvel avertissement
T-BUILD-02 jeu Build.bat LifePlay Win64 Development -Project="$Proj" code 0

3.3 Niveau chargement (commandlets, éditeur sans interface)

ID Vérifie Commande Critère
T-LOAD-01 tous les Blueprints & $Cmd $Proj -run=CompileAllBlueprints -unattended -nopause 0 erreur, 0 Blueprint en échec de chargement
T-LOAD-02 broches orphelines & $Cmd $Proj -run=LPCheckMeshAssignment 0 broche bOrphanedPin
T-LOAD-03 villes & $Cmd $Proj -run=LPCheckStreetMap -CSV=Docs/Migration/etat/streetmap.csv 280/280 ; totaux = Docs/Architecture/streetmap_5.5.csv
T-LOAD-04 démarrage éditeur propre Tools\LogStats.ps1 <journal> 0 LogClass: Error, 0 Failed to load sur /Game/
T-LOAD-05 cuisson & $Cmd $Proj -run=Cook -TargetPlatform=Windows -unattended 0 error(s)

3.4 Niveau exécution (build empaquetée Development)

Construction : RunUAT BuildCookRun -project="$Proj" -platform=Win64 -clientconfig=Development -build -cook -iterate -stage -archive -archivedirectory=D:\Game\LifePlay_Build_5.5_<lot> -unattended -utf8output -nop4 (sans -pak : fichiers nus, comme la version de l'auteur ; voir 09_Commandes_Utiles.md §2).

ID Vérifie Mesure (Tools\LogStats.ps1) Critère
T-PKG-01 contenu cuit complet nombre de .uasset sous Windows/LifePlay/Content de la build ≥ 8 555 (référence 4.27 et build 5.5 du 28/09 : 8 561 ; 6 matériaux Substance de fBlah exclus). Un chiffre plus bas signifie des assets chargés par chemin non cuits
T-RUN-01 démarrage et données lignes GetAllFilesFromFolder / LoadTxt par module mêmes comptes que la référence 4.27 (ex. vin_Base : 752 .lpscene)
T-RUN-02 génération de personnages index SPAWN ; Accessed None sur maillage par personnage ≥ 10 personnages ; ≤ 1,0 par personnage (4.27 : 0,3)
T-RUN-03 personnages distincts prénoms des Saves/_session/Characters/*.lpcharacter ≥ 8 prénoms différents sur 10
T-RUN-04 scène, sauvegarde, rechargement parcours manuel scénarisé (§4) aucun blocage ; partie rechargée identique
T-RUN-05 stabilité session de 30 min aucun dossier nouveau dans Saved/Crashes
T-LOG-01 journal exploitable lignes LogLifePlay du démarrage résumé présent ; démarrage lisible en < 200 lignes hors moteur

3.5 Non-régression A/B

Chaque test T-RUN est exécuté sur la build 5.5 et sur la référence 4.27 avec le même scénario. Tools\LogStats.ps1 -Compare <journal 4.27> <journal 5.5> produit le tableau normalisé.

Depuis L3, la trace d'entrée/sortie de ModdingExtra (catégorie LogModdingExtra, même format de ligne que l'ancienne LogLPModdingTrace de la build 4.27) est en Verbose. Pour un A/B, lancer la build 5.5 avec :

LifePlay.exe -LogCmds="LogModdingExtra Verbose"

Journal de session 5.5 : chercher ===== LifePlay : demarrage ===== (résumé des données) et ===== LifePlay : bilan de session (signatures d'erreurs dédoublonnées, écrit à la fermeture ou par la commande console LifePlay.LogSummary).

4. Scénario d'exécution de référence (T-RUN-04)

  1. Lancer la build, nouvelle partie avec le personnage par défaut.
  2. Attendre la fin du chargement (menu principal puis ville CentralLondon).
  3. Déclencher 3 actions de lieu provoquant des scènes avec PNJ générés (generatePerson()).
  4. Vérifier à l'écran : PNJ visibles, habillés, prénoms variés.
  5. Sauvegarder (emplacement TestV1), quitter, relancer, charger TestV1.
  6. Vérifier : même jour et heure, contacts présents.
  7. Copier le journal : Saved/Logs/LifePlay.log → Docs/Migration/etat/<lot>_run_<date>.log.

5. Procédure de retour arrière

Portée Commande
Fichiers suivis par git (code, config, docs, Blueprints de BPs, UI, Structs, Scenes, Render) git checkout lot-XX-avant -- <chemins> ou git revert <commit>
Tout fichier sauvegardé par le lot (y compris Content/Heavy) Tools\Restore.ps1 -Lot XX (-WhatIf pour simuler)
Un seul fichier Tools\Restore.ps1 -Lot XX -Only <chemin>

Après retour arrière : relancer T-STAT-01 à T-STAT-04 et T-BUILD-01. Consigner l'entrée CHG d'annulation dans le journal.

6. Correspondance risques ↔ tests

Risque (audit 02) Test qui le couvre
GI au format UE4, broches AssetRegistry perdues T-STAT-01, T-LOAD-02
Nœuds dépréciés, liaisons perdues par une commandlet T-LOAD-01, T-LOAD-02
Données StreetMap perdues au resave T-LOAD-03
Modules non livré en fichiers nus T-RUN-01
Conteneur Variable (LWC), generatePerson() T-RUN-02, T-RUN-03
Plantages T-RUN-05
Journal illisible T-LOG-01
Environnement de développement abîmé T-STAT-03
Référence 4.27 abîmée T-STAT-04

7. Outils

Script Rôle État
Tools/Snapshot.ps1 sauvegarde avant modification, manifeste MD5 ✅ testé (L0)
Tools/Restore.ps1 restauration vérifiée, réversible elle-même ✅ testé (L0)
Tools/AssetHeaders.ps1 format UE4/UE5 des packages ✅
Tools/CheckIntegrity.ps1 T-STAT-02 à T-STAT-04 ✅ (L0)
Tools/LogStats.ps1 compteurs de journal, comparaison A/B ✅ (L0)
Tools/RunCommandlet.ps1 lancement d'une commandlet, journal archivé par lot ✅
Tools/ReimportCorrectif.ps1 réimport scripté d'un correctif (photo, simulation comptée, application, diff, compilation) ✅ (L4)
Tools/DiffRemplacementNoeuds.py diff indépendant d'un rebranchement de nœuds (profils L7a, L7b, CX-B12) ✅ (L7a)
Commandlets LifePlayEditorTools 24 commandlets d'analyse et de correction (catalogue : 08_Guide_Developpeur.md §5) ✅
Options de diagnostic du jeu -LPDumpVars, -LPTrace*, -LPDump* (09_Commandes_Utiles.md §4) ✅