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>
6.5 KiB
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/maindeD:\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.
LPShowCoupleSubsystemne 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 utiliseGameInstancebrut (-ini:...GameInstanceClass=/Script/Engine.GameInstance) et ne l'exerce pas. Aucune ligneShow coupledans le journal Pair. - Conséquence :
Engage/KeepTogether/Releasedu jeu, la dépénétration, les lits (IsBedMesh), la coqueWall*et la diffusionOnIgnoredShellne 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
- Un essai de show complet en jeu (nouvelle partie ou sauvegarde, scène à deux, comparer
Show couple : boite ...avant / aprèsc1fdd29). - Mise sous suivi git de
LPShowCoupleSubsystem.{h,cpp}dans le repo jeu (non suivis, cf.S5-IMPL-H.md). - Tests unitaires du niveau pur (
MeshToActor,FitFromAnimBounds,FitFromLiveBounds,SlideWish).