LifePlay-Revival/Docs/Migration/etat/sandbox/S5/S5-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

6.5 KiB
Raw Blame History

S5-VAL — Validation du lot S5 (LPCoupleSim partagé jeu ↔ addon)

  • Date : 2026-10-06
  • Fiche : S5-T3 | Rôle : A-VAL
  • Modèle prévu : claude-sonnet-5-5-high | Modèle utilisé : claude-sonnet-5-5-high
  • Pin addon : c1fdd29e2c1036c7d6365ba6389eff5d2f8c8c96 (HEAD = origin/main de D:\Game\LifePlay-Sandbox, arbre propre ; S5-T2)
  • Références : S5-CART.md (S5-T1), S5-IMPL-H.md (S5-T2), S4-VAL.md

Verdict : PASS (PASS runtime Pair, PASS-STATIC ShowCouple)

# Contrôle Résultat
1 Bat Pair depuis le jeu (~45 s demandées, session laissée ~90 s) : plugin monté, GameMode Pair PASS
2 LogLPSandbox : chemin FitCoupleBox (maintenant LPCoupleSim) exécuté, pas de crash couple box PASS
3 Aucun Fatal, assertion, ensure, Access violation, aucun nouveau dossier Saved/Crashes PASS
4 LifePlayEditor Win64 Development à jour (Target is up to date), DLL postérieures aux sources S5 PASS
5 LPShowCoupleSubsystem : compile + branché sur LPCoupleSim (34 références), copies locales supprimées PASS-STATIC
6 Parcours show en jeu (sélection du couple, Engage → KeepTogether → Release) non exercé (voir §4)
7 Processus tué après essai PASS

1. Runtime : bat Pair (jeu)

Équivalent du bat Tools/debug/LifePlay_pair_sandbox.bat (même URL game=/Script/LPSandbox.LPPairSandboxGameMode, Saved/sandbox_mode.txt = Pair), lancé à 20:42:10. Le processus a répondu à partir de ~20:43:07 (initialisation de la carte ~50 s), puis a été laissé jusqu'à ~20:43:50 avant d'être arrêté. Journal copié : Saved/Logs/S5-VAL-runtime-game.log (source LifePlay.log, 1 709 lignes ; copie locale non versionnée).

Binaires utilisés : UnrealEditor-LPAnimMeasure.dll 20:36:29, UnrealEditor-LPSandbox.dll 20:36:36, UnrealEditor-LifePlay.dll 20:37:15, tous postérieurs aux sources S5 (LPCoupleSim.h 20:28, LPCoupleSimCore.cpp 20:32, LPShowCoupleSubsystem.cpp 20:35). L'essai a donc bien exercé le code S5-T2.

Constat Journal
Plugin monté LogPluginManager: Mounting External plugin LPSandbox
GameMode résolu LogLoad: Game class is 'LPPairSandboxGameMode'
Initialisation sandbox 16 lignes LogLPSandbox : mur ×4, collision (54 meubles, 0 absent), éclairage, interaction (286 actions), Quaternius 43 anims, corps bridget_gp / michael, boîte, pose
Boîte du couple Sandbox boite AgMakeout : centre X=20.831 Y=1.400 Z=-0.534, etendue X=41.180 Y=50.958 Z=89.466
Poses AgMakeout_F sur Bridget, AgMakeout_M sur Michael, puis B_/M_Idle_Loop
Suite de session séquence automatique de mesure (9 caméras, AUTO arret), sans erreur ; session restée active (Responding = True) jusqu'à l'arrêt manuel
Erreurs module / lien / GameMode 0
: Error: hors lot 1 × LogLifePlay: Error: Coiffures : GI.HairstyleTable ou GI.MorphableHairs introuvable (déjà connu, S3-VAL / S4-VAL)

Lecture de la boîte. La ligne Sandbox boite est produite par le chemin refactoré (MeshToActor → AccumulateAnimBounds → FitFromAnimBounds → EnsureBox → ApplyBoxFit). Fond de boîte : Center.Z - Extent.Z = -0.534 - 89.466 = -90.000, soit exactement 18 - PlayerSpot.Z (= −90) : l'écart de plancher sandbox / jeu de 2 cm (jeu = −88), conservé volontairement par S5-T2 (§4 de S5-IMPL-H.md), est donc inchangé. Pas de NaN, pas de rejet (bValid), extension sous le plafond de 800 cm.

Limite de la comparaison avant / après : aucune capture antérieure de cette paire (AgMakeout) n'a été archivée ; le contrôle de parité numérique stricte (écart attendu : aucun) n'est pas fait. Le fond à −90,000 cm et des valeurs plausibles pour une paire debout sont la seule preuve de parité disponible ici.

2. Compilation

& 'D:\Game\Launcher\Engine\UE_5.5\Engine\Build\BatchFiles\Build.bat' LifePlayEditor Win64 Development `
  -Project='D:\Game\LifePlay-master 5.5\LifePlay.uproject' -WaitMutex

Résultat : Target is up to date (journal Saved/Logs/S5-VAL-build.log). La compilation effective des deux cibles (LPSandboxEditor non-unity, LifePlayEditor unity, 0 erreur / 0 avertissement) est documentée par S5-IMPL-H.md §6 ; cette fiche confirme qu'aucune source n'a changé depuis (DLL postérieures).

3. ShowCouple : PASS-STATIC

Contrôle Résultat
LPShowCoupleSubsystem.cpp référence LPCoupleSim / ResolveCoupleMove / EnsureBox 34 occurrences
AddPose, FSavedMove imbriquée, SweepMultiByChannel dans le jeu 0 (supprimés)
Algorithme de balayage / échantillonnage de pose dans l'addon une seule implémentation : LPCoupleSimCore.cpp (+ déclarations de LPCoupleSim.h) ; plus de copie dans LPSandbox/LPCoupleSim.cpp
Dépendances .Build.cs inchangées (LifePlay → LPAnimMeasure déjà public)
Le module LifePlay (qui contient le sous-système) charge au runtime Pair oui (DLL du 20:37 chargée, aucun LogModuleManager en erreur)

4. Limites et décision PASS-STATIC

  • Pas de parcours show automatique. LPShowCoupleSubsystem ne s'active qu'avec un vrai couple en scène (GI, Room, SexPersons, AP1/AP2, clips du dossier /Game/Heavy/New2/Daily/...), donc depuis une sauvegarde et un Blueprint de scène ; le bat Pair utilise GameInstance brut (-ini:...GameInstanceClass=/Script/Engine.GameInstance) et ne l'exerce pas. Aucune ligne Show couple dans le journal Pair.
  • Conséquence : Engage / KeepTogether / Release du jeu, la dépénétration, les lits (IsBedMesh), la coque Wall* et la diffusion OnIgnoredShell ne sont validés que par compilation et relecture (PASS-STATIC), pas par exécution.
  • LPPairCollisionTest (commandlet de l'éditeur) non relancé dans cette fiche (hors consigne VAL ; recommandé en S5-T5 / S7 si disponible dans le module éditeur).
  • Contrôle visuel non fait ; le mode Interaction n'est pas exercé.
  • Alignement du plancher (−90 → −88) : non décidé ; reste à trancher par une capture avant / après sur une scène du jeu.

5. Reste ouvert

  1. Un essai de show complet en jeu (nouvelle partie ou sauvegarde, scène à deux, comparer Show couple : boite ... avant / après c1fdd29).
  2. Mise sous suivi git de LPShowCoupleSubsystem.{h,cpp} dans le repo jeu (non suivis, cf. S5-IMPL-H.md).
  3. Tests unitaires du niveau pur (MeshToActor, FitFromAnimBounds, FitFromLiveBounds, SlideWish).