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

3.6 KiB

Fiche REL-SAV-T3 — Niveau N3 — Modèle prévu opus | utilisé claude-opus-5-5 (session REL, sans sous-agent) — Agent session REL — Skills lp-lot

REL-SAV-IMPL : garde B+ en C++, écrite sans compiler (2026-10-13)

GO de Big Boss : IMPL (c), après acceptation de REL-SAV-SPEC.md (B+ seul, aucun lanceur). Instantané : D:\Game\LifePlay_Backup_5.5\REL-SAV\manifest.csv :

  • LifePlay.cpp : FB62EEACB7884F90A9F2F308FFA22698, 734 octets ;
  • LPSaveRelaunch.cpp et LPSaveRelaunch.h : Existed=False.

Fichiers

Fichier État MD5 Contenu
Source/LifePlay/LPSaveRelaunch.cpp nouveau, 396 l., LF, ASCII a0cd668771ff5893ed2867f24de1df3a (après R1 ; avant : b5b37ce8…, celui de la VAL T4) garde statique (SPEC §§ 1-4) et LogStartupState (§ 6)
Source/LifePlay/LPSaveRelaunch.h nouveau, 9 l., LF, ASCII f31173f606a8f63db762f2d8960509f8 déclaration de LPSaveRelaunch::LogStartupState()
Source/LifePlay/LifePlay.cpp modifié, +3 l. 3f7ffa30e0ef83fc87aec297f699eea9 #include "LPSaveRelaunch.h" ; appel après FLPModGuard::Run() avec 1 ligne de commentaire

Écarts par rapport à la SPEC

  • E1. Un en-tête LPSaveRelaunch.h (10 lignes) a été ajouté. L'#include demandé dans LifePlay.cpp a besoin d'un en-tête ; c'est l'idiome du module (LPModGuard.h). Il est sous instantané (Existed=False).
  • E2. LP_SAVE_RELAUNCHED vaut la source (ini ou defaut), et non 1. Toute valeur non vide verrouille la relance ; l'enfant affiche ainsi source= au journal (SPEC § 6).
  • E3. Windows/WindowsHWrapper.h est inclus avant ShlObj.h. Il retire les macros Win32 conflictuelles (PostWindowsApi.h:45 : GetEnvironmentVariable), comme le fait WindowsPlatformProcess.cpp:38-45. FALSE est remplacé par 0, car HideWindowsPlatformTypes.h le retire.
  • E5 (après VAL T4, réserve R1). ComputeTarget refuse un " dans SaveDir développé : il fermerait -UserDir="…", et ce caractère est interdit dans un chemin Windows. Le jeu prend alors le dossier par défaut. +5 lignes ; revérifié par T4b.
  • E4. Motif non-compile pour un jeu non monolithique ou hors Windows ; motif non-execute pour un état impossible.

Points vérifiés par lecture (moteur 5.8)

  • shell32.lib, ole32.lib, uuid.lib sont reliés à toute cible Windows (UEBuildWindows.cs:2098-2101) : aucune dépendance nouvelle dans LifePlay.Build.cs.
  • UE_GAME vaut 0 par défaut (Build.h:22-23) et 1 pour une cible Game (TargetRules.cs:3479).
  • Le paquet Development a aussi Content\Paks\LifePlay-Windows.pak. Son exe réel s'appelle Binaries\Win64\LifePlay.exe (relevé : LifePlay_Build_5.8_STE-J6_Development), alors que le Shipping produit LifePlay-Win64-Shipping.exe ; la garde passe par GetModuleFileNameW et ne dépend pas du nom.
  • Shipping sans journal : LifePlay.Target.cs n'a pas bUseLoggingInShipping, donc UE_LOG est vide en Shipping (dossier Logs vide sur le poste). En Shipping, la ligne de § 6 n'existe pas ; la preuve passe par les lignes de commande et les dossiers.

Chaîne à chercher

  • Dans l'exe Development, en UTF-16LE : Dossier de sauvegarde : .
  • Dans le journal : LogLifePlay: Display: Dossier de sauvegarde : <chemin> (relance=…, source=…, motif=…).
  • Message de secours (OutputDebugStringW, visible avec DebugView seulement) : LifePlay : dossier de sauvegarde impossible a creer et LifePlay : relance avec -UserDir impossible.

Fichiers à commiter (après la VAL et l'essai COMMUN-4)

Source/LifePlay/LPSaveRelaunch.cpp, Source/LifePlay/LPSaveRelaunch.h, Source/LifePlay/LifePlay.cpp, livrables Docs/Migration/etat/REL/SAV/.