LifePlay-Revival/Docs/Migration/etat/REL/FIX1/FIX1-F8a-IMPL.md
2026-10-21 09:36:04 +02:00

15 KiB

Fiche FIX1-F8a — Niveau N2 — Modèle prévu sonnet | utilisé claude-sonnet-5-5 — Agent lp-impl — Skills sk-protocol, ue-cpp-build

FIX1-F8a-IMPL : initialisation de Aim dans TickCoupleMouse, avertissement C4701 (2026-10-20)

Décision citée par la fiche : l'utilisateur a répondu « approuvé » à la proposition de Big Boss (local_104ff22d, qui a donné le jeton UE) : « F8 (Aim) est trivial et sans risque, il tient en build 1 ». La fiche ne donne ni la session ni l'heure de cette réponse (sk-protocol § 2) : je la traite comme une consigne de fiche, sans en tirer d'autre décision (aucune publication, aucun arbitrage de risque de mon côté). Hors gabarit : la compilation de contrôle (demandée par la fiche) est rendue dans ## Constats, avec sa note TRACE. Écart de skills : la fiche cite sk-protocol, ue-cpp-build. Dans mon contexte sont aussi chargés lp-build et lp-ue-compat (utilisés pour les commandes de build et la liste des lignes connues). Niveaux de preuve : établi (fichier:ligne ou sortie de commande), estimé (raisonnement donné), incertain (essai nommé).

1. Fichiers modifiés

Un seul fichier de source : D:\Game\LifePlay-master 5.8\Source\LifePlay\LPCameraModeSubsystem.cpp.

Mesure Valeur Commande
MD5 avant (exigé 4fd44bd4) 4fd44bd4b636c1f8d14c601bea513d14, conforme ; identique à l'instantané md5sum Source/LifePlay/LPCameraModeSubsystem.cpp avant la première édition
MD5 après 976bf0a458b87f9aecf974fcec3209f0 (inchangé après les deux builds) md5sum après les 2 éditions et après les 2 builds
Taille avant, après 136 950 o, 136 994 o (+44 = 2 x 22 caractères = FVector::ZeroVector) manifeste de l'instantané ; wc -c
Fins de ligne i/lf w/lf attr/-text ; 0 CR git ls-files --eol Source/LifePlay/LPCameraModeSubsystem.cpp ; tr -cd '\r' < … | wc -c -> 0
Bilan du diff 1 file changed, 2 insertions(+), 2 deletions(-) git diff --stat -- Source/LifePlay/LPCameraModeSubsystem.cpp
Autres fichiers touchés dans Source et Plugins/ModdingExtra aucun git status --porcelain -- Source Plugins/ModdingExtra -> une seule ligne M Source/LifePlay/LPCameraModeSubsystem.cpp

Les deux éditions (outil Edit) ; le nombre de lignes du fichier ne change pas, donc les numéros de ligne sont les mêmes avant et après :

@@ -2277,3 +2277,3 @@ bool ULPCameraModeSubsystem::TickCoupleMouse(UGameInstance* GI, APlayerControlle
 		GrabHeight = bGrabHasHeight ? LPCameraModeLocal::CoupleLowestRoot(Couple) - SurfaceZ : 0.0;
-		FVector Aim;
+		FVector Aim = FVector::ZeroVector;
 		GrabOffset = TraceScreen(GrabMouseStart, Aim) ? FVector(Pivot.X - Aim.X, Pivot.Y - Aim.Y, 0.0) : FVector::ZeroVector;
@@ -2368,3 +2368,3 @@ bool ULPCameraModeSubsystem::TickCoupleMouse(UGameInstance* GI, APlayerControlle
 		bGrabMoved |= FVector2D::Distance(GrabMouseStart, GrabCursor) >= LPCameraModeLocal::CoupleDragThreshold;
-		FVector Aim;
+		FVector Aim = FVector::ZeroVector;
 		const bool bAim = bGrabMoved && TraceScreen(GrabCursor, Aim);

Positions : déclaration 1 = LPCameraModeSubsystem.cpp:2278 (lecture à :2279) ; déclaration 2 = :2369 (lecture gardée par bAim à :2370, :2376, :2378, qui est la ligne citée par l'avertissement).

Logique inchangée (établi). TraceScreen est le lambda :2149-2161 : il renvoie false avant d'écrire Out (:2157) et n'écrit Out = Hit.ImpactPoint (:2159) qu'avant de renvoyer true (:2160). Aim n'est donc lu que si TraceScreen a réussi : :2279 (opérateur ternaire) et :2376-2378 (if (bAim), avec bAim = bGrabMoved && TraceScreen(...), :2370). La valeur d'initialisation n'est jamais lue ; elle ne sert qu'à lever l'avertissement.

API moteur employée : FVector::ZeroVector, CORE_API static const TVector<T> ZeroVector; dans D:\Game\Launcher\Engine\UE_5.8\Engine\Source\Runtime\Core\Public\Math\Vector.h:79 (établi). Même expression que celle déjà présente à LPCameraModeSubsystem.cpp:2279. Aucun code de compatibilité UE4 (LPStringCompat, LPMeshCompat, LPNavigationHelpers) touché.

2. Écarts à la SPEC

La fiche tient lieu de SPEC (pas de SPEC séparée). Écarts :

  1. Aucun écart de code : les deux déclarations ont reçu = FVector::ZeroVector, rien d'autre.
  2. Numéros de ligne : la fiche cite l. 2278 et 2369 pour les déclarations et l. 2378 pour l'avertissement ; relevés conformes dans le fichier de départ (Grep : 2278, 2369, 2378).
  3. Approbation citée sans session ni heure : voir l'en-tête. Sans conséquence sur le périmètre (changement de deux lignes, aucune publication).
  4. Unités recompilées : le build 1 a recompilé Module.ModdingExtra.cpp et lié UnrealEditor-ModdingExtra.dll alors que ce lot ne touche pas ModdingExtra. Cause relevée dans le journal : Invalidating makefile for LifePlayEditor (working set of source files changed) (FIX1_Build_20261020-195129.log:8) ; le fichier ModdingExtraBPLibrary.cpp (lot F6) était compilé hors du fichier unity au build précédent et rentre maintenant dans Module.ModdingExtra.cpp. Estimé (le journal ne dit pas pourquoi ModdingExtra est rejoué). Sans effet sur la source.

3. Instantané

  • Dossier : D:\Game\LifePlay_Backup_5.5\FIX1-F8\ (lot FIX1-F8), pris par l'ordonnateur avant mon intervention ; je ne l'ai pas refait (consigne de la fiche).
  • Manifeste D:\Game\LifePlay_Backup_5.5\FIX1-F8\manifest.csv : une ligne, Source/LifePlay/LPCameraModeSubsystem.cpp, Existed=True, Size=136950, MD5=4FD44BD4B636C1F8D14C601BEA513D14, Date=2026-10-20T19:50:03.
  • Contrôle (établi) : md5sum D:/Game/LifePlay_Backup_5.5/FIX1-F8/Source/LifePlay/LPCameraModeSubsystem.cpp -> 4fd44bd4b636c1f8d14c601bea513d14, identique au MD5 de départ du fichier du jeu.
  • Retour arrière à froid : Tools\Restore.ps1 -Lot FIX1-F8 (proposé, non lancé), ou git revert du commit d'IMPL ; recompilation ensuite.

4. Ce qui n'a pas été fait

  • Aucun autre fichier ni autre déclaration : seules les deux déclarations FVector Aim; de TickCoupleMouse ont changé. Je n'ai pas cherché d'autres variables locales non initialisées dans le fichier (le build n'en signale aucune : 0 avertissement).
  • Pas de build Shipping, pas d'empaquetage (BuildDebug.ps1), aucun jeu lancé : le comportement à l'exécution n'est pas mesuré (il est inchangé par construction, voir § 1).
  • Pas de VAL (relecture indépendante), pas de DOC, pas de CHG ni de ligne de journal (hors fiche).
  • Pas de Tools/FicheStats.py : le nombre de tours ci-dessous est estimé par moi.
  • Aucune commande git qui écrit ; aucun commit ; rien publié.

5. Points à confirmer en VAL

Un point par ligne.

  • V1 : git diff --stat -- Source/LifePlay/LPCameraModeSubsystem.cpp rend 1 file changed, 2 insertions(+), 2 deletions(-) ; git diff -U1 ne montre que les deux lignes FVector Aim = FVector::ZeroVector; (aux l. 2278 et 2369).
  • V2 : md5sum du fichier = 976bf0a458b87f9aecf974fcec3209f0 ; git ls-files --eol = i/lf w/lf ; 0 CR.
  • V3 : journal Saved\Logs\portage\FIX1_Build_20261020-195129.log (éditeur) et …-195230.log (jeu) : 0 ligne C4701|warning C[0-9]+|error C[0-9]+|error LNK (témoin positif : le journal FIX1_Build_20261020-190716.log, avant correction, donne 1 ligne, LPCameraModeSubsystem.cpp(2378) : warning C4701).
  • V4 : les deux journaux montrent Compile [x64] LPCameraModeSubsystem.cpp (l. 41 et l. 20) : le fichier modifié a bien été recompilé (hors fichier unity, [Adaptive Build]), pas seulement relié.
  • V5 : résumés Build.ps1 : build 1 erreurs=0 avertissements=0 autres=20 (les 20 lignes HyperAIStudio attendues pour LifePlayEditor, lp-build § 7) ; build 2 erreurs=0 avertissements=0 autres=0.
  • V6 : les binaires du jeu ne contiennent aucune autre modification de source que les deux lignes (git status --porcelain -- Source Plugins ne montre que ce fichier) : l'exe b178a8be… et la DLL a1d61a56… correspondent à « HEAD ad3c9c6 + F8a ». Contrairement à F6, LPKeyboardSubsystem.cpp n'est plus modifié (KEY2 commité).
  • C1 : incertain, essai non fait : aucune exécution en jeu du glissé de couple (TickCoupleMouse) ; la logique est inchangée par construction (§ 1) mais rien n'a été lancé.

6. Fichiers à commiter

Dépôt du jeu (D:\Game\LifePlay-master 5.8, branche ue5.8) :

  • M Source/LifePlay/LPCameraModeSubsystem.cpp
  • A Docs/Migration/etat/REL/FIX1/FIX1-F8a-IMPL.md

Les deux résumés FIX1_Build_20261020-195129.txt et FIX1_Build_20261020-195230.txt sont écrits par Build.ps1 dans Docs/Migration/etat/REL/FIX1/ mais ignorés par git (git check-ignore -v : .gitignore:75 /Docs/Migration/etat/** pour les deux .txt ; le livrable .md est rétabli par .gitignore:77 !/Docs/Migration/etat/**/*.md) : rien à commiter pour les résumés.

À ne pas inclure dans ce ticket (modifiés par d'autres lots, présents dans le git status) : LifePlay.uproject, Docs/Migration/etat/BOSS/BOSS-ETAT.md, BOSS-JOURNAL.md, Docs/Migration/etat/REPO/FILE.md, Docs/LP-PROJET.ini, Docs/Migration/etat/AG/ORGA2/. Le gardien commite par chemins explicites (sk-repo).

Les journaux complets restent dans Saved\Logs\portage\ (hors dépôt).

Tours : 21 / 40 (estimé ; Tools/FicheStats.py --lot FIX1 fait foi)

Constats

Compilation de contrôle (demandée par la fiche)

Trace : D:\Game\LifePlay-master 5.8\Docs\Migration\etat\REL\FIX1\FIX1_Build_20261020-195129.txt et …\FIX1_Build_20261020-195230.txt — Fiche FIX1-F8a — 2026-10-20 19:51 à 19:54 Commande : CopieEtat.ps1 -Lot FIX1 -Assets Source/LifePlay/LPCameraModeSubsystem.cpp avant ; puis pwsh -NoProfile -File Tools/Build.ps1 -Lot FIX1 -EtatDir "D:\Game\LifePlay-master 5.8\Docs\Migration\etat\REL\FIX1" (éditeur), puis … -Lot FIX1 -Target LifePlay -Config Development -ExtraArgs '-NoUBA' -EtatDir … (jeu), dans D:\Game\LifePlay-master 5.8, stdin sur /dev/null Environnement: copie 5.8, branche ue5.8, HEAD ad3c9c6, moteur UE 5.8 (EngineAssociation 5.8), machine calme (UeState : processus=0 editeur=0 compilation=0 shaders=0 jeu=0 avant, entre les deux builds et après ; CopieEtat : COPIE OK … proc=0 … alertes=aucune, code 0, avant et après) Attendu : code 0 ; 0 erreur ; 0 avertissement C4701 (et aucun autre) ; unité LPCameraModeSubsystem.cpp recompilée Obtenu : tableau ci-dessous Lecture : le champ Makefile des deux résumés est vide ; les journaux disent Invalidating makefile for LifePlayEditor (working set of source files changed) (l. 8 du journal 1) et … for LifePlay … (l. 8 du journal 2) : makefiles recréés. Le résumé du build jeu écrit « Unreal Build Accelerator local executor » alors que -NoUBA est passé : les unités sont marquées [NoUba], le texte du résumé n'est pas le signe fiable. Piège de comptage : pwsh -NoProfile -File Tools/LogStats.ps1 -Log <journal> -Pattern 'a','b','c' passe la liste en une seule chaîne et rend 0 ligne à tort, même sur le journal d'avant la correction (faux zéro, relevé ici : 0 lignes sur 57, puis écarté) ; le comptage retenu est une seule expression à alternatives C4701|warning C[0-9]+|error C[0-9]+|error LNK, validée par un témoin positif sur le journal d'avant (1 ligne).

Mesure Build 1 : LifePlayEditor Win64 Development Build 2 : LifePlay Win64 Development -NoUBA
Résumé …\REL\FIX1\FIX1_Build_20261020-195129.txt …\REL\FIX1\FIX1_Build_20261020-195230.txt
Journal D:\Game\LifePlay-master 5.8\Saved\Logs\portage\FIX1_Build_20261020-195129.log D:\Game\LifePlay-master 5.8\Saved\Logs\portage\FIX1_Build_20261020-195230.log
Code de sortie, durée 0 ; 50 s (Total execution time: 49.70 seconds, journal l. 56) 0 ; 65 s (Total execution time: 64.22 seconds, journal l. 31)
Result: Succeeded (journal l. 55) Succeeded (journal l. 30)
Ligne Using Visual Studio 14.50.35739 toolchain (…\MSVC\14.50.35717) and Windows 10.0.22621.0 SDK = MSVC épinglé de la copie 5.8 (journal l. 34) identique (journal l. 13)
Actions 8 5
Erreurs du compilateur 0 0
Avertissements du compilateur 0 (0 C4701) 0 (0 C4701)
Autres lignes (UBT, UHT, liens) 20 : toutes Plugin 'HyperAIStudio' does not list plugin '…' (nombre attendu pour LifePlayEditor, lp-build § 7) 0 (attendu pour la cible jeu)
Unités compilées 3 : LPCameraModeSubsystem.cpp (l. 41), Module.LifePlay.cpp (l. 42), Module.ModdingExtra.cpp (l. 46) 3 : les mêmes, [NoUba] (l. 20, 21, 22)
DLL liées / exécutable 2 DLL : UnrealEditor-LifePlay.dll (l. 45), UnrealEditor-ModdingExtra.dll (l. 47) 0 DLL (cible monolithique) ; [4/5] Link [x64] LifePlay.exe [NoUba] (l. 23)

Avant la correction (journal du lot F6, FIX1_Build_20261020-190716.log:43) : LPCameraModeSubsystem.cpp(2378) : warning C4701: variable locale 'Aim' potentiellement non initialisée utilisée, while compiling ULPCameraModeSubsystem::TickCoupleMouse. Après : plus aucune ligne d'avertissement dans les deux journaux. Le module modifié figure dans les unités compilées et dans les DLL liées (lp-build § 9, points 4 et 6). Avertissement nouveau : aucun.

MD5 des produits (md5sum / ls -l, après les deux builds) :

Fichier MD5 Taille, heure
Binaries\Win64\LifePlay.exe b178a8be373c2d0ac527e4ec0ff4c31e 335 847 424 o, 19:53:32
Binaries\Win64\UnrealEditor-LifePlay.dll a1d61a56b3c8e5cbbf9c13907031811d 1 990 656 o, 19:52:11
Plugins\ModdingExtra\Binaries\Win64\UnrealEditor-ModdingExtra.dll 78a0129d1dd94d2c427c3bae60e0d4df 416 768 o, 19:52:18
Binaries\Win64\UnrealEditor-LifePlayEditorTools.dll non relié ce coup-ci (19:08:04, build du lot F6) 659 968 o
Source\LifePlay\LPCameraModeSubsystem.cpp 976bf0a458b87f9aecf974fcec3209f0 (source)

Rappel des produits du lot F6 (avant) : LifePlay.exe 811f72f2… (335 846 400 o), UnrealEditor-LifePlay.dll e5d2c9c9… (1 992 704 o), UnrealEditor-ModdingExtra.dll 7e8eeec5… (416 768 o), d'après FIX1-F6-IMPL.md. Ces binaires ont donc changé ; l'essai en jeu éventuel de F6 doit se refaire sur le nouvel exe (b178a8be…).

Autres contrôles

  • pwsh -NoProfile -File Tools/PubCheck.ps1 -Fichiers Source/LifePlay/LPCameraModeSubsystem.cpp -Depot "D:/Game/LifePlay-master 5.8" (stdin /dev/null) -> PubCheck : 0 constat(s), code 0.
  • Fin de mission : Tools\UeState.ps1 -> processus=0 editeur=0 compilation=0 shaders=0 jeu=0, code 0 ; jeton UE rendu.
  • Scripts : aucun script écrit. Les sorties des deux builds ont été redirigées vers le dossier temporaire de la session (hors dépôt).