LifePlay-Revival/Docs/Migration/02_Audit_Logiciel.md
edujiro5972 39fac16216 L0 : documentation de migration et outillage de test
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>
2026-09-29 01:01:52 +02:00

174 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 |