LifePlay-Revival/Docs/Migration/05_Correctifs_Isoles.md
2026-10-02 00:25:11 +02:00

9.6 KiB
Raw Blame History

05 — Correctifs isolés et protocole de réimport sous contrôle renforcé

Décision D-01 (2026-09-29) : les correctifs appliqués avant la reprise n'ont été ni suivis ni testés. Ils sont isolés : retirés du contenu (retour à la base 4.27 en L1) ou exportés en patchs relisibles pour le code. Chacun est réimporté seul, selon le protocole du §3. Décision D-02 : R-03 et R-04 sont annulés partout.


1. Correctifs de code (conservés, relisibles)

Le code 5.5 est nécessaire pour compiler : il reste en place, mais chaque écart avec 4.27 est exporté dans Docs/Migration/correctifs/ pour relecture.

ID Patch Contenu Nécessaire à Statut
CX-C01 P06 Target.cs : BuildSettingsVersion.V5, Unreal5_5 compilation conservé
CX-C02 P06 .uproject : EngineAssociation 5.5, suppression des 5 entrées de plugins (Victory, VisualStudioTools, SteamVR, ModdingPlus, MultiTask) ouverture du projet conservé ; section Plugins explicite en L2
CX-C03 P06 .uplugin : suppression de EngineVersion "4.27.0" chargement des plugins conservé
CX-C04 P03 ModdingExtra : inclusions UE5 (Engine.h retiré), Path.Combine compilation conservé
CX-C05 P04 StreetMap : portage LWC (FVector3f, FBox3f), R-01 (FAssetRegistryTagsContext), R-02 (initialiseurs) compilation, 280 villes conservé ; vérifié en L4 (LPCheckStreetMap 4.27 et 5.5)
CX-C06 P01, P05 LPVictoryCompat (2 fonctions) + 3 [CoreRedirects] Victory → LifePlay chargement de GI, ExtImg, FaceTexture, MainMenu, Inventory conservé ; à contrôler en L4 (T-LOAD-01)
CX-C07 P01 LPAssetRegistryHelpers::GetAssetByObjectPath : conversion FSoftObjectPath compilation conservé
CX-C08 P01 LPAssetRegistryHelpers::GetAssetsByClassName, GetAssetObjectPath (nouvelles fonctions) réimport de CX-B01 conservé, inutilisé tant que CX-B01 n'est pas réimporté
CX-C09 P01 LPNavigationHelpers (enrobage pur de K2_GetRandomLocationInNavigableRadius) R-04 conservé ; utilisé par CX-B11 (L7b)
CX-C10 P01 LifePlay.Build.cs : PublicIncludePaths, NavigationSystem, ImageWrapper, ApplicationCore compilation conservé
CX-C11 P05 Config : [CoreRedirects], 4 clés PhysX retirées, classes Enhanced Input par défaut, description, StagingDirectory, section McpAutomationBridgeSettings — conservé ; relu en L2
CX-C12 P03 (hors patch : ajouté le 2026-09-28) instrumentation LogLPModdingTrace diagnostic retiré en L3 (CHG-016 : LogModdingExtra en Verbose)
CX-C13 P02 commandlets LifePlayEditorTools (1 777 lignes) outillage éditeur conservé ; ne touche pas au jeu
CX-C14 — LPSessionLogSubsystem : résumé de démarrage, bilan de session, options de diagnostic -LPDump*/-LPTrace* EX-07, diagnostic ajouté (L3, L5, L7i, L7l)
CX-C15 — LPStringCompat, LPMeshCompat : fonctions au comportement 4.27, cibles de CX-B08, B10, B12 parité 4.27 ajouté
CX-C16 — LPSecondScreenSubsystem : cadrage du visage du contact pendant un appel ERR-031 (amélioration) ajouté (L7j, CHG-054), validé en jeu
CX-C17 — LPOutdoorRoomSubsystem : plafond WallT masqué dans les lieux extérieurs ERR-036 (amélioration) ajouté (L7l, CHG-057), validé en jeu
CX-C18 — Config : rendu explicite (L7c), clés de nativisation retirées, DirectoriesToAlwaysCook=/Game parité, cuisson complète ajouté (CHG-025, CHG-049)

2. Correctifs de contenu (retirés en L1, à réimporter un par un)

ID Outil Cible Effet attendu Justification Priorité Statut
CX-B00 LPFixAssetRegistryNodes (portage 4.27) GI, Person, Room, UI/VisualMorph GetAssetByObjectPath en nœud pur déjà présent dans la base 4.27 (les 4 assets importent LifePlay.LPAssetRegistryHelpers) — inclus dans la base
CX-B01 LPFixAssetRegistryPins GI : 3 GetAssetsByClass (+ 2 broches associées) nœuds rebranchés sur GetAssetsByClassName avec la valeur de classe d'origine candidat n°1 pour ERR-002 : sans lui, GetAssetsByClass interroge avec un chemin de classe vide ; aucun corps, vêtement ni coiffure énumérable 1 réimporté (CHG-018, validé statiquement) ; A/B d'exécution après CX-B02
CX-B02 LPFixEditableTextBoxFont UI/CharGen, UI/StatMenu : 6 nœuds Make/Break EditableTextBoxStyle broche Font orpheline retirée bloque la cuisson (6 erreurs, cook du 2026-09-07) 2 réimporté (CHG-022) ; commandlet corrigée au passage (ERR-025)
CX-B03 LPFixZeroScaleActors -Fix -Scale=0.1 Scenes/CentralLondon : Wall.StaticMeshComponent0 échelle X 0 → 0,1 corps physique invalide ; ensure InverseFast (plantage éditeur du 2026-09-07) 3 réimporté (CHG-023)
CX-B04 LPFixOrphanBoundEvents UI/TopRight (1), UI/CharGen (2) 3 événements On Clicked orphelins supprimés avertissements ; clics déjà morts 4 réimporté (CHG-024)
CX-B05 LPFixDeprecatedNodes (R-03) 56 nœuds SkeletalMesh, 10 Blueprints GetSkeletalMeshAsset() rejeté : aggrave ERR-002 (16,6 → 35 Accessed None/perso) car les proxies sont des USkinnedMeshComponent — à refaire autrement (L7a)
CX-B06 LPFixDeprecatedNodes (R-04) 6 nœuds, AI, Person, Room LPNavigationHelpers avertissements de dépréciation seulement 5 remplacé par CX-B11 (commandlet sans contrôle, embarquait aussi la variante R-03 rejetée)
CX-B08 LPFixParseIntoArray (nouveau) 114 nœuds ParseIntoArray, 17 Blueprints rebranchés sur LPStringCompat::ParseIntoArray (algorithme UE 4.27) UE5 renvoie [""] pour une chaîne vide : cause d'ERR-027 (personnages de quête invisibles/dévêtus) 1 réimporté (CHG-029), validé en jeu
CX-B09 LPFixButtonPadding (nouveau) 430 UButton, 46 Widget Blueprints marges des boutons remises au défaut UE 4.27 (Normal 2,2,2,2 ; Pressed 2,3,2,1), composante par composante le style par défaut de UButton est passé à 12 px horizontaux en UE5 (FUMGCoreStyle) ; les assets 4.27 ne stockent pas la marge par défaut : cause d'ERR-034 (barre de temps décalée) 1 réimporté (CHG-033), validé en jeu
CX-B10 LPFixSkeletalMeshGet (nouveau) 56 nœuds Get SkeletalMesh, 8 Blueprints (Person 28, GI 17, CharGen 3, Inventory 3, Hairstyle 2, CharGenSlider, Cursor, Inventory_Cloth 1) remplacés par LPMeshCompat::GetSkeletalMesh(Component) = Cast<USkeletalMesh>(GetSkinnedAsset()), la sémantique exacte du getter déprécié, valable pour tout USkinnedMeshComponent R-03 refait (L7a) ; remplace CX-B05 rejeté 1 réimporté (CHG-036), validé en jeu
CX-B11 LPFixNavRandomPoint (nouveau) 6 nœuds GetRandomPointInNavigableRadius (Person 3, Room 2, AI 1) remplacés par LPNavigationHelpers::GetRandomLocationInNavigableRadius : nœud pur, mêmes broches, même corps que la fonction dépréciée (appel de K2_GetRandomLocationInNavigableRadius, identique en 4.27 et 5.5) ; liaisons et valeurs par défaut reportées broche par broche R-04 (L7b) : 6 derniers avertissements de compilation ; le remplaçant moteur est impur (broches d'exécution), d'où l'enrobage pur 1 réimporté (CHG-037), retiré à tort (CHG-038) puis réappliqué (CHG-039) ; validé en jeu
CX-B12 LPFixStringSearch (nouveau) 385 nœuds Contains (160), Split (222), FindSubstring (3), 28 Blueprints (GI 240, Person 35, Room 16, CharGen 14…) rebranchés sur LPStringCompat::Contains/Split/FindSubstring : mêmes broches ; sous-chaîne vide en mode insensible à la casse depuis le début → « non trouvé » comme en 4.27 (UE5 : trouvé en position 0) ERR-005 (getBeautyValue ×38 : filterMorphList sans étiquette laissait passer tous les morphs) et toute recherche de texte avec un motif vide 1 réimporté (CHG-042), validé en jeu (CHG-043)
CX-B07 LPResavePackages (nouveau) 239 paquets UE4 restants (UI 147, Structs 57, BPs 22, Render 11, Characters 1, Scenes 1) format UE5, contenu inchangé EX-03 ; T-STAT-01 6 réimporté (CHG-035), diff avant/après neutre ; validé en jeu (build V1rc, V1)

3. Protocole de réimport sous contrôle renforcé

Un correctif = un sous-lot (L4-CX-B01, …) = un commit. Pas de regroupement.

Étape Action Preuve archivée dans Docs/Migration/etat/
1 git tag L4-CX-xx-avant ; Tools\Snapshot.ps1 -Lot L4-CX-xx -Path <assets cibles> manifeste MD5
2 Photographie avant : LPDumpFunction -BP=<asset> -Fn=<fonctions touchées> -Pins <id>_dump_avant.txt
3 Simulation : commandlet avec -DryRun ; le nombre de nœuds trouvés doit égaler celui attendu (§2) <id>_dryrun.txt ; tout écart arrête le sous-lot
4 Application réelle journal de la commandlet
5 Photographie après + diff avant/après : seuls les nœuds attendus diffèrent <id>_dump_apres.txt, <id>_diff.txt
6 CompileAllBlueprints + LPCheckMeshAssignment : aucune erreur nouvelle par rapport au relevé de base résumés RunCommandlet
7 Si le correctif touche le gameplay (CX-B01) : build Development + A/B avec la référence 4.27 (Tools\LogStats.ps1 -Compare) tableau A/B
8 Journal CHG, commit, git tag L4-CX-xx-apres ; en cas d'échec : Tools\Restore.ps1 -Lot L4-CX-xx entrée de journal

Critère d'acceptation commun : effet attendu observé, aucun effet de bord mesuré.