LifePlay-Revival/Docs/Migration/etat/sandbox/S2/S2-VAL.md
edujiro5972 04b053554f Sandbox addon : brancher le jeu sur LifePlay-Sandbox (plugin LPSandbox).
Charge le plugin via AdditionalPluginDirectories, conserve ShowCouple et les commandlets anim côté jeu, et documente les lots S0–S8 (CHG-212 à CHG-220).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-06 21:10:53 +02:00

5.8 KiB

S2-VAL - Validation du lot S2 (module LPAnimMeasure)

  • Date : 2026-10-06
  • Fiche : S2-T4a / S2-T4b | Rôle : A-VAL puis prep DOC
  • Modèle prévu : claude-sonnet-5-5-high (M2) | Modèle utilisé : claude-sonnet-5-5-high (M2)
  • Références : S2-CART.md, S2-IMPL-H.md

Verdict : PASS (statique et runtime Mesure)

# Contrôle Résultat
1 Source/LPAnimMeasure/ : 8 fichiers déplacés + Build.cs + module (.h/.cpp) PASS (11 fichiers)
2 Source/LifePlay/ sans LPPoseMeasure*, LPSkeletonProfile*, LPPoseOrchestrator*, LPAnimRedirect* PASS (0 fichier, recherche récursive dans Source/)
3 LifePlay.uproject liste LPAnimMeasure PASS (Runtime, Default, avant LifePlay)
4 LifePlay.Build.cs et LifePlayEditorTools.Build.cs dépendent de LPAnimMeasure PASS (les deux en PublicDependencyModuleNames)
5 Binaires récents (DLL LPAnimMeasure) après compilation S2-T2 PASS
6 Runtime du bat Mesure PASS (lancé, 75 s, journal LogLPAnimMeasure actif, 0 erreur de module ou de lien)

1. Contenu de Source/LPAnimMeasure/

Fichier Rôle
LPAnimMeasure.Build.cs règles du module (Core, CoreUObject, Engine publics ; Json privé ; aucune dépendance vers LifePlay)
LPAnimMeasure.h / .cpp IMPLEMENT_MODULE(FDefaultModuleImpl, LPAnimMeasure) ; catégorie LogLPAnimMeasure (LPANIMMEASURE_API)
LPPoseMeasure.h / .cpp 8 fichiers déplacés (CART §2)
LPSkeletonProfile.h / .cpp
LPPoseOrchestrator.h / .cpp
LPAnimRedirect.h / .cpp SetUALRoot / GetUALRoot ajoutés

Aucune occurrence de LIFEPLAY_API, de #include "LifePlay.h" ou de LPSandboxConfig dans ces sources (hors commentaires) : le module ne dépend pas de LifePlay.

2. Reliquats dans Source/LifePlay/

Recherche des noms LPPoseMeasure*, LPSkeletonProfile*, LPPoseOrchestrator*, LPAnimRedirect* sur tous les fichiers de Source/ : seuls ceux de Source/LPAnimMeasure/ existent. Les consommateurs restants (LPPairSandbox.cpp, LPDirectControlSubsystem.cpp, LifePlay.cpp, 4 fichiers de LifePlayEditorTools) incluent les en-têtes par PublicIncludePaths du nouveau module.

3. Déclarations de module

Fichier Ligne Contenu
LifePlay.uproject Modules[0] { "Name": "LPAnimMeasure", "Type": "Runtime", "LoadingPhase": "Default" }, avant LifePlay et LifePlayEditorTools
Source/LifePlay/LifePlay.Build.cs 46 PublicDependencyModuleNames.Add("LPAnimMeasure")
Source/LifePlayEditorTools/LifePlayEditorTools.Build.cs 22 "LPAnimMeasure" dans PublicDependencyModuleNames
Source/LifePlay.Target.cs 15 ExtraModuleNames : LifePlay, LPAnimMeasure
Source/LifePlayEditor.Target.cs 16 ExtraModuleNames : LifePlay, LPAnimMeasure, LifePlayEditorTools

4. Binaires (Win64, Development)

Fichier Date
dernière source modifiée de Source/LPAnimMeasure/ (LPAnimRedirect.cpp) 2026-10-06 18:31:38
Binaries/Win64/UnrealEditor-LPAnimMeasure.dll (520 192 o) / .pdb 2026-10-06 18:34:00
UnrealEditor-LifePlay.dll / UnrealEditor-LifePlayEditorTools.dll 2026-10-06 18:34:26
UnrealEditor.modules (entrée LPAnimMeasure) 2026-10-06 18:34:27
LifePlay.exe (cible Game, module lié en monolithique) 2026-10-06 18:37:17

La DLL est postérieure à la dernière source du module : binaire à jour. Différence avec S1-VAL : la limite « DLL plus ancienne que les sources » n'existe plus.

5. Runtime : bat Mesure

Méthode : équivalent de Tools/debug/LifePlay_measure_sandbox.bat (même ligne de commande UnrealEditor.exe LifePlay.uproject /Engine/Maps/Entry?game=/Script/LifePlay.LPPairSandboxGameMode -game -windowed ...), avec Saved/sandbox_mode.txt = Mesure pendant l'essai, remis à Pair ensuite. Le processus a été arrêté après environ 90 s. Journal conservé : Saved/Logs/S2-VAL-runtime.log.

Constat Journal
Module chargé, aucun Unable to load module, LNK2, Fatal error ni Assertion failed 0 occurrence
Catégorie LogLPAnimMeasure active 269 lignes (profils, POSET, MESURE, ORCHESTRE)
Profils chargés genesis8 (37 rôles), ue4_mannequin (31 rôles) ; squelettes UAL1_Standard_Skeleton -> ue4_mannequin et bridget_gp_Skeleton -> genesis8 à 100 %
Chaîne de mesure (Sample / Compare / Transfer / orchestrateur) MESURE Bridget Idle_Loop pose 0.00% (bassin) proportion 15.2% (rCollar) OK ; ORCHESTRE Idle_Loop pondere 8 ... (94 lignes MESURE/ORCHESTRE)
Racine UAL injectée (SetUALRoot depuis FLifePlayModule::StartupModule) Sandbox Quaternius : corps /Game/Quaternius/UAL/UAL1_Standard..., 43 animations
Sorties produites Saved/Measurement/history.csv, round_0929_Idle_Loop.csv, round_0930_A_TPose.csv, retarget_pose_*.txt
LogLifePlay: Error 1 : Coiffures : GI.HairstyleTable ou GI.MorphableHairs introuvable sur GameInstance_0 (déjà présent dans un journal antérieur au lot S2, sans lien avec LPAnimMeasure)

Effets de bord de l'essai : 2 manches ajoutées à Saved/Measurement (hors dépôt) ; Saved/Logs/LifePlay.log renouvelé. La capture de la boucle automatique et le contrôle visuel de la scène n'ont pas été faits.

Limites

  • Contrôle visuel de la sandbox Mesure (vues, captures shots/) non fait : seul le journal sert de preuve.
  • Les commandlets LPAnimEval, LPAnimCatalog, LPAnimTwist n'ont pas été relancés (prévus par S2-IMPL-H.md §8 ; hors de cette fiche).
  • S1-CART.md n'a pas encore reçu la mise à jour demandée par S2-IMPL-H.md (consommation de QuaterniusUALRoot via LifePlay.cpp / SetUALRoot) : reste à faire.
  • Aucun commit effectué.