LifePlay-Revival/Docs/Migration/etat/sandbox/DC2/DC2-VAL.md
edujiro5972 bd4ea43d20 DC2 : commandlets de mods dans le module LPModTools de l'addon ; le jeu compile et demarre sans l'addon (CHG-235)
13 sources retirees de LifePlayEditorTools (LPAnimEval/Twist/Catalog/Identify, LPAnimChecks,
LPAnimMethodSelect, LPHairFromStaticMesh) ; LifePlayEditorTools.Build.cs ne depend plus de
LPAnimMeasure. Pin addon 97c0d13. Validation : DC2-BUILD avec et sans addon code 0,
DC2-VAL PASS (resultats identiques a SB2-REF, jeu -game sans addon).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 19:14:48 +02:00

12 KiB
Raw Blame History

DC2-VAL — Validation automatique du lot DC2 (DC2-T3)

Fiche DC2-T3 — Modèle prévu sonnet | utilisé sonnet

  • Date : 2026-10-07. Build testé : celui de DC2-BUILD.md (code 0, non recompilé). Lot DC2 : commandlets de mods (LPAnimEval, LPAnimTwist, LPAnimCatalog, LPAnimIdentify, LPHairFromStaticMesh) déplacés dans le module éditeur LPModTools de l'addon.
  • Journaux copiés dans D:\Game\LifePlay_Backup_5.5\DC2-VAL\ : E1_*_console.txt, E2_*_console.txt, E2_*_result.txt, E2_*_sandbox.log, E3_console.txt + E3_out\, DC2_LPAnimTwist_*.log/.txt, E4_*_console.txt, DC2_LPAnimCatalog_*.log, DC2_LPHairFromStaticMesh_*.log, E5a_console.txt, DC2_LPAnimEval_20261007-190750.log, E5b_game_noaddon.log, AP7_LPAnim*.log (le dossier contient aussi d'anciens AP7_* copiés par un joker trop large ; seuls les AP7_LPAnimIdentify_20261007-183742/183801 et AP7_LPAnimEval_20261007-183828/185814 sont de cette validation).
  • Méthode : celle de DC1-VAL.md / SB4-VAL.md, tournées par AnimPipeline.ps1 (pwsh 7), aucun éditeur avant chaque lancement. Aucune commande git hors status, aucun source/script/ini modifié, aucune recompilation.

Tableau des essais

Essai Attendu Constaté (lignes recopiées) Verdict
E1 quaternius -From 2 -To 2 code 0, verdict ok, fichiers = réf code 0, 14 s. [ok] identification.json valide : profil ue4_mannequin, methode ue4, verdict : ok (14 s). Journal : LogLPAnimMeasure: PATHS racine addon D:/Game/LifePlay-Sandbox. identification.json SHA-256 identique à SB2-REF (310CCE61A3B7). etapes\2_identification.json : SHA différent (0AF3F335AAB3 réf / BF81B7520808 nouveau), JSON égal une fois debut/fin/duree_s ignorés. PASS
E1 freeanims idem code 0, 13 s. profil ue5_mannequin, methode ue5, verdict : ok. identification.json identique à la réf (557013ADCB21). etapes\2_identification.json : SHA différent (E282521BBA35 / 345D5EBB5A56), JSON égal hors dates. PASS
E2 quaternius -From 5 -To 5 code 0, avertissement, 8 avertissements, 44 fichiers code 0, 1136 s, verdict : avertissement (1136 s). Journal éditeur : LogLPAnimMeasure: PATHS racine addon D:/Game/LifePlay-Sandbox ; TOURNEE debut 43 clips, 129 etapes ; Ouvert : lps_asset_integration (declencheur, non memorise) ; TOURNEE debut 43 clips, 2080 etapes ; TOURNEE fermeture demandee. Open=lps_couple avant et après. Comparaison : voir ci-dessous. PASS
E2 freeanims code 0, ok, 0 avertissement, 73 fichiers code 0, 435 s, verdict : ok (435 s). Journal : PATHS racine addon D:/Game/LifePlay-Sandbox ; TOURNEE debut 10 clips, 30 etapes ; Ouvert : lps_asset_integration (declencheur, non memorise) ; TOURNEE debut 10 clips, 697 etapes ; TOURNEE fermeture demandee. Open=lps_couple après. PASS
E3 LPAnimTwist à blanc code 0, rapport valide Arguments reconstitués avec certitude depuis les commandes journalisées par le pilote (etapes\5_evaluation.json, ligne LPAnimTwist) : -Methode=ue4 -ClipDir=/Game/Quaternius/UAL -RefClip=A_TPose -BodyClipDir=/Game/Quaternius/UAL -Templates=Bridget:/Game/Heavy/Daz/Anims/Idle_F_Daz,Michael:/Game/Heavy/Daz/Anims/idle_Daz -Bodies=Bridget:B_,Michael:M_ -Out=... + -DryRun. Écart volontaire : -Out pointé vers D:/Game/LifePlay_Backup_5.5/DC2-VAL/E3_out (le commandlet écrit rapport_torsion.json même à blanc ; cela aurait écrasé un fichier de résultat comparé à la réf). Code 0, 23 s. LogLPAnimTwist: Display: TORSION Bridget profil genesis8 : 6 paires Bend / Twist ; lignes TORSION B_Walk_Loop 41 cles, torsion deplacee 0.0 deg, conservation 0.00000 deg 0.00000 cm (essai) ; TORSION resultat VALIDE : 0 echec(s) ; rapport_torsion.json : essai_a_blanc=true, valide=true. Journal : PATHS racine addon D:/Game/LifePlay-Sandbox. Saved\AnimPipeline\quaternius\rapport_torsion.json inchangé (SHA D7A3BF92E174 = réf). PASS
E4 LPAnimCatalog (-DryRun seul) trouvé (pas « introuvable ») LogInit: Executing Class /Script/LPModTools.LPAnimCatalogCommandlet. Code 0 : pas d'erreur d'argument — le commandlet a des valeurs par défaut (pack quaternius) et a écrit LogLPAnimCatalog: Warning: CATALOGUE fiches 42 echecs 0 -> .../Saved/AnimPipeline/quaternius/fiches_calculees.json (voir anomalie 1). Aucun asset UE écrit. PASS (trouvé) — écriture signalée
E4 LPHairFromStaticMesh (-DryRun seul) trouvé, erreur d'argument LogInit: Executing Class /Script/LPModTools.LPHairFromStaticMeshCommandlet puis LogLPHairFromStatic: Error: Usage : -Static=<StaticMesh> -FitHead=<StaticMesh> -Out=</Game/...> [-Body=] [-RefHair=] [-Bone=head] [-Scale=] [-OffsetZ=] [-OffsetY=] [-DryRun], result 1. Aucune écriture. PASS
E5a jeu sans addon, LPAnimEval commandlet introuvable Code 1 : LogInit: Error: LPAnimEvalCommandlet looked like a commandlet, but we could not find the class. PASS
E5b jeu -game sans addon (120 s) LPAnimCore monté, LPSandbox absent, carte chargée LogPluginManager: Mounting Project plugin McpAutomationBridge / LPAnimCore / ModdingExtra / StreetMap (aucune ligne LPSandbox ; aucune ligne AdditionalPluginDirectory ni refus d'aucune sorte dans ce journal ; le projet reste lancé sans message d'erreur, LifePlay.uproject référence toujours le plugin LPSandbox et le répertoire ../LifePlay-Sandbox/Plugins). LogLoad: LoadMap: /Game/Scenes/CentralLondon?Name=Player puis Took 0.790986 seconds to LoadMap(/Game/Scenes/CentralLondon). Seul Error : LogPlayerController: Error: InputMode:UIOnly - Attempting to focus Non-Focusable widget SObjectWidget [Widget.cpp(968)]! (UI du menu, voir anomalie 3). Aucun Fatal/Ensure. Pas de ligne Coiffures : ... introuvable (l'Error Coiffures connu est propre à la sandbox ; ici : Coiffures : base 126 entree(s) ... table de 126 entree(s), 89 morph(s)). Processus arrêté (Stop-Process). PASS
E6 état final ini standard, 0 éditeur, addon en place Saved\sandbox_mods.ini : Open=lps_couple (3 modules activés, ordre standard) ; 0 UnrealEditor ; Test-Path D:\Game\LifePlay-Sandbox\Plugins\LPSandbox\LPSandbox.uplugin = True ; LifePlay-Sandbox.__DC2_absent n'existe plus. PASS

Détail E2 : comparaison complète contre SB2-REF\<pack>\

Règle DC1-VAL/SB4-VAL : SHA-256 de chaque fichier commun ; exclus : etapes\5_evaluation.json (JSON sur verdict + avertissements), etat.json, ligne « Généré le » de rapport.html, images freeanims (les 20 connues). Le dossier precedent_* est inclus dans le décompte (comme aux lots précédents).

quaternius : 44 fichiers comparés (liste 44 / 44 identique)

  • 40 fichiers au SHA-256 identique. Seuls différents : etat.json (fin/maj uniquement), rapport.html (seule ligne : « Généré le » 07/10/2026 12:10:18 → 18:38:49), etapes\5_evaluation.json (verdict avertissement des deux côtés ; 8 avertissements, listes égales en JSON ; durée 1136 s = 1136 s) et etapes\2_identification.json (réécrit par E1, dates seules).
  • Tous les .json/.csv/.txt de données (rapport.json, eval_*.csv, controles_*.csv, retarget_pose_*.txt, rapport_torsion.json, fiches_calculees.json...) identiques.

freeanims : 73 fichiers comparés (liste 73 / 73 identique)

  • 49 fichiers identiques. 24 différents : les 4 fichiers exclus ci-dessus (etat.json, rapport.html « Généré le » 12:31:18 → 18:58:36, etapes\5_evaluation.json : verdict ok, 0 avertissement des deux côtés, durée 435 s = 435 s, etapes\2_identification.json dates) et 20 images, exactement les 20 connues (10 planches .jpg + 10 vignettes .png : AirKiss, AttackInLevitation2, ChillDriving, ComboHands, EatingOnParty, FlyingUp, GoForward, Rest, RightLegKick2, Talk), écarts de taille inférieurs à 0,3 % (ex. AS_AirKiss.png 261470 → 261276 ; AS_Talk.png 260083 → 259267).
  • 73 − 4 − 20 = 49 fichiers de données identiques.

Anomalies

  1. E4 LPAnimCatalog sans argument n'échoue pas : le commandlet a des valeurs par défaut (pack quaternius) et, même avec -DryRun (qui ne concerne pas ce commandlet), il a réécrit Saved\AnimPipeline\quaternius\fiches_calculees.json (fichier de résultat, pas un asset UE). Seule différence avec la réf : chemin livraison en absolu au lieu de relatif (D:/Game/... vs ../../../../../../LifePlay-master 5.5/...). J'ai restauré le fichier par copie depuis SB2-REF\quaternius\fiches_calculees.json (il était identique à la réf juste avant E4, cf. E2) ; SHA vérifié après copie (5DBBA632FAF3). Comportement hérité du commandlet d'origine, non lié au déplacement (le code est identique octet pour octet).
  2. E3 : -Out redirigé hors de Saved\AnimPipeline (voir tableau) ; les 204 avertissements du résumé RunCommandlet sont les lignes TORSION journalisées en Warning/Display, pas des erreurs.
  3. E5b : LogPlayerController: Error: InputMode:UIOnly... : non rencontré dans les journaux de la sandbox (autre scène), vraisemblablement propre au menu du jeu ; non analysé plus avant (hors périmètre DC2). Pas de ligne AdditionalPluginDirectory ... not found dans le journal -game (contrairement au journal de build DC2-BUILD) : l'absence de l'addon est silencieuse au runtime.
  4. E5a et E5b ont été lancés dans deux séquences de renommage distinctes (l'addon avait été remis en place entre les deux par le finally, puis renommé de nouveau pour E5b) ; vérification Test-Path ...LPSandbox.uplugin = True après chacune.
  5. Les chemins Tools/anim : l'addon n'a pas de Tools\anim (Test-Path = False) ; les commandlets (Identify lit profiles, Eval/Twist lisent methodes) ont fonctionné en repli sur le jeu. Le journal ne trace que PATHS racine addon D:/Game/LifePlay-Sandbox, pas le dossier Tools/anim retenu ; le repli est prouvé indirectement par le succès de E1/E2/E3 et l'identité des résultats.
  6. Éditeur plantant à la fermeture : non observé.

État final (E6)

  • Saved\sandbox_mods.ini : [Mods] Order=lps_couple,lps_interaction,lps_asset_integration, Open=lps_couple, [Enabled] les trois à true.
  • UnrealEditor : 0 processus.
  • git -C D:\Game\LifePlay-Sandbox status --short (changements DC2 non commités, attendu) :
 M Plugins/LPSandbox/LPSandbox.uplugin
 M Plugins/LPSandbox/Source/LPAnimMeasure/LPAnimMeasure.Build.cs
 M Plugins/LPSandbox/Source/LPAnimMeasure/LPPoseMeasure.cpp
 M Plugins/LPSandbox/Source/LPAnimMeasure/LPSkeletonProfile.cpp
 M Plugins/LPSandbox/Source/LPSandbox/LPSandboxConfig.cpp
?? Plugins/LPSandbox/Source/LPAnimMeasure/LPAnimMeasurePaths.cpp
?? Plugins/LPSandbox/Source/LPAnimMeasure/LPAnimMeasurePaths.h
?? Plugins/LPSandbox/Source/LPModTools/
  • Addon en place : LifePlay-Sandbox.__DC2_absent absent, LPSandbox.uplugin présent.

Verdict

PASS (partie automatique) : E1 (identification identique à la réf), E2 (quaternius avertissement 8 avertissements, 44 fichiers ; freeanims ok, 73 fichiers ; données identiques, seules différences dates, « Généré le » et les 20 images non déterministes ; Open=lps_couple préservé), E3 (LPAnimTwist valide à blanc), E4 (les deux commandlets sont trouvés dans /Script/LPModTools), E5 ((a) introuvable sans addon ; (b) LPAnimCore monté, LPSandbox absent, carte CentralLondon chargée), E6 (addon en place). Le nouveau code tourne (PATHS racine addon dans tous les journaux d'éditeur testés).

Point à noter pour l'utilisateur : anomalie 1 (LPAnimCatalog écrit fiches_calculees.json sans argument, fichier restauré).

Modèles par fiche

Fiche Modèle prévu Modèle utilisé
DC2-T1 opus opus
DC2-T2 haiku haiku
DC2-T3 sonnet sonnet