Docs/Migration : architecture initiale (pipeline donnees -> GI -> evenements/personnages), audit logiciel 5.5, plan de tests, cahier des charges par lots bornes, journal des modifications, registre des erreurs. Tools : CheckIntegrity (T-STAT-02..04), LogStats (compteurs normalises, A/B 4.27/5.5). Empreinte de reference de l'arbre 4.27. Tests : aller-retour Snapshot/Restore verifie par MD5 ; T-STAT-02, 03, 04 au vert ; T-STAT-01 : 1 package UE4 (GI.uasset), traite en L1. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
11 KiB
02 — Audit logiciel de la cible 5.5 (état au 2026-09-29)
Audit en lecture seule de
D:\Game\LifePlay-master 5.5comparé àD:\Game\LifePlay-master 4.27. Empreintes de l'état audité :Docs/Migration/etat/L0_*.csv, commit gitlot-L0-base. Moteur : UE 5.5.4 (D:\Game\Launcher\Engine\UE_5.5). Référence 4.27 :D:\Game\Launcher\Engine\UE_4.27.
1. Synthèse
| Domaine | Verdict |
|---|---|
Code C++ du projet (Source/, 32 fichiers) |
sain — aucun fichier tronqué, aucun octet nul, encodage correct, API 5.5 appliquées |
Plugins (ModdingExtra, StreetMap) |
sains, portés — aucun binaire 4.27 restant |
Configuration (Config/) |
saine, quelques résidus (§4) |
Données de jeu (Content/Modules) |
identiques à 4.27 (2 051/2 051 fichiers) |
Contenu binaire (Content/) |
1 package incohérent : BPs/GI.uasset (§2) ; 4 assets StreetMap à contrôler (§3) |
| Gameplay | défaut ouvert : generatePerson() sans argument (§6) |
| Contrôle de version | absent jusqu'au 2026-09-29 — corrigé en L0 (dépôt git local + Tools/Snapshot.ps1) |
Le portage n'est pas « corrompu » au sens large : la corruption se limite à un fichier central,
mais c'est le plus important du jeu (GI porte tout l'interpréteur).
2. Défaut principal : Content/BPs/GI.uasset
| Fait | Preuve |
|---|---|
| Seul package au format UE4 sur 8 563 | en-tête LegacyFileVersion=-7, UE4 522 (Tools/AssetHeaders.ps1) |
| Identique octet pour octet à la version 4.27 | MD5 F4550DA5DC05FC005400CDCA2FC123C9 dans les deux arbres |
| Date disque 2026-09-07 14:38 | alors que le journal éditeur du 2026-09-28 enregistre /Game/BPs/GI entre 18:44 et 18:45 |
| Conséquence | les corrections 5.5 de GI (broches AssetRegistry, etc.) sont absentes du fichier courant |
Hypothèse (non prouvée) : le fichier a été recopié depuis 4.27 après 18:45, pour un essai A/B ; la session suivante (18:54) a tourné avec lui.
Versions UE5 de GI disponibles (toutes legacy -8, UE5 1013) :
| Sauvegarde | Date | MD5 | Contenu |
|---|---|---|---|
Saved/Backups/avant-R03-R06/BPs/GI.uasset |
09-08 13:04 | B42A3487… |
resave UE5, avant R-03 et avant correctif AssetRegistry |
Saved/Backups/avant-fix-assetregistry/GI.uasset |
09-08 13:09 | 4477BF90… |
avec R-03, sans correctif AssetRegistry |
Saved/Backups/etat-avec-tous-correctifs/GI.uasset |
09-28 15:35 | D31615C2… |
avec R-03 et correctif AssetRegistry |
Aucune sauvegarde ne contient l'état visé par le rapport du 28/09 (« R-03 annulé + correctif
AssetRegistry »). Il se reconstruit : avant-R03-R06 + LPFixAssetRegistryPins (lot L1).
État des autres assets touchés par la campagne R-03…R-06 :
| Asset | État courant |
|---|---|
BPs/Person |
= avant-R03-R06 (R-03 annulé, conforme au rapport) |
BPs/AI, BPs/Room, UI/CharGen, CharGenSlider, Cursor, Hairstyle, Inventory, Inventory_Cloth, TopRight, Scenes/CentralLondon |
≠ avant-R03-R06 : R-03/R-04 encore appliqués (datés 09-08 13:08–13:13) |
UI/StatMenu |
= avant-R03-R06 (non touché par la campagne) |
Incohérence à noter : R-03 est annulé sur Person mais toujours présent sur 7 widgets et AI,
Room. Le rapport du 28/09 dit « R-04 annulé avec R-03 (mêmes assets) » : ce n'est vrai que
pour Person.
3. Contenu à contrôler
| Asset | 4.27 | 5.5 | Action |
|---|---|---|---|
Heavy/StreetMap/Static/CentralLondon.uasset |
202,0 Mo | 13,6 Mo | comparer routes/bâtiments avec LPCheckStreetMap |
Heavy/StreetMap/Static/00BathCC.uasset |
4,2 Mo | 0,4 Mo | idem |
Scenes/CentralLondon.umap |
1,0 Mo | 0,4 Mo | ouverture et contrôle visuel |
Heavy/Daz/Bridget/Bridget8FaceMu0.uasset |
77 Ko | 6 Ko | vérifier la texture |
Docs/Architecture/streetmap_5.5.csv (280/280 villes chargées, 53 050 bâtiments) n'a pas de
point de comparaison 4.27 : l'exécution sur l'arbre 4.27 reste à faire.
Autres écarts de contenu, sans conséquence :
- 6 matériaux Substance absents (
Heavy/New/fBlah/.../Grunge), dossier jamais cuit. - 8 571 fichiers de taille différente : resave UE5 normal (
Heavy8 270,UI195…).
4. Configuration et projet
| Fichier | Constat | Gravité | Lot |
|---|---|---|---|
LifePlay.uproject |
TargetPlatforms: ["WindowsNoEditor"] (nom UE4) ; aucune section Plugins |
moyenne | L2 |
Build/ |
WindowsNoEditor, LinuxNoEditor à côté de Windows |
faible | L2 |
DefaultEngine.ini:113-127 |
sections auto-générées AndroidFileServerRuntimeSettings (avec SecurityToken) et CookerSettings |
faible | L1 |
DefaultEngine.ini PhysicsSettings |
clés d'apparence PhysX : à conserver, vérifiées contre UPhysicsSettingsCore 5.5 le 09-08 (R-08) |
— | — |
DefaultEngine.ini rendu |
aucune clé 5.5 explicite (Lumen, VSM, RHI) : valeurs par défaut du moteur | moyenne | L7 |
DefaultGame.ini:19-21,47-48 |
5 clés de nativisation (fonction supprimée en UE5, ignorées) | faible | L7 |
DefaultGame.ini:50 |
section McpAutomationBridgeSettings (outil de développement) |
info | — |
DefaultInput.ini |
68 mappings hérités + classes Enhanced Input par défaut | faible (R-07) | L7 |
DefaultEditor.ini |
33 Ko de SharedProfiles générés |
faible | L1 |
Plugins/ModdingExtra/.../ModdingExtraBPLibrary.cpp |
instrumentation LogLPModdingTrace (5 391 lignes par session) |
moyenne | L3 |
Plugins/McpAutomationBridge |
outil éditeur (2 Go, dont 1,8 Go d'Intermediate) ; ne doit pas être livré |
info | L7 |
.mcp.json |
contient un jeton ; ignoré par git | info | — |
5. Matrice d'obsolescence 4.27 → 5.5
Légende d'état : ✅ traité en 5.5 · ⚠️ partiel · ⏳ à faire.
| Élément | Emplacement | Gravité | Spécification 5.5 | État |
|---|---|---|---|---|
| VictoryPlugin (PhysX, APEX) | Plugins/VictoryPlugin (4.27) |
bloquant | LPVictoryCompat (2 fonctions) + [CoreRedirects] |
✅ |
WhitelistPlatforms, EngineVersion "4.27.0" |
.uplugin |
faible | PlatformAllowList, pas d'EngineVersion |
✅ |
DefaultBuildSettings, IncludeOrderVersion |
*.Target.cs |
moyenne | V5, Unreal5_5 |
✅ |
| Chemins d'inclusion (V5) | LifePlay.Build.cs, ModdingExtra.Build.cs |
haute | PublicIncludePaths.Add(ModuleDirectory), Path.Combine |
✅ |
GetAssetByObjectPath(FName), GetAssetsByClass(FName) |
C++ + 4 Blueprints | haute | FSoftObjectPath, FTopLevelAssetPath |
✅ C++ ; ⚠️ broches GI (§2) |
SavePackage (ancienne surcharge) |
commandlets | haute | FSavePackageArgs |
✅ |
GetAssetRegistryTags |
StreetMap |
bloquant (5.6) | FAssetRegistryTagsContext |
✅ R-01 |
LWC (FVector double) |
StreetMap, Variable.uasset |
haute | FVector3f/FBox3f pour le rendu ; structures Blueprint à vérifier |
✅ C++ ; ⏳ Variable |
Propriété SkeletalMesh |
10 Blueprints | moyenne | GetSkeletalMeshAsset() sur USkeletalMeshComponent seulement ; pour les proxies USkinnedMeshComponent, GetSkinnedAsset() |
⚠️ R-03 à refaire |
SetMasterPoseComponent |
Person |
faible | SetLeaderPoseComponent |
✅ redirection moteur |
GetRandomPointInNavigableRadius |
AI, Person, Room |
faible | LPNavigationHelpers (enrobage pur) |
⚠️ annulé sur Person |
Liaisons On Clicked orphelines |
UI/TopRight, UI/CharGen |
faible | suppression (R-05) | ✅ |
Échelle nulle Wall |
Scenes/CentralLondon |
moyenne (plantage InverseFast) |
X = 0,1 (R-06) | ✅ |
| Entrées héritées | DefaultInput.ini, BPs/PC (53 nœuds) |
faible | Enhanced Input (R-07) | ⏳ |
| Cascade | 4 systèmes Heavy/New3/Particles ; Person, TestPerson, niveau |
moyenne | Niagara, ou conserver si le chargement 5.5 est propre | ⏳ vérifier |
| NvCloth | BPs/Person, BPs/TestStatic (fabrique référencée, aucun asset de tissu) |
faible | fabrique Chaos Cloth | ⏳ vérifier |
| AtmosphericFog | Scenes/CentralLondon |
faible | SkyAtmosphere + ExponentialHeightFog |
⏳ |
| Éclairage précalculé | CentralLondon + _BuiltData, Room |
moyenne (visuel) | reconstruire l'éclairage | ⏳ |
| Substance | 6 assets Heavy/New/fBlah (jamais cuits) |
nulle | ignorer | — |
| Nativisation | DefaultGame.ini |
nulle | supprimer les clés | ⏳ |
6. Défaut fonctionnel ouvert
Rapport complet : Docs/Architecture/Rapport_Session_2026-09-28.md. Résumé :
generatePerson()sans argument produit des personnages incorrects (toujours « Tyrone », nus, invisibles pendant le dialogue) ; avec des presets, le résultat est correct.- Indicateur discriminant :
Accessed Nonesur un maillage, 0,3 par personnage en 4.27 contre 16,6 en 5.5. - Hypothèses éliminées avec preuve : 14 (données, assets manquants, AssetRegistry, R-03…).
- Piste principale : variable DSL au tableau vide (
GI::ReturnStatIfNeeded,Float[0]sur un tableau de longueur 0), liée à la conversion LWC deContent/Structs/Variable.uasset.
Piège de méthode établi : l'éditeur en mode -game casse l'affichage des personnages dans les
deux versions. Seules des builds empaquetées Development sont comparables.
7. Journal du 2026-09-28 (session PIE 5.5)
Saved/Logs/LifePlay.log, 51 790 lignes, fin propre. Attention : cette session a tourné avec le
GI UE4 (§2) ; ses chiffres ne décrivent pas l'état « tous correctifs ».
| Nombre | Signature | Classement |
|---|---|---|
| 9 048 | GetSocketInfoByName(...): No SkeletalMesh for CharacterMesh sur Person_C |
présent aussi en 4.27 (80/perso contre 76) → bruit |
| 6 510 | index N from CallFunc_ParseIntoArray_ReturnValue of length N dans GI |
à analyser (L5) |
| 5 391 | LogLPModdingTrace LoadTxt OK |
instrumentation → L3 |
| 1 297 | getBeautyValue Floats_* index hors bornes |
à analyser (L5) |
| 273 | Accès à None NearVec dans Person::standIdle |
à analyser (L5) |
| 257 | Accès à None ContactMenu dans UpdateDailyPose |
à analyser (L6) |
| 229 | CallFunc_Array_Get_Item à None dans GI |
à analyser (L5) |
| 153 | LogBlueprint : nœud SkeletalMesh déprécié (GI 52, Person 24) |
R-03 (L7) |
| 37 | LogStreaming Failed to read file (icônes moteur) |
cosmétique |
| 25 | InputMode:UIOnly … Non-Focusable widget |
faible |
| 11 | SpawnActor failed because no class was specified |
à analyser (L6) |
Plantages (Saved/Crashes, 2026-09-07, pendant le resave de masse) : BulkData.cpp:1482 IsUnlocked() ; Array.h:783 index 0 sur tableau vide ; Matrix.h:429 InverseFast (mur à échelle
nulle, corrigé par R-06). Les deux premiers concernent Heavy/New2/Furniture/fnt_new100/111
(resave repris et achevé).
8. Ce qui est supprimable ou à conserver
| Régénérable (après sauvegarde) | Taille |
|---|---|
Intermediate/ |
5,7 Go |
Binaries/ (projet), Plugins/*/Binaries, Plugins/*/Intermediate |
≈ 3,3 Go |
Saved/Cooked/, Saved/StagedBuilds/ |
6,3 Go |
Saved/Crashes/, Saved/Autosaves/, Saved/Temp, ShaderDebugInfo, MaterialStats* |
faible |
| À conserver | Raison |
|---|---|
.claude/, .mcp.json, .editorconfig, .gitignore |
environnement de développement |
Saved/Backups/ |
seules copies UE5 de GI (§2) |
Saved/SaveGames/, Saved/Config/WindowsEditor, Saved/Logs/portage/ |
réglages, historique |
D:\DDC |
cache dérivé partagé réel (DerivedDataCache/ du projet est vide) |
D:\Game\LifePlay_Build_427_Dev |
build de référence 4.27 journalisée |
Arbre LifePlay-master 4.27 |
référence, jamais modifiée |