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>
174 lines
11 KiB
Markdown
174 lines
11 KiB
Markdown
# 02 — Audit logiciel de la cible 5.5 (état au 2026-09-29)
|
||
|
||
> Audit en lecture seule de `D:\Game\LifePlay-master 5.5` comparé à `D:\Game\LifePlay-master 4.27`.
|
||
> Empreintes de l'état audité : `Docs/Migration/etat/L0_*.csv`, commit git `lot-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 (`Heavy` 8 270, `UI` 195…).
|
||
|
||
## 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 None` sur 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 de `Content/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 |
|