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)
- 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).
- Comparer des builds empaquetées de même configuration (Development ; Shipping ne journalise pas).
- Vérifier que les deux journaux atteignent le même point :
index SPAWN > 0 des deux côtés.
- Normaliser les compteurs par le nombre de personnages générés.
- 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 -stage -pak:false -archive -archivedirectory=D:\Game\LifePlay_Build_5.5_V1.
| 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)
- Lancer la build, nouvelle partie avec le personnage par défaut.
- Attendre la fin du chargement (menu principal puis ville
CentralLondon).
- Déclencher 3 actions de lieu provoquant des scènes avec PNJ générés (
generatePerson()).
- Vérifier à l'écran : PNJ visibles, habillés, prénoms variés.
- Sauvegarder (emplacement
TestV1), quitter, relancer, charger TestV1.
- Vérifier : même jour et heure, contacts présents.
- 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) |
Commandlets LifePlayEditorTools |
LPCheckMeshAssignment, LPCheckStreetMap, LPDumpFunction, LPFix* (option -DryRun) |
existants |