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 :
- Aucun écart de code : les deux déclarations ont reçu
= FVector::ZeroVector, rien d'autre. - 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). - 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).
- Unités recompilées : le build 1 a recompilé
Module.ModdingExtra.cppet liéUnrealEditor-ModdingExtra.dllalors que ce lot ne touche pasModdingExtra. Cause relevée dans le journal :Invalidating makefile for LifePlayEditor (working set of source files changed)(FIX1_Build_20261020-195129.log:8) ; le fichierModdingExtraBPLibrary.cpp(lot F6) était compilé hors du fichier unity au build précédent et rentre maintenant dansModule.ModdingExtra.cpp. Estimé (le journal ne dit pas pourquoiModdingExtraest 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é), ougit revertdu 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;deTickCoupleMouseont 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.cpprend1 file changed, 2 insertions(+), 2 deletions(-);git diff -U1ne montre que les deux lignesFVector Aim = FVector::ZeroVector;(aux l. 2278 et 2369). - V2 :
md5sumdu 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 ligneC4701|warning C[0-9]+|error C[0-9]+|error LNK(témoin positif : le journalFIX1_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 1erreurs=0 avertissements=0 autres=20(les 20 lignesHyperAIStudioattendues pour LifePlayEditor,lp-build§ 7) ; build 2erreurs=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 Pluginsne montre que ce fichier) : l'exeb178a8be…et la DLLa1d61a56…correspondent à « HEADad3c9c6+ F8a ». Contrairement à F6,LPKeyboardSubsystem.cppn'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.cppA 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).