LifePlay-Revival/Docs/Migration/etat/REL/SAV/REL-SAV-ESSAIS.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

4.4 KiB

REL-SAV-ESSAIS : cas d'essai de la garde B+ pour la fiche de tests COMMUN-4 (2026-10-13)

Source : REL-SAV-SPEC.md § 7, corrigée d'après l'IMPL :

  • en Development, l'exe réel s'appelle Windows\LifePlay\Binaries\Win64\LifePlay.exe ;
  • le Shipping n'a pas de journal (UE_LOG vide, pas de bUseLoggingInShipping).

Code : Source/LifePlay/LPSaveRelaunch.cpp (MD5 a0cd668771ff5893ed2867f24de1df3a), LPSaveRelaunch.h (f31173f606a8f63db762f2d8960509f8), LifePlay.cpp (3f7ffa30e0ef83fc87aec297f699eea9).

Avant l'essai (sans jeton UE)

  • Présence du code dans l'exe. Binaries\Win64\LifePlay.exe du build COMMUN-4 contient la chaîne UTF-16LE Dossier de sauvegarde : . Commande : Select-String -Path <exe> -Pattern 'Dossier de sauvegarde' -Encoding Unicode, ou strings -el.
  • Relevé témoin. Get-ChildItem -Recurse -Force <build>\Windows\LifePlay\Saved | Get-FileHash -Algorithm MD5 est enregistré dans un .csv hors du build, comme ancien dossier Development.
  • Dossier d'essai. D:\Game\LifePlay_Backup_5.5\REL\essai_userdir doit être absent.
  • Processus. Get-CimInstance Win32_Process -Filter "Name='LifePlay.exe'" | Select ProcessId, ParentProcessId, ExecutablePath, CommandLine. Le bootstrap est Windows\LifePlay.exe et l'exe réel Windows\LifePlay\Binaries\Win64\LifePlay.exe.
  • Fichier de réglage. LPSaveLocation.ini va dans <build>\Windows\LifePlay\, en ASCII ou UTF-16 avec BOM (pas d'UTF-8 accentué : réserve R2). Contenu :
[SaveLocation]
SaveDir=D:\Game\LifePlay_Backup_5.5\REL\essai_userdir

Cas

Cas Montage Attendu (PASS si tout est vrai)
E1 Sans LPSaveLocation.ini, lancement normal Une seule instance de Binaries\Win64\LifePlay.exe. Saved reste à côté de l'exe (comportement actuel). Journal Saved\Logs\LifePlay.log : Dossier de sauvegarde : … (relance=non, source=inactif, motif=Development-sans-ini).
E2 .ini posé, lancement normal, puis nouvelle partie, sauvegarde, quitter, relancer, Continuer, mods actifs Deux instances de Binaries\Win64\LifePlay.exe pendant le jeu. Le parent n'a pas -UserDir ; l'enfant a ParentProcessId = parent et une ligne qui finit par -UserDir="D:\Game\LifePlay_Backup_5.5\REL\essai_userdir". essai_userdir\Saved\{Logs,Config,SaveGames} est créé. Journal de l'enfant (essai_userdir\Saved\Logs\LifePlay.log) : relance=oui, source=ini, motif=-. Le relevé de l'ancien Saved est identique avant et après, journal compris (0 fichier créé ou modifié). Tout écart est rapporté avec le fichier et l'heure. La partie se recharge par Continuer.
E3 E2, plus le lancement Windows\LifePlay.exe -ScriptStackOnWarnings -LPPersonsLog La ligne de l'enfant contient -ScriptStackOnWarnings -LPPersonsLog dans l'ordre, avant -UserDir=…. LogInit: Command Line: du journal de l'enfant les montre aussi.
E4 E2, plus -UserDir="D:\Game\LifePlay_Backup_5.5\REL\essai_explicite" Une seule instance. Le dossier essai_explicite\Saved est utilisé. Journal : relance=non, source=-UserDir.
E5 .ini avec SaveDir=relatif\x, puis SaveDir= vide Relance vers %LOCALAPPDATA%\LifePlay-Revival. Journal : source=defaut. Fermer le jeu au menu titre ; supprimer ensuite ce dossier d'essai seulement s'il est vide de sauvegardes, avec l'accord de l'utilisateur.
E6 E2, plus -LPNoSaveRelaunch Une seule instance ; Saved reste à côté de l'exe. Journal : motif=desactive.
E7 E2, sortie par le menu (Quit) Aucune instance restante. Le code de sortie du bootstrap (Start-Process -Wait -PassThru puis .ExitCode) est égal à celui de l'enfant, soit 0.
E8 E2, enfant tué (Stop-Process sur l'enfant) Le parent sort aussitôt, avec le code de l'enfant (≠ 0). Aucune instance restante.
E9 (Shipping, sur accord de Big Boss et de l'utilisateur) Shipping sans .ini Relance vers %LOCALAPPDATA%\LifePlay-Revival\Saved (créé). Le relevé MD5 de %LOCALAPPDATA%\LifePlay (vraies sauvegardes, lecture seule) est identique avant et après. Une nouvelle partie démarre et Continuer fonctionne. Sans journal Shipping, la preuve vient de la ligne de commande et des dossiers.

Verdict attendu

PASS si E1 à E8 sont conformes. Un écart dans l'ancien Saved en E2 est un FAIL de la garde : rapporter le fichier, l'heure et la ligne de journal. Les réserves R2 (UTF-8 accentué), R3 (redirection de la sortie standard non transmise à l'enfant) et R4 (racine X:\.) ne sont pas testées ici.