LifePlay-Revival/Docs/Migration/etat/U58/U5/U5-T3-RESAVE.md
edujiro5972 8084622450 LifePlay UE 5.8 : état de développement au 2026-10-19
Tickets : REP1-T4

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 22:57:42 +02:00

18 KiB
Raw Blame History

Fiche U5-T3/T4 — Niveau N1 — Modèle prévu sonnet | utilisé Sonnet 5.5 (claude-sonnet-5-5) — Agent lp-validator — Skills sk-protocol, sk-recount, debug-verification, lp-validate, lp-commandlets

U5-T3/T4 — Réenregistrement des 590 paquets hors Heavy sous UE 5.8 et contrôles

Copie 5.8 D:\Game\LifePlay-master 5.8, branche ue5.8, HEAD 5ed078d (= tag U5-avant), aucun commit. Établi = commande rejouée ou fichier lu ; estimé = déduit ; incertain = non vérifié. Scripts d'appoint (scratchpad seulement) : snap.py, r2.py, ver.py, filt.py, grp.py.

Résumé (12 lignes)

  1. R1 PASS : LPResavePackages (sans DryRun) code 0, 590 paquet(s), 590 sauvegarde(s), 0 echec(s), 141 s (wrapper), 125,86 s (commandlet), pic 8 780 Mo physique (DryRun : 6 057 Mo).
  2. R2 PASS : 590/590 paquets de la liste modifiés (date et taille) ; 292 fichiers Content suivis modifiés, 0 hors Content ; 0 fichier nouveau ou supprimé (3 092 avant, 3 092 après) ; 0 fichier hors liste modifié.
  3. R3 ÉCART : diff avant/après filtré = 1 632 lignes différentes (1 539 <, 93 >), réparties sur les 590 paquets ; attendu 0 non atteint. Causes visibles : PackageMetaData retiré partout (590), ControlRigClass FKControlRig (198 retirées), chaînes de retarget et hash de rigs (RTG, IK, CR). Détail ci-dessous.
  4. R3 : le dump « après » sort en code 1 (nouveau : une ligne LogCore: Error: Invalid input … FRotator::Quaternion … NaN pendant la reconstruction de l'animation /Game/Heavy/New3/Anims/DM_RazDog_0) ; le fichier est complet (590 paquets, 0 « chargement impossible »). Avant : code 0, 0 occurrence. ÉCART à juger.
  5. R4 PASS (identique à T2) : CompileAllBlueprints code 0, 410 BP (110 /Game), 0 erreur, 0 avertissement de compilation BP, 28 avertissements de pose (mêmes 28 poses ; seul le second hash change), 271 s (avant 312 s).
  6. R5 PASS : LPCheckStreetMap code 0, 280/280, CSV identique à celui de T2 et à la référence 5.5 (diff vide), routes 20 981, bâtiments 53 050, amenity 6 635, parcs 459.
  7. R6 PASS : 5/5 paquets passent de ++UE5+Release-5.5 (UE5 1013, legacy -8) à ++UE5+Release-5.8 (UE5 1018, legacy -9) ; un .umap (Overview) était en 5.3 (UE5 1009).
  8. Aucun plantage (Saved\Crashes : mêmes 2 dossiers), aucun UnrealEditor ouvert, git status : 292 M Content/… et rien d'autre.
  9. R1 : 3 avertissements « Objet … SKM_Manny/SKM_Quinn … introuvable » (0 en DryRun, 0 « LoadErrors ») ; effet non mesuré, voir R1.
  10. Rien restauré, rien commité, une seule exécution de R1.

R1 — Réenregistrement (établi)

  • Commande : .\Tools\RunCommandlet.ps1 -Lot U5 -Commandlet LPResavePackages -Args '-List="D:\Game\LifePlay-master 5.5\Docs\Migration\etat\U58\U5\U5-liste-resave-590.txt"', depuis la copie 5.8, sans -DryRun, une seule exécution.
  • Code 0 ; === Termine : 590 paquet(s), 590 sauvegarde(s), 0 echec(s) de sauvegarde. === ; durée wrapper 141 s ; Execution of commandlet took: 2m 5s (125.85 seconds), PeakPhysMemoryMB=8780 MB, PeakVirtMemoryMB=9366 MB.
  • Journal Saved\Logs\portage\U5_LPResavePackages_20261008-202628.log, résumé Docs\Migration\etat\U5_LPResavePackages_20261008-202628.txt. Wrapper : erreurs=0, avertissements=673 (614 lignes LogLPResave: Warning = liste des paquets + récapitulatif ; 28 poses LogAnimation ; 3 LogUObjectGlobals).
  • Les 3 LogUObjectGlobals: Warning: Objet '…' introuvable : /Game/AnimationsBundle/FightingAnimations/Demo/Characters/Mannequins/Meshes/SKM_Manny.SKM_Manny, /Game/Characters/Heroes/Mannequin/Meshes/SKM_Manny.SKM_Manny, /Game/Characters/Heroes/Mannequin/Meshes/SKM_Quinn.SKM_Quinn. Absents du DryRun E6 (0 occurrence, grep -c introuvable). Ces chemins sont des références à des assets qui n'existent pas dans le projet (estimé) ; si elles étaient déjà présentes dans les paquets avant, la sauvegarde les a laissées en l'état. Incertain : essai qui tranche = rechercher ces chemins dans le dump avant.
  • Verdict R1 : PASS.

R2 — État du disque (établi)

Méthode : instantané (chemin, taille, mtime ns) de Content hors Heavy avant R1 et après R1 (snap.py), comparaison r2.py ; git status --short.

Contrôle Résultat
Fichiers Content hors Heavy avant / après 3 092 / 3 092 ; nouveaux : 0 ; supprimés : 0
Fichiers de la liste dont la date a changé 590 / 590 (taille changée : 590 / 590)
Fichiers hors liste dont taille ou date a changé 0
Taille totale de la liste 743 256 561 o avant, 617 602 423 o après (−125,65 Mo)
git status --short 292 lignes, toutes M Content/… ; lignes hors Content : 0 ; git diff --stat : 292 files changed (binaires)
git ls-files Content 292 (tous modifiés)

Recompte indépendant : git status --short | wc -l = 292 ; grep -vc ' Content/' = 0 ; git diff --stat | tail -1 = 292. Les 298 autres paquets non suivis (590 − 292) sont modifiés sur disque, invisibles à git (ignorés). Verdict R2 : PASS.

R3 — Dump après et diff (établi)

  • Commande : .\Tools\RunCommandlet.ps1 -Lot U5 -Commandlet LPDumpAssets -Args '-List="…\U5-liste-resave-590.txt" -Out="D:\Game\LifePlay-master 5.8\Saved\Logs\portage\U5_assets_apres.txt"'.
  • Code 1 (91 s) ; fichier écrit : 1 461 699 lignes (avant : 1 463 145), 590 lignes #####, 0 « chargement impossible ». Journal U5_LPDumpAssets_20261008-202937.log. Seule ligne Error : LogCore: Error: Invalid input P=3.174330 Y=-0.413304 R=-nan to FRotator::Quaternion - generated NaN output (journal ligne 1703), juste après Building compressed animation data for AnimSequence /Game/Heavy/New3/Anims/DM_RazDog_0 ; 0 Invalid input et 0 « Building compressed » dans les dumps avant (avant2) ; 1 ici. Ce n'est pas un échec de chargement (la commandlet ne code 1 que pour ses propres échecs, sinon le lanceur compte l'erreur du journal : estimé, non prouvé). Un paquet /Game/Heavy/… est chargé comme dépendance et recompressé (estimé). Incertain : lien causal avec le resave (essai : relancer un dump sans resave ne reproduit pas, avant et avant2 à 0).
  • Filtre (filt.py) : suppression des lignes NodeGuid = / GraphGuid = (143 869 dans chaque fichier) et des lignes SourceModels = des paquets contenant SKM_Manny_Simple ou SKM_Quinn (3 lignes retirées dans chaque fichier : le motif SKM_Quinn couvre aussi SKM_Quinn_Simple) ; chaque ligne conservée est préfixée paquet|objet|. Contrôle du filtre : avant contre avant2 = 0 ligne différente (le bruit connu est bien éliminé).
  • Résultat avant/après filtré : 1 632 lignes différentes (diff, lignes < = 1 539, lignes > = 93) ; 590 paquets touchés (tous, à cause de PackageMetaData). Critère attendu « 0 » : NON atteint.

Regroupement par propriété (lignes < retirées / > ajoutées) :

Propriété < > Remarque
objet PackageMetaData [MetaData] 590 0 disparaît de chaque paquet (1 par paquet)
ControlRigClass (/Script/ControlRig.FKControlRig) 198 0 pistes MovieSceneControlRigParameterSection des AnimPacks B_AS_*, M_AS_*
SourceChain 154 0 RTG_Mannequin, RTG_Bridget, RTG_Michael, versions ue5
TargetChain 154 0 idem
Settings (FK/IK de RetargetChainSettings) 120 0 idem
LastStructureHash 52 52 valeur de hash changée (CR_Mannequin_Body, _BasicFootIK, _Procedural…)
Source 29 29
Bone, RotationStiffness, bUsePreferredAngles, PreferredAngles 14 / 8 / 6 / 6 — IK_Mannequin (IKRig PBIK)
ChainMap, ChainSettings 5 / 5 —
ErrorType (valeur 4), ErrorMsg — 3 / 1 ABP_Manny : nœuds SequencePlayer / transition automatique marqués en erreur après resave
RequiredPlugins — 3 ControlRigBlueprint (ex. ("ControlRig","RigVM","FullBodyIK"))
SourceModels (SKM_Manny, SKM_Quinn…) 2 2 structure différente
LightingGuid 1 1 MID_M_Sky_Panning_Clouds2_0 de CentralLondon
autres (MeshEditorDataObject, Links, DisplayNameMap, Solvers, GoalName, BoneName, Effectors…) quelques lignes voir par paquet

Paquets les plus touchés (lignes différentes) : RTG_Mannequin 177 ; RTG_Bridget, RTG_Michael, RTG_Bridget_ue5, RTG_Michael_ue5 105 chacun ; CR_Mannequin_Body 100 ; IK_Mannequin 67 ; CR_Mannequin_BasicFootIK 8 ; ABP_Manny 5 ; SKM_Manny 5 ; CR_Mannequin_Procedural 4 ; puis 3 par maillage ou texture de mannequin. Lecture (estimé) : une fois PackageMetaData écarté (590 lignes), il reste 1 042 lignes concentrées sur les rigs et retargeters de mannequins (ControlRig, IKRig, IKRetargeter) et les pistes ControlRig des AnimPacks : conversion de format moteur, pas du contenu Blueprint/UI/Structs du jeu (BPs, UI, Render : 0 différence hors PackageMetaData ; Structs : 2 lignes, DisplayNameMap de AchievementType dont les clés NSLOCTEXT sont régénérées ; Scenes : 2 lignes LightingGuid ; établi, Annexe B). Incertain : si ces différences changent le comportement en jeu (retarget, ABP_Manny ErrorType) ; l'essai qui tranche est un contrôle en jeu des animations de mannequin.

Contrôle (établi) : grep -v "PackageMetaData" diff_aa.txt | grep -E '^[<>]' par préfixe de paquet à lancer pour confirmer l'absence de différence sous /Game/BPs, /Game/UI, /Game/Structs, /Game/Render, /Game/Scenes hors LightingGuid ; ce détail est donné en fin de fichier.

Verdict R3 : ÉCART (critère 0 non atteint ; code 1 du dump) — à juger par l'orchestrateur.

30 premières différences in extenso (format côté paquet | objet | ligne)

Voir Annexe A en fin de fichier.

R4 — CompileAllBlueprints (établi)

  • Commande : .\Tools\RunCommandlet.ps1 -Lot U5 -Commandlet CompileAllBlueprints ; journal Saved\Logs\portage\U5_CompileAllBlueprints_20261008-203108.log, résumé Docs\Migration\etat\U5_CompileAllBlueprints_20261008-203108.txt.
Relevé T2-E1 (avant) R4 (après)
Code 0 0
Durée 312 s 271 s
BP compilés (Loading and Compiling uniques) 410 410 (liste identique : diff vide)
dont /Game 110 110
« a réussi » 410 410
Erreurs 0 0
Échecs de chargement BP 0 0
Compiling Completed with 0 errors, 0 warnings 0 errors, 0 warnings
Avertissements de compilation BP 0 0
Success - 0 error(s), N warning(s) 28 28
Avertissements « Ressource de la pose … » (uniques, hors doublon LogInit) 28 28 (mêmes poses Manny et Quinn)

Seule différence : le second hash de chaque ligne de pose (… 8E2B50DD07CBD0EC07FCDD7DE6C03CCF vs CC78212C… devient vs 1D634D87… pour Manny_calf_l), la liste des poses étant identique. Les avertissements ne sont donc pas résolus par le resave (28 avant, 28 après). 0 avertissement autre. Verdict R4 : PASS (identique à T2).

R5 — LPCheckStreetMap (établi)

  • Commande : .\Tools\RunCommandlet.ps1 -Lot U5 -Commandlet LPCheckStreetMap -Args '-Path=/Game/Heavy/StreetMap -CSV="D:\Game\LifePlay-master 5.8\Docs\Migration\etat\U5_streetmap_apres.csv"' ; code 0, 26 s ; résumé U5_LPCheckStreetMap_20261008-203540.txt.
  • 280 / 280 villes, 0 échec, 0 ville sans données, routes 20 981, bâtiments 53 050, avec amenity 6 635, plans d'eau 0, parcs 459.
  • CSV U5_streetmap_apres.csv (281 lignes) : diff contre U5_streetmap_58.csv (T2) = vide ; diff contre L7h_streetmap_55.csv (référence 5.5) = vide. Verdict R5 : PASS.

R6 — Version des paquets (établi)

Lecture de l'en-tête (ver.py : tag, LegacyFileVersion, UE4, UE5, chaîne ++UE5+Release-5.x). « Avant » lu sur les fichiers avant R1 (identiques à l'instantané LifePlay_Backup_5.5\U5 d'après T1 § f ; GI.uasset relu aussi dans l'instantané : 5.5 / 1013).

Paquet Avant Après
Content\BPs\GI.uasset legacy -8, UE4 522, UE5 1013, ++UE5+Release-5.5 legacy -9, UE4 522, UE5 1018, ++UE5+Release-5.8
Content\Scenes\CentralLondon.umap -8, 522, 1013, 5.5 -9, 522, 1018, 5.8
Content\FreeAnimationsPack\Map\Overview.umap -8, 522, 1009, 5.3 -9, 522, 1018, 5.8
Content\Structs\Achievement.uasset -8, 522, 1013, 5.5 -9, 522, 1018, 5.8
Content\UI\Achievement.uasset -8, 522, 1013, 5.5 -9, 522, 1018, 5.8

Verdict R6 : PASS (5/5). Note : seul un échantillon de 5 sur 590 est lu ; les 590 ont changé de taille et de date (R2) (estimé : tous au format 5.8).

Plantages, état final (établi)

Saved\Crashes : mêmes deux dossiers UECC-…72D0C54F… et UECC-…E6329758… qu'avant (aucun nouveau). tasklist : aucun UnrealEditor. HEAD 5ed078d. Rien restauré, aucun commit, aucune suppression, aucune modification de source, de config ni de script.

Écarts et points à juger

  1. R3 : 1 632 lignes différentes au lieu de 0 (détail ci-dessus) : à juger (conversion de format attendue, ou perte de données sur rigs, retargeters, ABP_Manny, pistes ControlRig).
  2. R3 : dump « après » en code 1 à cause d'une ligne LogCore: Error NaN (DM_RazDog_0, sous Heavy, hors liste) absente avant.
  3. R1 : 3 avertissements « Objet … introuvable » (0 en DryRun).
  4. R4 : 28 avertissements de pose inchangés (non corrigés par le resave).
  5. Taille de la liste : −125,65 Mo après resave ; 292 fichiers binaires à commiter (décision de l'orchestrateur).
  6. Points non rejoués : contrôles en jeu, ouverture éditeur, comparaison de comportement des animations.

Fichiers écrits : ce livrable ; dans la copie 5.8 : journaux et résumés U5_* (Saved\Logs\portage\, Docs\Migration\etat\), U5_assets_apres.txt, U5_streetmap_apres.csv ; scratchpad : scripts et diff (diff_aa.txt, grp.out). Contenu de Content modifié (590 paquets), voulu par la fiche.

Annexe A — 30 premières différences (sortie de grp.py)

< B_AS_AirKiss | B_AS_AirKiss:AnimationSequencerDataModel.MovieScene.MovieSceneControlR |     ControlRigClass = /Script/CoreUObject.Class'/Script/ControlRig.FKControlRig'
< B_AS_AirKiss | PackageMetaData [MetaData] |   PackageMetaData [MetaData]
< B_AS_AttackInLevitation2 | B_AS_AttackInLevitation2:AnimationSequencerDataModel.MovieScene.MovieS |     ControlRigClass = /Script/CoreUObject.Class'/Script/ControlRig.FKControlRig'
< B_AS_AttackInLevitation2 | PackageMetaData [MetaData] |   PackageMetaData [MetaData]
< B_AS_ChillDriving | B_AS_ChillDriving:AnimationSequencerDataModel.MovieScene.MovieSceneCon |     ControlRigClass = /Script/CoreUObject.Class'/Script/ControlRig.FKControlRig'
< B_AS_ChillDriving | PackageMetaData [MetaData] |   PackageMetaData [MetaData]
< B_AS_ComboHands | B_AS_ComboHands:AnimationSequencerDataModel.MovieScene.MovieSceneContr |     ControlRigClass = /Script/CoreUObject.Class'/Script/ControlRig.FKControlRig'
< B_AS_ComboHands | PackageMetaData [MetaData] |   PackageMetaData [MetaData]
< B_AS_EatingOnParty | B_AS_EatingOnParty:AnimationSequencerDataModel.MovieScene.MovieSceneCo |     ControlRigClass = /Script/CoreUObject.Class'/Script/ControlRig.FKControlRig'
< B_AS_EatingOnParty | PackageMetaData [MetaData] |   PackageMetaData [MetaData]
< B_AS_FlyingUp | B_AS_FlyingUp:AnimationSequencerDataModel.MovieScene.MovieSceneControl |     ControlRigClass = /Script/CoreUObject.Class'/Script/ControlRig.FKControlRig'
< B_AS_FlyingUp | PackageMetaData [MetaData] |   PackageMetaData [MetaData]
< B_AS_GoForward | B_AS_GoForward:AnimationSequencerDataModel.MovieScene.MovieSceneContro |     ControlRigClass = /Script/CoreUObject.Class'/Script/ControlRig.FKControlRig'
< B_AS_GoForward | PackageMetaData [MetaData] |   PackageMetaData [MetaData]
< B_AS_Rest | B_AS_Rest:AnimationSequencerDataModel.MovieScene.MovieSceneControlRigP |     ControlRigClass = /Script/CoreUObject.Class'/Script/ControlRig.FKControlRig'
< B_AS_Rest | PackageMetaData [MetaData] |   PackageMetaData [MetaData]
< B_AS_RightLegKick2 | B_AS_RightLegKick2:AnimationSequencerDataModel.MovieScene.MovieSceneCo |     ControlRigClass = /Script/CoreUObject.Class'/Script/ControlRig.FKControlRig'
< B_AS_RightLegKick2 | PackageMetaData [MetaData] |   PackageMetaData [MetaData]
< B_AS_Talk | B_AS_Talk:AnimationSequencerDataModel.MovieScene.MovieSceneControlRigP |     ControlRigClass = /Script/CoreUObject.Class'/Script/ControlRig.FKControlRig'
< B_AS_Talk | PackageMetaData [MetaData] |   PackageMetaData [MetaData]
< M_AS_AirKiss | M_AS_AirKiss:AnimationSequencerDataModel.MovieScene.MovieSceneControlR |     ControlRigClass = /Script/CoreUObject.Class'/Script/ControlRig.FKControlRig'
< M_AS_AirKiss | PackageMetaData [MetaData] |   PackageMetaData [MetaData]
< M_AS_AttackInLevitation2 | M_AS_AttackInLevitation2:AnimationSequencerDataModel.MovieScene.MovieS |     ControlRigClass = /Script/CoreUObject.Class'/Script/ControlRig.FKControlRig'
< M_AS_AttackInLevitation2 | PackageMetaData [MetaData] |   PackageMetaData [MetaData]
< M_AS_ChillDriving | M_AS_ChillDriving:AnimationSequencerDataModel.MovieScene.MovieSceneCon |     ControlRigClass = /Script/CoreUObject.Class'/Script/ControlRig.FKControlRig'
< M_AS_ChillDriving | PackageMetaData [MetaData] |   PackageMetaData [MetaData]
< M_AS_ComboHands | M_AS_ComboHands:AnimationSequencerDataModel.MovieScene.MovieSceneContr |     ControlRigClass = /Script/CoreUObject.Class'/Script/ControlRig.FKControlRig'
< M_AS_ComboHands | PackageMetaData [MetaData] |   PackageMetaData [MetaData]
< M_AS_EatingOnParty | M_AS_EatingOnParty:AnimationSequencerDataModel.MovieScene.MovieSceneCo |     ControlRigClass = /Script/CoreUObject.Class'/Script/ControlRig.FKControlRig'
< M_AS_EatingOnParty | PackageMetaData [MetaData] |   PackageMetaData [MetaData]

Annexe B — Différences hors PackageMetaData par dossier (1 042 lignes)

FreeAnimationsPack 473 ; Quaternius 337 ; Retarget_ue5 208 ; AnimPacks 20 ; Structs 2 ; Scenes 2 (LightingGuid) ; BPs 0 ; UI 0 ; Render 0. Commande : grep -E "^[<>]" diff_aa.txt | grep -v "|PackageMetaData" | sed -E "s#^[<>] (/Game/[^/|]*).*#\1#" | sort | uniq -c.