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

79 lines
5.8 KiB
Markdown

# 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é.