LifePlay-Revival/Docs/Migration/Journal_Modifications.md
edujiro5972 8bada02b9b L5 : diagnostic ERR-027 et instrumentation de GetAssetByObjectPath
Diff 4.27/5.5 des fonctions de chargement des maillages (GenerateAndApply*,
LoadMeshIfNeeded, getSkeletalMeshFromPath, SMBoolToSkeletalMesh) : logique
identique. Seul maillon change : resolution chemin -> asset. Instrumentation :
chaque chemin non resolu signale une fois (LogLifePlay). Build L5a :
8561 packages, cuisson 0 erreur.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 08:59:24 +02:00

24 KiB

Journal des modifications — migration 5.5

Une entrée par modification. Format : identifiant, date, lot, fichiers, raison, empreintes, retour arrière. Les empreintes complètes sont dans D:\Game\LifePlay_Backup_5.5\<lot>\manifest.csv et dans l'historique git.

ID Date Lot Fichiers Raison Avant → après Retour arrière
CHG-001 2026-09-29 L0 .gitignore ignorer les fichiers générés (Build/*/FileOpenOrder, Content/Collections, Content/Developers, .claude/settings.local.json) 31 → 38 lignes retirer le bloc « CHG-001 »
CHG-002 2026-09-29 L0 .gitattributes (nouveau) aucune conversion de fin de ligne : restauration git identique à l'octet — → créé supprimer le fichier
CHG-003 2026-09-29 L0 .git/ (nouveau) dépôt local, identité locale, core.autocrlf=false, core.longpaths=true ; commit de64933, tag lot-L0-base — → créé supprimer .git/
CHG-004 2026-09-29 L0 Tools/Snapshot.ps1, Restore.ps1, AssetHeaders.ps1, CheckIntegrity.ps1, LogStats.ps1 (nouveaux) outillage de traçabilité et de test — → créés git rm
CHG-005 2026-09-29 L0 Docs/Migration/** (nouveau) documentation 01 à 04, journal, registre, empreintes etat/L0_* — → créés git rm
CHG-006 2026-09-29 L0 D:\Game\LifePlay_Backup_5.5\L0\ (hors projet) sauvegarde de .claude, .mcp.json, LifePlay.uproject, Config, Saved/Backups, Saved/SaveGames, Content/BPs (53 fichiers) — → créé sans objet

Vérifications du lot L0

Test Résultat
Aller-retour Snapshot → modification → Restore (Config/DefaultEditorSettings.ini + fichier créé) ✅ MD5 85D82E7F… retrouvé ; fichier créé retiré vers _retires/
T-STAT-01 ⚠️ 1 package UE4 (Content/BPs/GI.uasset) : défaut connu, traité en L1
T-STAT-02 Modules = 4.27 ✅ 2 051 fichiers
T-STAT-03 environnement = L0 ✅ 20 fichiers
T-STAT-04 arbre 4.27 inchangé ✅ 144 fichiers (empreinte créée : etat/L0_ref427.csv)

Aucun fichier du projet n'a été modifié en L0 en dehors de .gitignore et des ajouts ci-dessus.


Lot L1 — Base saine (2026-09-29)

Décisions utilisateur D-01 et D-02 : 04_Cahier_Des_Charges.md §4. Tag d'entrée lot-L1-avant. Sauvegarde : D:\Game\LifePlay_Backup_5.5\L1\ (387 fichiers).

ID Date Lot Fichiers Raison Avant → après Retour arrière
CHG-007 2026-09-29 L1 Content/{BPs,UI,Structs,Scenes,Render,Characters} (385 fichiers, 293 packages) retour à la base 4.27 : retire tous les correctifs de contenu non suivis (dont R-03, R-04) contenu 5.5 (empreintes etat/L0_md5_*.csv) → identique à 4.27 (MD5 vérifiés, 0 écart) Tools\Restore.ps1 -Lot L1 ou git checkout lot-L1-avant -- Content
CHG-008 2026-09-29 L1 Tools/RunCommandlet.ps1 (nouveau) lancement de commandlet avec journal archivé et résumé dédoublonné — → créé git rm
CHG-009 2026-09-29 L1 Docs/Migration/05_Correctifs_Isoles.md, correctifs/P01…P06.patch (nouveaux) isolement des correctifs : catalogue, protocole de réimport, patchs de code 4.27 → 5.5 — → créés git rm
CHG-010 2026-09-29 L1 Config/DefaultEngine.ini essai de retrait des sections AndroidFileServer/CookerSettings annulé : l'éditeur recrée la section à chaque lancement (nouveau SecurityToken) inchangé (restauré depuis lot-L1-avant) sans objet ; traité en L2

Relevé de base : moteur 5.5 sur le contenu 4.27, sans aucun correctif

Commandlet Résultat Résumé
LPCheckMeshAssignment 5 nœuds à broches orphelines dans GI : 3 GetAssetsByClass (classe perdue : SkeletalMesh, StaticMesh, StreetMap), 2 Break AssetData (ObjectPath) ; 6 nœuds EditableTextBoxStyle (StatMenu, CharGen) etat/L1_LPCheckMeshAssignment_20260929-010821.txt
CompileAllBlueprints 6 erreurs, 100 avertissements, 0 Blueprint en échec de chargement ; échecs : UI/StatMenu (3), UI/CharGen (3) — broche Font d'EditableTextBoxStyle etat/L1_CompileAllBlueprints_20260929-010931.txt

Les commandlets de contrôle n'ont rien écrit : contenu toujours identique à 4.27 après passage (385/385).

Vérifications de sortie L1

Test Résultat
Contenu de gameplay = 4.27 ✅ 385/385 MD5
T-STAT-01 ⏳ 293 packages UE4 (attendu : base 4.27) — resave contrôlé en L4-CX-B07
T-STAT-02, 03, 04 ✅
T-LOAD-01 ❌ attendu : 6 erreurs (CX-B02), à corriger en L4
T-LOAD-02 ❌ attendu : 5 broches (CX-B01), à corriger en L4

Lot L2 — Compilation propre (2026-09-29)

Tag d'entrée lot-L2-avant. Sauvegarde : D:\Game\LifePlay_Backup_5.5\L2\ (.uproject, DefaultEngine.ini) ; dossiers mis de côté dans L2\_purge\ (manifeste L2\purge_manifest.csv).

ID Date Lot Fichiers Raison Avant → après Retour arrière
CHG-011 2026-09-29 L2 LifePlay.uproject TargetPlatforms WindowsNoEditor → Windows ; section Plugins explicite : ModdingExtra, StreetMap, EnhancedInput activés ; McpAutomationBridge limité à la cible Editor (TargetAllowList) ; AndroidFileServer désactivé MD5 DA10325E… → nouveau Tools\Restore.ps1 -Lot L2 -Only LifePlay.uproject
CHG-012 2026-09-29 L2 Config/DefaultEngine.ini retrait de la section AndroidFileServerRuntimeSettings (et de son SecurityToken) ; le plugin étant désactivé, l'éditeur ne la recrée plus (vérifié après un lancement) 14 lignes retirées Tools\Restore.ps1 -Lot L2 -Only Config\DefaultEngine.ini
CHG-013 2026-09-29 L2 Binaries, Intermediate, Saved/Cooked, Saved/StagedBuilds, Plugins/*/Binaries, Plugins/*/Intermediate, Build/WindowsNoEditor, Build/LinuxNoEditor (≈ 13,9 Go) reconstruction à partir de zéro ; déplacés, pas supprimés → D:\Game\LifePlay_Backup_5.5\L2\_purge\ Move-Item inverse (voir purge_manifest.csv) ; suppression définitive sur décision utilisateur

Vérifications de sortie L2

Test Résultat
T-BUILD-01 LifePlayEditor Win64 Development ✅ code 0, 233 s, 0 erreur, 0 avertissement dans le code du projet et de ses plugins (2 messages de configuration UBT propres à McpAutomationBridge) — Saved/Logs/portage/L2_Build_LifePlayEditor_20260929-011800.log
T-BUILD-02 LifePlay Win64 Development ✅ code 0, 97 s, 0 erreur, 0 avertissement ; exécutable 300 Mo (328 Mo avant : McpAutomationBridge exclu du jeu)
T-LOAD-04 démarrage éditeur ✅ 0 LogClass: Error, 0 échec de chargement de package ou de plugin
Non-régression LPCheckMeshAssignment ✅ relevé identique à L1 (10 erreurs, 285 avertissements, mêmes signatures)
ERR-023 (AndroidFileServer) ✅ DefaultEngine.ini non réécrit après lancement
T-STAT-02, 03, 04 ✅

Lot L3 — Journalisation efficace (2026-09-29)

Tag d'entrée lot-L3-avant. Sauvegarde : D:\Game\LifePlay_Backup_5.5\L3\ (6 entrées, dont 2 fichiers créés que Restore.ps1 retirerait).

ID Date Lot Fichiers Raison Retour arrière
CHG-014 2026-09-29 L3 Source/LifePlay/LifePlay.h, LifePlay.cpp catégorie LogLifePlay Tools\Restore.ps1 -Lot L3
CHG-015 2026-09-29 L3 Source/LifePlay/LPSessionLogSubsystem.h/.cpp (nouveaux), LifePlay.Build.cs (+ EngineSettings) sous-système de GameInstance, sans modification de Blueprint : résumé de démarrage (versions, modules, fichiers par type) ; bilan de session à la fermeture ou via la commande console LifePlay.LogSummary (messages par catégorie, 25 signatures d'avertissement/erreur les plus fréquentes, chiffres normalisés en #, pile d'appel Blueprint incluse, plafond de 4 000 signatures). Les messages du moteur ne sont pas modifiés (comparabilité A/B avec 4.27) idem
CHG-016 2026-09-29 L3 Plugins/ModdingExtra/.../ModdingExtraBPLibrary.cpp instrumentation LogLPModdingTrace (Warning) → LogModdingExtra (Verbose, même format de ligne) ; échec de LoadTxt signalé une seule fois par fichier ; échec de SaveTxt désormais signalé (il était silencieux) idem
CHG-017 2026-09-29 L3 Tools/LogStats.ps1, Docs/Migration/03_Plan_Migration_Tests.md prise en compte de LogModdingExtra ; procédure A/B (-LogCmds="LogModdingExtra Verbose") git revert

Vérifications de sortie L3

Sessions UnrealEditor -game (valables pour le journal, pas pour l'affichage des personnages — règle §2 du document 03) : Saved/Logs/portage/L3_game_20260929-012748.log (niveau par défaut) et L3_game_verbose_20260929-013032.log (trace détaillée).

Test Résultat
T-BUILD-01, T-BUILD-02 ✅ 0 erreur, 0 avertissement
T-LOG-01 résumé de démarrage ✅ 20 lignes LogLifePlay ; 16 modules ; comptes par type identiques à l'inventaire 4.27 (vin_Base : 752 .lpscene, 286 .lpaction…)
T-LOG-01 bilan de session ✅ écrit à la fermeture ; signatures dédoublonnées avec leur pile d'appel
Bruit d'instrumentation ✅ LogLPModdingTrace : 0 ligne au niveau par défaut (1 300 à 5 400 avant) ; 58 lignes LogLifePlay pour toute la session
Trace détaillée ✅ 1 284 lignes LogModdingExtra avec -LogCmds ; ModLauncher.config absent signalé une fois
A/B de format avec la build 4.27 ✅ LogStats -Compare lit les deux journaux ; toutes les énumérations communes aux deux sessions sont identiques (écarts limités aux dossiers que seule l'une des sessions a atteints)
T-STAT-02, 03, 04 ✅

Découverte au passage : les erreurs ParseIntoArray (ERR-004) viennent de GI.populateClothes4, appelée par Person.ReceiveBeginPlay.


Lot L4 — Réimport contrôlé des correctifs (2026-09-29)

Sous-lot L4-CX-B01 — broches AssetRegistry de GI (ERR-020)

Tag d'entrée L4-CX-B01-avant. Sauvegarde : D:\Game\LifePlay_Backup_5.5\L4-CX-B01\ (GI.uasset, MD5 F4550DA5…).

Étape du protocole Résultat Preuve (Docs/Migration/etat/)
2. Photographie avant GI::EventGraph : 6 199 nœuds, 23 662 lignes L4-CX-B01_dump_avant.txt
3. Simulation -DryRun 3 [enum] (StreetMap, StaticMesh, SkeletalMesh), 2 [path] (1 consommateur chacun), 0 non traité — conforme à l'attendu L4-CX-B01_dryrun.txt
4. Application 3 énumérations, 2 chemins, 1 Blueprint enregistré, 0 cas non traité, 0 échec L4-CX-B01_application.txt
5. Photographie après + diff 6 201 nœuds ; 35 lignes différentes, toutes attendues : 3 nœuds AssetRegistry::GetAssetsByClass → LPAssetRegistryHelpers::GetAssetsByClassName avec leur classe d'origine ; 2 nœuds GetAssetObjectPath insérés, reprenant les consommateurs des sorties ObjectPath orphelines. Aucune autre ligne du graphe ne change L4-CX-B01_dump_apres.txt, L4-CX-B01_diff.txt
6. LPCheckMeshAssignment 0 broche orpheline dans GI (restent les 6 nœuds de CX-B02) L4-CX-B01_LPCheckMeshAssignment_*.txt
6. CompileAllBlueprints identique au relevé de base : 6 erreurs (CX-B02), 100 avertissements, 0 échec de chargement ; aucune erreur nouvelle L4-CX-B01_CompileAllBlueprints_*.txt
7. A/B d'exécution en attente : la cuisson exige CX-B02 ; sera faite sur la build Development qui suit CX-B02 —
ID Date Lot Fichiers Raison Avant → après Retour arrière
CHG-018 2026-09-29 L4-CX-B01 Content/BPs/GI.uasset réimport de CX-B01 (LPFixAssetRegistryPins) MD5 F4550DA5… (UE4) → 0AA14EDB… (UE5, réenregistré par la commandlet) Tools\Restore.ps1 -Lot L4-CX-B01 ou git checkout L4-CX-B01-avant -- Content/BPs/GI.uasset

Sous-lot L4-CX-B02 — EditableTextBoxStyle (ERR-021) : essai 1 rejeté

Tag d'entrée L4-CX-B02-avant. Sauvegarde : D:\Game\LifePlay_Backup_5.5\L4-CX-B02\. Preuves : Docs/Migration/etat/L4-CX-B02_essai1_rejete/.

Étape Résultat
Simulation 6 nœuds sur 6 attendus
Application « 6 traités, 0 liaison non gérée, 0 échec »
Compilation 0 erreur (6 avant), 98 avertissements, 0 broche orpheline
Relecture du diff ❌ CharGen::Make_64 a perdu sa liaison Font sans recevoir la liaison TextStyle : sa police retombe sur la valeur par défaut (aucune police, couleur magenta). Défaut silencieux : compilation et rapport de la commandlet au vert

Cause : LPFixEditableTextBoxFont coupait la broche Font de chaque nœud au fil du parcours. Dans CharGen, Break_62 est parcouru avant Make_64 : la coupure effaçait aussi la liaison vue depuis Make_64, qui n'était plus rebranché. Dépend de l'ordre des nœuds (sans effet dans StatMenu). La campagne du 2026-09-07 avait utilisé cette commandlet : le défaut y était très probablement présent.

ID Date Lot Fichiers Raison Retour arrière
CHG-019 2026-09-29 L4-CX-B02 Content/UI/StatMenu.uasset, CharGen.uasset essai 1 appliqué puis annulé par Tools\Restore.ps1 -Lot L4-CX-B02 (MD5 34807BE0…, 63CA2A78… retrouvés) sans objet
CHG-020 2026-09-29 L4-CX-B02 Source/LifePlayEditorTools/LPFixEditableTextBoxFontCommandlet.cpp les broches Font ne sont coupées qu'après le relevé complet de la topologie git revert
CHG-021 2026-09-29 L4 Tools/ReimportCorrectif.ps1 (nouveau) automatisation des étapes 1 à 6 du protocole git rm

Enseignement pour le protocole : l'étape 5 (relecture du diff nœud par nœud) est indispensable ; ni la compilation ni le rapport de la commandlet n'ont détecté ce défaut.

Sous-lot L4-CX-B02b — EditableTextBoxStyle (ERR-021) : essai 2 validé

Tag d'entrée L4-CX-B02b-avant. Sauvegarde : D:\Game\LifePlay_Backup_5.5\L4-CX-B02b\. Exécuté avec Tools\ReimportCorrectif.ps1 et la commandlet corrigée (CHG-020).

Étape Résultat Preuve (etat/)
3. Simulation 6 nœuds sur 6 attendus L4-CX-B02b_dryrun.txt
4. Application 6 traités, 2 Blueprints, 0 liaison non gérée, 0 échec ; 4 rebranchements TextStyle (2 par Blueprint) L4-CX-B02b_application.txt
5. Diff StatMenu 425 → 422 lignes, CharGen 4 458 → 4 455 ; 9 lignes chacun, symétriques ; les 4 Make ont TextStyle ← Break_62.TextStyle ; plus aucune broche Font orpheline L4-CX-B02b_diff_*.txt, L4-CX-B02b_dump_*
6. LPCheckMeshAssignment 0 broche orpheline dans tout le projet L4-CX-B02b_LPCheckMeshAssignment_*.txt
6. CompileAllBlueprints 0 erreur (6 avant), 98 avertissements (100 avant : les 2 « Font obsolète » disparaissent), 0 échec de chargement L4-CX-B02b_CompileAllBlueprints_*.txt
ID Date Lot Fichiers Raison Avant → après Retour arrière
CHG-022 2026-09-29 L4-CX-B02b Content/UI/StatMenu.uasset, Content/UI/CharGen.uasset réimport de CX-B02 34807BE0… → 131E4B96… ; 63CA2A78… → 8D4E4200… Tools\Restore.ps1 -Lot L4-CX-B02b ou git checkout L4-CX-B02b-avant -- Content/UI

Effet sur les tests : T-LOAD-01 (0 erreur de compilation) et T-LOAD-02 (0 broche orpheline) passent pour la première fois depuis le retour à la base saine.

Sous-lot L4-CX-B03 — mur à échelle nulle dans CentralLondon (validé)

Tag d'entrée L4-CX-B03-avant. Sauvegarde : D:\Game\LifePlay_Backup_5.5\L4-CX-B03\ (CentralLondon.umap MD5 C063EE72… = 4.27, CentralLondon_BuiltData.uasset). Correctif sur une propriété d'acteur : le contrôle se fait par rapport de la commandlet avant/après (pas de graphe).

Étape Résultat Preuve (etat/)
Rapport avant 1 composant : Wall.StaticMeshComponent0, échelle X=0 Y=12,56 Z=5,75, cube moteur visible, BlockAll L4-CX-B03_rapport_avant.txt
Application -Fix -Scale=0.1 X 0 → 0,1 (panneau de 10 cm : corps physique valide, aspect de mur plat conservé) ; 1 carte enregistrée, 0 échec L4-CX-B03_application.txt
Rapport après 0 composant à échelle nulle L4-CX-B03_rapport_apres.txt
Non-régression LPCheckMeshAssignment 0 broche orpheline ; CompileAllBlueprints 0 erreur, 0 échec de chargement ; seule la carte a changé (_BuiltData inchangé) résumés L4-CX-B03_*
ID Date Lot Fichiers Avant → après Retour arrière
CHG-023 2026-09-29 L4-CX-B03 Content/Scenes/CentralLondon.umap C063EE72… → 21912547… Tools\Restore.ps1 -Lot L4-CX-B03 ou git checkout L4-CX-B03-avant -- Content/Scenes

Sous-lot L4-CX-B04 — événements On Clicked orphelins (validé)

Tag d'entrée L4-CX-B04-avant. Sauvegarde : D:\Game\LifePlay_Backup_5.5\L4-CX-B04\. Tools\ReimportCorrectif.ps1.

Étape Résultat Preuve (etat/)
Simulation 3 sur 3 attendus L4-CX-B04_dryrun.txt
Application TopRight : StatButtonL (1 nœud en aval) ; CharGen : ButtonEyelashColor (5), ButtonPreviewErect (1) ; 3 retirés, 0 échec L4-CX-B04_application.txt
Diff TopRight 907 → 906 nœuds, CharGen 1 320 → 1 318 : seuls les 3 événements disparaissent. Les nœuds en aval sont conservés (déjà inatteignables ; la photographie n'inclut pas les broches d'exécution) L4-CX-B04_diff_*.txt
Contrôles 0 broche orpheline ; CompileAllBlueprints 0 erreur, 95 avertissements (98 avant), 0 échec de chargement résumés L4-CX-B04_*
ID Date Lot Fichiers Avant → après Retour arrière
CHG-024 2026-09-29 L4-CX-B04 Content/UI/TopRight.uasset, Content/UI/CharGen.uasset C34F7BB0… → B3B0ED10… ; 8D4E4200… → A7C718C6… Tools\Restore.ps1 -Lot L4-CX-B04 ou git checkout L4-CX-B04-avant -- Content/UI

Build Development empaquetée D:\Game\LifePlay_Build_5.5_L4 (2026-09-29)

État du code : L4-CX-B04-apres. Commande : RunUAT BuildCookRun -platform=Win64 -clientconfig=Development -build -cook -stage -archive (journal Saved/Logs/portage/L4_BuildCookRun_20260929-030445.log).

Test Résultat
T-LOAD-05 cuisson ✅ Success - 0 error(s), 94 warning(s) ; BUILD SUCCESSFUL, ExitCode=0
Données livrées en fichiers nus ✅ Windows/LifePlay/Content/Modules présent ; résumé de démarrage : 16 modules, comptes identiques à 4.27
Test de fumée (lancement automatisé) ✅ 185 s sans plantage, fermeture propre, bilan de session écrit ; menu principal atteint (journal Saved/Logs/portage/L4_build_smoke_20260929.log)
T-RUN-02 à T-RUN-05 (génération de personnages, scène, sauvegarde, 30 min) ⏳ nécessite une partie jouée : scénario 03_Plan_Migration_Tests.md §4, sur cette build et sur la référence 4.27

Note : le LifePlay.exe à la racine de la build est un lanceur ; le processus du jeu est Windows/LifePlay/Binaries/Win64/LifePlay.exe.

Correction de l'empaquetage — ERR-026 (2026-09-29)

Retour utilisateur sur LifePlay_Build_5.5_L4 : « le jeu ne fonctionne pas, la plupart des assets ne sont pas intégrés ». Confirmé : 3 257 packages cuits au lieu de 8 561. LifePlay charge maillages, vêtements, coiffures et textures par chemin à l'exécution (GetAssetsByClass, GetAssetByObjectPath) ; le cuiseur, qui ne suit que les références statiques, ne les voit pas. Les builds du 28/09 utilisaient -CookAll ; ce paramètre n'avait pas été repris. Erreur de ma part, non détectée faute de test du volume cuit : le test T-PKG-01 est ajouté au plan de tests.

ID Date Lot Fichiers Raison Retour arrière
CHG-025 2026-09-29 L4 Config/DefaultGame.ini +DirectoriesToAlwaysCook=(Path="/Game") (exclusion fBlah conservée) : tout le contenu est cuit quelle que soit la méthode d'empaquetage, y compris le bouton « Package » de l'éditeur Tools\Restore.ps1 -Lot L4-cook
CHG-026 2026-09-29 L4 Docs/Migration/03_Plan_Migration_Tests.md, Registre_Erreurs.md test T-PKG-01 ; ERR-026 git revert

Build D:\Game\LifePlay_Build_5.5_L4b (BuildCookRun Development, journal L4b_BuildCookRun_20260929-081054.log) :

Test Résultat
T-LOAD-05 cuisson ✅ Success - 0 error(s), 95 warning(s)
T-PKG-01 contenu cuit ✅ 8 561 .uasset, 2,6 Go (= référence 4.27)
Test de fumée (150 s, sans intervention) ✅ aucun plantage, fermeture propre ; une partie a démarré et 4 personnages ont été générés
Premier A/B (LogStats -Compare, échantillon faible) Accessed None maillage/perso 0,50 (4.27 : 0,27 ; 5.5 du 28/09 : 16,6) ; 4 acteurs distincts sur 4 (5.5 du 28/09 : tous Person_C_0) → CX-B01 corrige très probablement ERR-002 ; à confirmer visuellement (T-RUN-02 à 04)

LifePlay_Build_5.5_L4 (incomplète) est conservée comme preuve et peut être supprimée.


Lot L5 — Données et personnages (2026-09-29)

Diagnostic d'ERR-027 (personnages de quête invisibles ou dévêtus)

Partie jouée par l'utilisateur sur LifePlay_Build_5.5_L4b (journal archivé Saved/Logs/portage/L4b_partie_utilisateur_20260929.log) : PNJ aléatoires corrects ; personnages créés par preset invisibles en dialogue, dévêtus dans le mini-jeu.

Étape Constat Preuve
Indicateur Accessed None maillage : 26,5 / personnage (1 219 / 46) contre 0,27 en 4.27 (4 / 15) Tools\LogStats.ps1
Pile d'appel GeneratePerson → LoadPreset → GenerateAndApplyStrings/Bools lit MeshSexRace.Mesh et SMBool.SkeletalMesh vides ; 0 occurrence en 4.27 journal utilisateur
Pistes écartées (identiques en 4.27) clearVariable (ERR-028, 211 contre ≈ même nombre en 4.27) ; populateClothes4 / ParseIntoArray (631 contre 630) Grep sur les deux journaux
Structures Mesh_2… ∈ Structs/MeshSexRace ; SkeletalMesh_2… ∈ Structs/SMBool recherche binaire
Diff de graphes 4.27 / 5.5 (LPDumpFunction) GenerateAndApplyStrings, GenerateAndApplyBools, LoadMeshIfNeeded, getSkeletalMeshFromPath, SMBoolToSkeletalMesh : logique identique (seuls écarts : SetSkeletalMesh → SetSkinnedAssetAndUpdate, redirection moteur ; broche Key du PrintString UE5) etat/L5-diag_dump427_*, etat/L5-diag_dump55_*
Mécanisme MeshSexRace est chargé à la demande : LoadMeshIfNeeded(Index) → getSkeletalMeshFromPath(AssetPath) → LPAssetRegistryHelpers::GetAssetByObjectPath(…, OnlyOnDisk=true) → GetAsset → Cast<SkeletalMesh> dumps
Réglages LegacyPercentage absent des deux GameSettings.sav : valeur par défaut identique lecture binaire

Conclusion provisoire : code et réglages identiques ; le seul maillon qui change de moteur est la résolution chemin → asset (GetAssetByObjectPath, porté de FName vers FSoftObjectPath).

ID Date Lot Fichiers Raison Retour arrière
CHG-027 2026-09-29 L5 Source/LifePlay/LPAssetRegistryHelpers.cpp instrumentation permanente : tout chemin non résolu est signalé une fois (LogLifePlay Warning, chemin reçu et chemin interprété), réussites en Verbose Tools\Restore.ps1 -Lot L5-instr

Build D:\Game\LifePlay_Build_5.5_L5a (instrumentée) : éditeur et jeu compilés sans erreur ; cuisson 0 error(s), 0 warning(s) ; T-PKG-01 : 8 561 packages ; test de fumée 180 s sans plantage (aucune partie démarrée : pas de sauvegarde dans cette build). En attente d'une scène de quête jouée.