LifePlay-Revival/Docs/Migration/etat/U58/U7b/U7b-T6-VAL.md
edujiro5972 8084622450 LifePlay UE 5.8 : état de développement au 2026-10-19
Tickets : REP1-T4

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 22:57:42 +02:00

12 KiB
Raw Blame History

Fiche U7b-T6 — Niveau N1 — Modèle prévu lp-builder | utilisé claude-haiku-5-5 — Agent lp-builder — Skills sk-protocol, sk-windows-shell, lp-build (préchargés aussi : lp-commandlets)

U7b-T6 : essai décisif de -RenderOffScreen (tournée Mesure, addon 5.8), clip AS_RightLegKick2

Date : 2026-10-09. Verdict : FAIL à l'étape b (géométrie différente de la référence U4). Arrêt au premier écart : étape c (pack freeanims, 20 clips) non lancée. Aucun script, aucun code, aucun commit modifié.

1. Pré-contrôles (établi)

  • Éditeur : Get-Process UnrealEditor, UnrealEditor-Cmd, LifePlay vide avant l'essai (14:11). Aucun arrêt nécessaire.
  • Copie 5.8 (git -C "D:\Game\LifePlay-master 5.8" status --short) : M .gitignore, M Docs/Migration/29_Projet_Stabilisation_V2.md, M LifePlay.uproject (HyperAIStudio, décision utilisateur, non examinée ici), M Tools/anim/AnimPipeline.ps1, M Tools/anim/RetargetPack.py, M Tools/debug/LifePlay_interaction_sandbox.bat. Branche ue5.8.
  • Addon D:\Game\LifePlay-Sandbox-5.8 : HEAD d1efdd1, 3 M attendus (AnimPipeline.ps1, RetargetPack.py, .bat), conformes à U7b-T4 § 10.
  • sandbox_mode.txt avant essai : Pair (4 octets). Saved\sandbox_pack.ini et sandbox_tour.txt absents avant essai.
  • DLL addon : D:\Game\LifePlay-master 5.8\Binaries\Win64\UnrealEditor-LPSandbox.dll datée 08/10/2026 18:22:39 (aucune DLL LPSandbox dans LifePlay-Sandbox-5.8\Plugins\LPSandbox\Binaries). Constat : Source\LPModTools\LPHairFromStaticMeshCommandlet.cpp a une date de modification 08/10 18:24:55, postérieure à la DLL (le contenu est dans le commit a19cedd, 08/10 19:42). Le build éditeur U7 du 09/10 10:17 (U7_Build_20261009-101701.txt) n'a relié que UnrealEditor-LifePlay.dll (2 unités). Incertain : la DLL reflète-t-elle exactement ce source (garde C4996 de ce commandlet) ? Sans effet mesuré sur la tournée : le module s'exécute (lignes LogLPSandbox ci-dessous).

2. Commande exacte lancée

Script : %USERPROFILE%\AppData\Local\Temp\claude\D--Game-LifePlay-master-5-5\ab8918a1-261f-45b4-904a-678ecfce98f7\scratchpad\t6_essai1.ps1 (copie : Docs\Migration\etat\U58\U7b\T6\t6_essai1.ps1). Corps = § 9 de U7b-T4, avec 3 lignes d'affichage en plus (W=, origMode=, T0=) et une UnrealEditor vu a ; aucune logique modifiée. Lancement : pwsh -NoProfile -File <script>, en arrière-plan, sortie dans scratchpad\t6\essai1_stdout.txt. Lancement effectif du .bat : Start-Process cmd.exe -ArgumentList '/c ""D:\Game\LifePlay-Sandbox-5.8\Tools\debug\LifePlay_interaction_sandbox.bat" -RenderOffScreen"' -WindowStyle Hidden.

3. Codes, durées, sorties

  • Code de sortie du script : EXIT=0 (essai1_stdout.txt).
  • Dossier de sortie : D:\Game\LifePlay-master 5.8\Saved\U7b\T1essai_20261009-141154\ (copie : T6\sandbox_T1essai\).
  • Horaires : T0 14:11:54 ; UnrealEditor vu à 14:11:57 ; fin 14:13:12 ; durée 78 s.
  • Saved\sandbox_mode.txt restauré à Pair après essai ; sandbox_pack.ini et sandbox_tour.txt déplacés hors de Saved\ (dans le dossier de sortie) : état d'origine retrouvé.

4. Ligne de commande observée du processus (établi)

  • Capture live par Win32_Process pendant la tournée (PID 31816) : "D:\Game\Launcher\Engine\UE_5.8\Engine\Binaries\Win64\UnrealEditor.exe" "D:\Game\LifePlay-Sandbox-5.8\Tools\debug\..\..\..\LifePlay-master 5.8\LifePlay.uproject" "/Engine/Maps/Entry?game=/Script/LPSandbox.LPPairSandboxGameMode" -game -windowed -ResX=1600 -ResY=900 "-ini:Engine:[/Script/EngineSettings.GameMapsSettings]:GameInstanceClass=/Script/Engine.GameInstance" -RenderOffScreen
  • Journal : LifePlay.log:495 LogInit: Command Line: … -RenderOffScreen (même fin).
  • Fenêtre : MainWindowHandle = 0 et MainWindowTitle vide sur le processus échantillonné (14:12:15 et pendant la tournée). Aucune fenêtre de jeu visible (le dire : aucune fenêtre n'est apparue).

5. Comparaisons (établi)

Commande : grep -E "VIGNETTE|PLANCHE" <log> | grep RightLegKick2 | sed -E 's/^\[[^]]*\]\[[^]]*\]//; s/ [0-9]+ octets//', sur U4-REF55\E4_freeanims.log (référence 5.5) et T6\LifePlay.log (essai 5.8).

  • Référence :
    • VIGNETTE …/AS_RightLegKick2.png (carre 695 px a 621,173) (E4_freeanims.log:1939)
    • PLANCHE …/AS_RightLegKick2.jpg 13 images 1.10 s (carre 724 px) (E4_freeanims.log:5460, 88113 octets)
  • Essai :
    • VIGNETTE …/AS_RightLegKick2.png (carre 386 px a 345,96) (LifePlay.log:2220)
    • PLANCHE …/AS_RightLegKick2.jpg 13 images 1.10 s (carre 402 px) (LifePlay.log:2445, 86156 octets)
  • Résultat : différent. Rapports : 386/695 = 0,555 ; 345/621 = 0,556 ; 96/173 = 0,555 ; 402/724 = 0,555. Le cadrage est multiplié par ≈0,555 sur les deux axes.
  • Assertion failed : 0 (LifePlay.log de la copie, et Saved\Logs\LifePlay.log). out of bounds : 0.
  • Sorties : vignettes\AS_RightLegKick2.png 274446 octets ; planches\AS_RightLegKick2.jpg 86156 octets (13 images) ; planches\AS_RightLegKick2.json 48 octets. Dimensions non relevées dans ce passage (vignette 512 px attendue).
  • Non fait : comparaison d'un .json/d'un pixel avec la référence (étape c non lancée).

6. Taille du viewport (incertitude T1 § 7, non tranchée)

  • Config : LifePlay.log:544 Set CVar r.setres:1280x720 ; LifePlay.log:32 ligne de commande -ResX=1600 -ResY=900 ; LifePlay.log:666 systemresolution.resx="1066" / resy="600" (sens non établi).
  • Estimé : l'image reçue fait environ 0,555 × 1600×900, soit ≈ 889×500 (le cadrage, calculé en pixels de viewport, est appliqué à une image plus petite). Non mesuré : aucune ligne du journal ne donne la taille réelle du viewport de capture. L'essai qui trancherait : une ligne de journal (ou un export) donnant la taille du FSceneViewport au moment de RequestScreenshot.

7. Verdict

  • Critère b (fiche) : carre 695 px a 621,173 et 13 images 1.10 s … carre 724 px attendus. Obtenus : carre 386 px a 345,96 et carre 402 px. Ligne de commande : conforme (-RenderOffScreen en fin). 0 Assertion failed : conforme. Aucune fenêtre : conforme.
  • Verdict : FAIL (étape b). Premier écart constaté : LifePlay.log:2220 VIGNETTE … (carre 386 px a 345,96) au lieu de (carre 695 px a 621,173) (référence E4_freeanims.log:1939).
  • Étape c : non lancée (arrêt au premier écart). Étape d : sans objet (pas de fenêtre à minimiser).
  • La fiche ne prévoit pas de correctif ici ; aucun correctif appliqué.

8. Fichiers écrits

  • Livrable : D:\Game\LifePlay-master 5.5\Docs\Migration\etat\U58\U7b\U7b-T6-VAL.md.
  • Preuves (copies, rien déplacé) : D:\Game\LifePlay-master 5.5\Docs\Migration\etat\U58\U7b\T6\ (LifePlay.log, sandbox_pack.ini, sandbox_mode.txt, sandbox_T1essai\, t6_essai1.ps1, essai1_stdout.txt).
  • Dossier de sortie d'origine (inchangé) : D:\Game\LifePlay-master 5.8\Saved\U7b\T1essai_20261009-141154\.
  • Rien commité, rien supprimé, aucun script de l'addon ni de la copie 5.8 modifié.

9. Suite

Suite : orchestrateur doit décider. Les trois points à trancher : (1) taille réelle du viewport sous -RenderOffScreen (incertain, § 6) ; (2) option C2 (garde de fenêtre minimisée) ou autre voie, par décision de l'utilisateur ; (3) statut de la DLL addon (§ 1, date 18:22 vs source 18:24). État : essai T6 fait, FAIL à l'étape b, étape c non lancée.

A2. Essai d'arguments -ExecCmds (demande orchestrateur, 2026-10-09 14:14–14:25)

Contexte : T6 (§ 5–7) donnait un cadrage à 0,555 de la référence ; cause présumée : taille de viewport ≈ 888×500 sous -RenderOffScreen. Essai A2 : même méthode, aucun script du dépôt ou de l'addon modifié. Le script scratchpad\t6_a2.ps1 (copie : T6\t6_a2.ps1) est la copie du § 9 de U7b-T4 avec deux paramètres -Extra (arguments du .bat) et -Tag, plus -Tour pour la liste de la tournée. Logique inchangée.

A2-V1 : -RenderOffScreen -ExecCmds="r.SetRes 1600x900w" (variante retenue)

  • Lancement : pwsh -NoProfile -File t6_a2.ps1 -Extra '-RenderOffScreen -ExecCmds="r.SetRes 1600x900w"' -Tag V1 (clip seul, liste vignettes planches quitter AS_RightLegKick2), code 0 (T6\a2_v1_stdout.txt, dossier Saved\U7b\T6A2_V1_20261009-141456).
  • Durée : T0 14:14:56 ; éditeur vu 14:14:59 ; fin 14:16:09 ; 74 s.
  • Ligne de commande (Win32_Process, et LifePlay.log:495) : … -game -windowed -ResX=1600 -ResY=900 "-ini:…" -RenderOffScreen -ExecCmds="r.SetRes 1600x900w". Le guillemet passe tel quel par le .bat et cmd /c (pas de problème de mise en guillemets).
  • Journal : LifePlay.log:2173 r.SetRes = "1600x900w" ; :2175 systemresolution.resx="1600" (taille de viewport fixée à 1600 ; relevé de la taille réelle par r.SetRes, non par pixel).
  • Résultat : VIGNETTE … AS_RightLegKick2.png (carre 695 px a 621,173) et PLANCHE … 13 images 1.10 s 88736 octets (carre 724 px). Attendus atteints. 0 Assertion failed, 0 out of bounds.
  • Fenêtre : aucune fenêtre observée (MainWindowHandle = 0 sur l'échantillon T6 ; non ré-échantillonné en A2-V1).

A2-V2 (-ForceRes -ResX=1600 -ResY=900) : non lancée, V1 suffit.

Étape c : pack freeanims complet avec A2-V1 (PASS)

  • Lancement : t6_a2.ps1 -Extra '-RenderOffScreen -ExecCmds="r.SetRes 1600x900w"' -Tag PACK2 -Tour 'vignettes planches quitter'. Dossier Saved\U7b\T6A2_PACK2_20261009-141749.
  • Durée : 14:17:49 → 14:24:36 = 452 s ; code 0 ; ligne de commande identique à V1.
  • Journal : r.SetRes = "1600x900w" (LifePlay.log, 12.18.40 UTC) ; 0 Assertion failed, 0 out of bounds.
  • Géométrie : diff de grep -E "VIGNETTE|PLANCHE" (sed : suppression de l'horodatage, du nombre d'octets, normalisation du chemin à sandbox/) entre U4-REF55\E4_freeanims.log et le journal PACK2 : identique, 20 lignes (10 VIGNETTE + 10 PLANCHE). Copies : T6\geo_ref_free.txt, T6\geo_run_free.txt.
  • JSON des planches : 10/10 identiques (sha256).
  • Dimensions : 20/20 identiques (10 vignettes PNG, 10 planches JPG ; lecture d'en-tête par python3 -I).
  • Écart de comptage à noter : la référence U4-REF55\freeanims\sandbox ne contient que 10 clips (10 VIGNETTE, 10 PLANCHE), soit 20 fichiers image et 10 .json, et non 20 clips. Les comparaisons portent donc sur les 10 clips de la référence.
  • Octets des planches (non critère) : AS_RightLegKick2 88499 contre 88113 en référence ; les pixels ne sont pas comparés (T1 § 3).
  • Restauration : Saved\sandbox_mode.txt = Pair ; sandbox_pack.ini/sandbox_tour.txt absents de Saved\ après essai.

Incidents de l'essai A2 (établis, à déclarer)

  1. Deux lancements abortés par ma faute (ne sont pas des résultats) : une substitution sed a cassé la ligne 16 du script de la tournée ("$Ssandbox_tour.txt", variable vide). Le run de 14:16:29 a été arrêté (Stop-Process) et sa finally a restauré l'état. Le run de 14:17:05 a été arrêté par Stop-Process puis pkill (la finally n'a pas tourné) : Saved\sandbox_mode.txt valait Mesure, restauré à Pair ; Saved\sandbox_pack.ini (460 o) déplacé vers Saved\U7b\T6A2_PACK_20261009-141705\sandbox_pack.ini.killed (déplacement, rien supprimé). Un fichier .txt a pu être créé dans le répertoire courant du shell par la ligne cassée : non trouvé à la recherche (find -name '.txt' -mmin -30), incertain.
  2. Le run T6A2_PACK_141705, puis bqwxmaab6 : même cause, arrêtés ; leurs sorties ne servent à rien.
  3. Les répertoires Saved\U7b\T6A2_* sont conservés (déplacement/copie seulement).

Verdict A2

  • Étape b (clip AS_RightLegKick2, V1) : PASS.
  • Étape c (pack freeanims, 10 clips de référence) : PASS (géométrie 20/20 lignes, dimensions 20/20, JSON 10/10, 0 assertion).
  • Taille du viewport : fixée à 1600×900 par r.SetRes (LifePlay.log:2173-2175) ; le cadrage est donc revenu à la référence. La mesure pixel directe reste non faite.
  • Fenêtre : aucune observée ; non ré-échantillonnée sur PACK2.

Preuves (copies, sous Docs\Migration\etat\U58\U7b\T6\)

  • a2_v1_stdout.txt, a2_pack_stdout.txt, t6_a2.ps1, geo_ref_free.txt, geo_run_free.txt.
  • A2_pack\ : LifePlay.log, sandbox_pack.ini, sandbox_mode.txt, sandbox_out\ (sorties PACK2).