336 lines
30 KiB
Markdown
336 lines
30 KiB
Markdown
|
|
# UA-JEU — Audit du jeu avant migration UE 5.5 → 5.8
|
||
|
|
|
||
|
|
Fiche UA-T1 — Niveau N1 — Modèle prévu sonnet | utilisé sonnet
|
||
|
|
|
||
|
|
Date : 2026-10-08. Racine : `D:\Game\LifePlay-master 5.5`. Lecture seule : aucun build, aucun lancement, aucun `.uasset` ouvert (tailles et noms uniquement), aucun git d'écriture. Plan de référence : `Docs/Migration/27_Plan_Migration_UE58.md`.
|
||
|
|
|
||
|
|
Les commandes sont notées en tête de chaque section (shell POSIX, depuis la racine). « Ligne » = ligne de texte (`grep -c` compte des lignes, pas des occurrences multiples par ligne).
|
||
|
|
|
||
|
|
## 1. Modules C++ du jeu
|
||
|
|
|
||
|
|
Commandes : `ls Source/<module> | wc -l` ; `cat Source/<module>/*.cpp Source/<module>/*.h | wc -l` ; `grep -h "UCLASS" Source/<module>/* | wc -l` ; `grep -ho "class [A-Z_]* *U[A-Za-z]*Subsystem" Source/LifePlay/*.h`.
|
||
|
|
|
||
|
|
| Module | Type (uproject) | Fichiers (.h + .cpp + Build.cs) | Lignes (.h + .cpp) | UCLASS | dont `U*Subsystem` |
|
||
|
|
|---|---|---|---|---|---|
|
||
|
|
| LifePlay | Runtime, Default | 51 | 9 212 | 25 | 16 |
|
||
|
|
| LifePlayEditorTools | Editor, Default (AdditionalDependencies: Engine) | 69 | 7 915 | 32 (tous des commandlets) | 0 |
|
||
|
|
|
||
|
|
Cibles (`Source/*.Target.cs`) : `LifePlay.Target.cs` (Game) et `LifePlayEditor.Target.cs` (Editor), toutes deux `DefaultBuildSettings = BuildSettingsVersion.V5` et `IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_5`. Aucune cible Server/Client. L'éditeur charge LifePlay + LifePlayEditorTools. LifePlayEditorTools a `bUseUnity = false`.
|
||
|
|
|
||
|
|
Classes de LifePlay (25 UCLASS, `grep -h -A1 UCLASS Source/*/*.h`) :
|
||
|
|
- 16 sous-systèmes : ColorGrade, Debug, DirectControl, Hairstyle, Keyboard, MapMarkersGuard, ModDailies, ModInfo, OutdoorRoom, PersonPropGuard, SecondScreen, SessionLog, Settings, ShowCouple, Version, VideoQuality (include `Subsystems/GameInstanceSubsystem.h` x16).
|
||
|
|
- 8 bibliothèques/compat : `ULPAssetRegistryHelpers`, `ULPDataCompat`, `ULPMeshCompat`, `ULPModDailiesLibrary`, `ULPModSettingsLibrary`, `ULPNavigationHelpers`, `ULPStringCompat`, `ULPVictoryCompat`.
|
||
|
|
- 1 : `ALifePlayGameModeBase`.
|
||
|
|
|
||
|
|
Fonctions exposées aux Blueprints : `grep -h -E "UFUNCTION\(.*BlueprintCallable" Source/LifePlay/*.h | wc -l` = 7 ; `...BlueprintPure` = 10 ; UFUNCTION au total = 36. Répartition (callable + pure, 17) : LPStringCompat 4, LPAssetRegistryHelpers 3, LPDataCompat 2, LPVictoryCompat 2, LPMeshCompat 1, LPModDailies 1, LPModInfoSubsystem 1, LPModSettingsLibrary 1, LPNavigationHelpers 1, LPSessionLogSubsystem 1.
|
||
|
|
|
||
|
|
### Dépendances (Build.cs)
|
||
|
|
|
||
|
|
LifePlay.Build.cs (`PCHUsage = UseExplicitOrSharedPCHs`) :
|
||
|
|
- Publiques : Core, CoreUObject, Engine, InputCore, AssetRegistry, NavigationSystem, LPAnimCore (plugin du jeu).
|
||
|
|
- Privées : ImageWrapper, ApplicationCore, RHI, EngineSettings, Projects, Slate, SlateCore, UMG, Chaos.
|
||
|
|
|
||
|
|
LifePlayEditorTools.Build.cs :
|
||
|
|
- Publiques : Core, CoreUObject, Engine, LifePlay.
|
||
|
|
- Privées : UnrealEd, BlueprintGraph, KismetCompiler, AssetRegistry, StreetMapRuntime, SlateCore, NavigationSystem, UMG, UMGEditor, MeshDescription, Json.
|
||
|
|
|
||
|
|
### En-têtes moteur inclus, par module UE
|
||
|
|
|
||
|
|
Commandes : `grep -ho '#include *"[^"]*"' Source/<module>/* | sort | uniq -c | sort -rn`, en excluant les en-têtes `LP*`, `LifePlay*` et `.generated.h`. Le regroupement par module UE est déduit du préfixe du chemin (heuristique, non IWYU) ; le détail par en-tête est reproductible avec la commande.
|
||
|
|
|
||
|
|
LifePlay (316 inclusions moteur) :
|
||
|
|
|
||
|
|
| Module UE (déduit) | Inclusions | En-têtes les plus fréquents |
|
||
|
|
|---|---|---|
|
||
|
|
| Engine | 120 | Engine/GameInstance.h 15, Engine/World.h 8, Kismet/BlueprintFunctionLibrary.h 8, EngineUtils.h 5, Components/StaticMesh, SkeletalMesh, Capsule 4 chacun, GameFramework/* |
|
||
|
|
| Core | 87 | CoreMinimal 25, Containers/Ticker.h 14, Misc/Paths 8, Misc/FileHelper 6, HAL/FileManager 5, Misc/CommandLine 4, HAL/IConsoleManager 4, Modules/ModuleManager 3 |
|
||
|
|
| UMG | 45 | Components/TextBlock 4, ScrollBox 4, Button 3, Blueprint/UserWidget 4 |
|
||
|
|
| Slate / SlateCore | 33 | Styling/CoreStyle 6, Styling/SlateTypes 5, Widgets/Text/STextBlock 3, SBox / SBorder / SButton 3 chacun, SlateApplication 2 |
|
||
|
|
| CoreUObject | 15 | UObject/UnrealType.h 11 |
|
||
|
|
| AssetRegistry | 5 | IAssetRegistry.h 2, AssetRegistryModule.h 2, AssetData.h 1 |
|
||
|
|
| RHI | 3 | RHI.h, RHIStats.h, DynamicRHI.h |
|
||
|
|
| EngineSettings | 3 | GeneralProjectSettings.h |
|
||
|
|
| ImageWrapper | 2 | IImageWrapper.h, IImageWrapperModule.h |
|
||
|
|
| Projects, NavigationSystem, InputCore, Chaos, Scalability | 1 chacun | Interfaces/IPluginManager.h, NavigationSystem.h, InputCoreTypes.h, Chaos/TriangleMeshImplicitObject.h, Scalability.h |
|
||
|
|
|
||
|
|
LifePlayEditorTools (390 inclusions moteur) :
|
||
|
|
|
||
|
|
| Module UE (déduit) | Inclusions | En-têtes les plus fréquents |
|
||
|
|
|---|---|---|
|
||
|
|
| UnrealEd / BlueprintGraph / UMGEditor | 117 | Kismet2/KismetEditorUtilities.h 17, EdGraph/EdGraph.h 17, EdGraphSchema_K2.h 16, Kismet2/BlueprintEditorUtils.h 15, K2Node_CallFunction.h 14, EdGraphPin 14, WidgetBlueprint.h 4, une vingtaine d'en-têtes K2Node_* |
|
||
|
|
| Core / Json | 72 | CoreMinimal 34, Misc/FileHelper 8, Misc/Paths 3, Json* 3 |
|
||
|
|
| Engine | 63 | Engine/Blueprint.h 17, Engine/World.h 6, Components/* |
|
||
|
|
| CoreUObject | 56 | UObject/SavePackage.h 21, UObject/Package.h 21, UObject/UObjectGlobals.h 10 |
|
||
|
|
| Engine (Commandlet) | 32 | Commandlets/Commandlet.h 32 |
|
||
|
|
| AssetRegistry | 30 | AssetRegistryModule.h 21, AssetData.h 9 |
|
||
|
|
| UMG | 17 | Blueprint/WidgetTree.h 4, Components/TextBlock, Button, Image… |
|
||
|
|
| NavigationSystem, StreetMapRuntime, MeshDescription, Slate | 2, 1, 1, 1 | NavigationSystem.h, StreetMap.h, MeshDescription.h, Styling/SlateTypes.h |
|
||
|
|
|
||
|
|
## 2. API moteur à risque (nos sources)
|
||
|
|
|
||
|
|
Commande type : `grep -n -E "<motif>" Source/LifePlay/* Source/LifePlayEditorTools/*` ; décompte par `grep -c` (lignes), LifePlay / LifePlayEditorTools.
|
||
|
|
|
||
|
|
| Motif | LifePlay | EditorTools | Détail fichier:ligne |
|
||
|
|
|---|---|---|---|
|
||
|
|
| FTSTicker | 40 | 0 | 14 sous-systèmes : `AddTicker(FTickerDelegate::CreateUObject…)` / `RemoveTicker` : LPColorGradeSubsystem.cpp:76,81 ; LPDirectControlSubsystem.cpp:566,582 ; LPHairstyleSubsystem.cpp:157,162 ; LPKeyboardSubsystem.cpp:538,547 ; LPMapMarkersGuardSubsystem.cpp:61,66 ; LPModDailies.cpp:88,93 ; LPModInfoSubsystem.cpp:79,85 ; LPOutdoorRoomSubsystem.cpp:29,34 ; LPPersonPropGuardSubsystem.cpp:66,72 ; LPSecondScreenSubsystem.cpp:50,55 ; LPSessionLogSubsystem.cpp:144,365,456 ; LPSettingsSubsystem.cpp:432,437 ; LPVideoQualitySubsystem.cpp:159,164 ; `FTSTicker::FDelegateHandle` en .h (ColorGrade:51, DirectControl:50, Hairstyle:91…) |
|
||
|
|
| UGameplayStatics | 3 | 2 | LPModSettingsLibrary.cpp:18,23,32 (Does/Load/SaveGameToSlot) ; LPDumpSaveCommandlet.cpp:42 (`LoadGameFromMemory`) ; LPTitleModManagerCommandlet.cpp:351 (`GetPlayerController` par nom) |
|
||
|
|
| AssetRegistry (motif large) | 34 | 141 | LPAssetRegistryHelpers.cpp:10-75 (`GetAssetByObjectPath(FSoftObjectPath)`, `GetSoftObjectPath`) ; LPHairstyleSubsystem.cpp:499,595 ; LPModDailies.cpp:60,63,68 (`ScanPathsSynchronous`, `GetAssetsByPath`, `AssetClassPath`) ; 21 fichiers de commandlets appellent `SearchAllAssets(true)` |
|
||
|
|
| IPluginManager | 3 | 0 | LPModDailies.cpp:9,50 (`GetEnabledPluginsWithContent`) |
|
||
|
|
| MountExplicitlyLoaded / FPakPlatformFile / IoStore | 0 | 0 | aucun usage dans nos sources (voir §5.6 pour ModdingExtra) |
|
||
|
|
| ParseIntoArray | 24 | 20 | LifePlay : LPDataCompat.cpp (2), LPDirectControlSubsystem.cpp (3), LPHairstyleSubsystem.cpp (3), LPModInfoSubsystem.cpp (1), LPSessionLogSubsystem.cpp (6), LPStringCompat.cpp / .h (2 + 7) ; EditorTools : LPFixParseIntoArrayCommandlet (8 + 6) + 6 autres fichiers (1 chacun) |
|
||
|
|
| FString::Find | 2 | 2 | uniquement en commentaires : LPStringCompat.h:17,53 ; LPTestStringCompatCommandlet.cpp:35 ; LPTestStringCompatCommandlet.h:4 (le correctif CX-B12 réimplémente `Find` 4.27 dans `ULPStringCompat`) |
|
||
|
|
| GetSkinnedAsset | 4 | 0 | LPMeshCompat.cpp:18 ; LPSecondScreenSubsystem.cpp:31 ; LPMeshCompat.h:5,29 (commentaires) |
|
||
|
|
| USkeletalMesh | 27 | 6 | surtout LPDirectControlSubsystem, LPHairstyleSubsystem, LPMeshCompat |
|
||
|
|
| UPoseableMeshComponent | 0 | 0 | — |
|
||
|
|
| FSlate | 44 | 0 | LPKeyboardSubsystem.cpp (13), LPSettingsSubsystem.cpp (11), LPVideoQualitySubsystem.cpp / .h (7 + 2), LPColorGradeSubsystem.cpp / .h (6 + 1), LPDirectControlSubsystem.cpp (4) |
|
||
|
|
| SNew | 28 | 0 | LPKeyboardSubsystem.cpp (17), LPModInfoSubsystem.cpp (8 ; popup `SOverlay/SBox/SBorder`, l.158-163), LPDirectControlSubsystem.cpp (3) |
|
||
|
|
| UMG (motif) | 3 | 4 | LifePlay.Build.cs ; plus 45 inclusions de widgets UMG dans LifePlay (tableau §1) |
|
||
|
|
| Navigation | 20 | 18 | LPNavigationHelpers.h / .cpp ; NavigationSystem.h ; LPFixNavRandomPoint / LPFixDeprecatedNodes |
|
||
|
|
| Chaos | 4 | 1 | LPDebugSubsystem.cpp:9 (`Chaos/TriangleMeshImplicitObject.h`), :136 (`Chaos::FTriangleMeshImplicitObjectPtr` sur `Body->TriMeshGeometries`), :215, :227 ; le comptage EditorTools est un commentaire (LPSetComponentCollisionCommandlet.h:6) |
|
||
|
|
| Lumen | 0 | 0 | non utilisé dans les sources (GI dynamique désactivée en config, §5.2) |
|
||
|
|
| RHI | 8 | 0 | LPVideoQualitySubsystem.cpp:22-24 (`DynamicRHI.h`, `RHI.h`, `RHIStats.h`), :38 (`GDynamicRHI`), :43 (`RHIGetTextureMemoryStats`) |
|
||
|
|
| Scalability | 17 | 0 | LPVideoQualitySubsystem.cpp:184 (`Scalability::FQualityLevels`, `GetQualityLevels`) + 16 autres lignes du .cpp / .h |
|
||
|
|
| FCoreDelegates | 2 | 0 | LPDebugSubsystem.cpp:371 (`OnEndFrame.AddUObject`), :387 (`RemoveAll`) |
|
||
|
|
| UGameViewportClient | 0 | 0 | seul l'include `Engine/GameViewportClient.h` : LPDirectControlSubsystem.cpp:21, LPKeyboardSubsystem.cpp:10, LPModInfoSubsystem.cpp:7 |
|
||
|
|
| FScreenshotRequest | 0 | 0 | — |
|
||
|
|
| TObjectPtr | 5 | 1 | LPDirectControlSubsystem.h:64,67,70,73 ; LPModDailies.h:45 ; LPPatchDailiesCommandlet.cpp:103 |
|
||
|
|
| UE_DEPRECATED | 0 | 0 | aucune déclaration ; les avertissements de dépréciation du compilateur ne sont pas mesurés (aucun build) |
|
||
|
|
|
||
|
|
Autres API notées au passage (grep ciblé, hors liste de la fiche) :
|
||
|
|
- Sortie de journal : `GLog->AddOutputDevice` + 2 classes `FOutputDevice` (LPSessionLogSubsystem.cpp:71,122,170).
|
||
|
|
- Commandlets : `FSavePackageArgs` 21 occurrences ; `ReconstructNode` 11 ; `EdGraphSchema_K2.h` 16 inclusions.
|
||
|
|
- Chargement d'image : `IImageWrapperModule::CreateImageWrapper` (LPVictoryCompat.cpp:34-42).
|
||
|
|
- `FAssetData::ObjectPath` (supprimé en 5.1) déjà remplacé par `FSoftObjectPath` (LPAssetRegistryHelpers).
|
||
|
|
|
||
|
|
## 3. Commandlets de LifePlayEditorTools (32)
|
||
|
|
|
||
|
|
Commande : `ls Source/LifePlayEditorTools/*Commandlet.h` + lecture des premières lignes de commentaire de chaque `.h` ; lignes = `wc -l` du `.cpp`. Classement d'après le texte d'en-tête et le nom, à confirmer par le propriétaire.
|
||
|
|
|
||
|
|
| Commandlet | Lignes .cpp | Classe | Source du classement |
|
||
|
|
|---|---|---|---|
|
||
|
|
| LPFixAssetRegistryNodes | 219 | portage 4.27 | en-tête : « correctif introduit lors du portage 4.27, toujours actif » |
|
||
|
|
| LPFixAssetRegistryPins | 319 | portage 4.27 | « correctif du 2026-09-28 » |
|
||
|
|
| LPFixButtonPadding | 183 | portage 4.27 | « CX-B09 (ERR-034) » |
|
||
|
|
| LPFixDeprecatedNodes | 323 | portage 4.27 | « remédiations R-03 et R-04 » |
|
||
|
|
| LPFixEditableTextBoxFont | 264 | portage 4.27 | en-tête (broche Font) |
|
||
|
|
| LPFixFindCenter | 255 | portage 4.27 | en-tête (FindCenterOfPolygon) |
|
||
|
|
| LPFixNavRandomPoint | 303 | portage 4.27 | « lot L7b (R-04, CX-B11) » |
|
||
|
|
| LPFixOrphanBoundEvents | 200 | portage 4.27 | « remédiation R-05 » |
|
||
|
|
| LPFixParseIntoArray | 210 | portage 4.27 | « CX-B08 (ERR-027) » |
|
||
|
|
| LPFixPawnResponse | 165 | portage 4.27 | en-tête (Room::addObject) |
|
||
|
|
| LPFixSceneCapture | 159 | portage 4.27 | « lot L7j (ERR-031) » |
|
||
|
|
| LPFixSkeletalMeshGet | 253 | portage 4.27 | « lot L7a (R-03, ERR-012) » |
|
||
|
|
| LPFixStringSearch | 323 | portage 4.27 | « lot L7i (CX-B12) » |
|
||
|
|
| LPFixWhatWhere | 315 | portage 4.27 | « couche de données, étape 4b » |
|
||
|
|
| LPFixZeroScaleActors | 223 | portage 4.27 | « remédiation R-06 » |
|
||
|
|
| LPConvertAtmosphericFog | 171 | portage 4.27 | « lot L7d, AAtmosphericFog dépréciée depuis 4.26 » |
|
||
|
|
| LPTestStringCompat | 164 | portage 4.27 (test) | « lot L7i, test de ULPStringCompat » |
|
||
|
|
| LPResavePackages | 96 | portage 4.27 | « CX-B07 (ERR-022, EX-03) » |
|
||
|
|
| LPSetComponentCollision | 137 | portage / optimisation | « lot O9, défaut déjà présent en 4.27 » |
|
||
|
|
| LPCheckMeshAssignment | 155 | diagnostic ponctuel | « diagnostic du 2026-09-08 » |
|
||
|
|
| LPCheckMeshes | 84 | diagnostic ponctuel | « lot L7h (ERR-018) » |
|
||
|
|
| LPPairCollisionTest | 519 | essai isolé | « essai isolé, éditeur seulement » |
|
||
|
|
| LPCheckStreetMap | 192 | actif | « vérification du chargement des assets ville après migration » |
|
||
|
|
| LPDumpAssets | 127 | actif (outil) | « photographie de paquets pour diff avant / après » |
|
||
|
|
| LPDumpCDO | 91 | diagnostic réutilisable | « lot L7i » |
|
||
|
|
| LPDumpComponents | 155 | diagnostic réutilisable | « ERR-031 » |
|
||
|
|
| LPDumpFunction | 180 | actif (outil d'analyse) | « outil d'analyse » |
|
||
|
|
| LPDumpSave | 94 | diagnostic réutilisable | « lot L7i » |
|
||
|
|
| LPDumpWidgetTree | 124 | diagnostic réutilisable | « ERR-034, ERR-031 » |
|
||
|
|
| LPEditWidget | 240 | actif | « lot UI14 » |
|
||
|
|
| LPPatchDailies | 241 | actif | « lot AP5, chaîne d'animations » |
|
||
|
|
| LPTitleModManager | 403 | actif | « lot UI15, gestionnaire de mods » |
|
||
|
|
|
||
|
|
Décompte : 18 « portage 4.27 » (15 LPFix*, ConvertAtmosphericFog, TestStringCompat, ResavePackages) ; 1 portage / optimisation (SetComponentCollision) ; 3 diagnostics ponctuels ou essais (CheckMeshAssignment, CheckMeshes, PairCollisionTest) ; 10 outils actifs ou diagnostics réutilisables (CheckStreetMap, DumpAssets, DumpCDO, DumpComponents, DumpFunction, DumpSave, DumpWidgetTree, EditWidget, PatchDailies, TitleModManager). Total 32.
|
||
|
|
|
||
|
|
Les commandlets du portage 4.27 reposent sur les API éditeur les plus instables d'une version à l'autre (K2Node, EdGraph, SavePackage) : candidats à « retrait ou désactivation du module » pour réduire la surface de compilation en 5.8 ; décision à prendre à un niveau supérieur.
|
||
|
|
|
||
|
|
## 4. Blueprints et contenu
|
||
|
|
|
||
|
|
Commandes : `for d in */; do find "$d" -name '*.uasset' | wc -l; done` depuis `Content/` ; tailles par `find -printf '%s'`. Aucun fichier ouvert.
|
||
|
|
|
||
|
|
| Dossier racine `Content/` | .uasset | .umap | Taille (Mo) |
|
||
|
|
|---|---|---|---|
|
||
|
|
| AnimPacks | 20 | 0 | 20,9 |
|
||
|
|
| BPs | 27 | 0 | 85,7 |
|
||
|
|
| Characters | 1 | 0 | 7,9 |
|
||
|
|
| Collections, Developers, Modules, Movies, Saves | 0 | 0 | 0 |
|
||
|
|
| FreeAnimationsPack | 134 | 1 | 495,7 |
|
||
|
|
| Heavy (exclu de l'audit) | 8 270 | 0 | 6 219,3 |
|
||
|
|
| Quaternius | 137 | 0 | 64,5 |
|
||
|
|
| Render | 11 | 0 | 0,1 |
|
||
|
|
| Retarget_ue5 | 5 | 0 | 0,5 |
|
||
|
|
| Scenes | 1 | 1 | 0,5 |
|
||
|
|
| Structs | 57 | 0 | 0,4 |
|
||
|
|
| UI | 195 | 0 | 32,7 |
|
||
|
|
| __ExternalActors__ | 190 | 0 | 178,9 |
|
||
|
|
| __ExternalObjects__ | 20 | 0 | 0,0 |
|
||
|
|
|
||
|
|
Total hors `Heavy` et `Modules` : 798 `.uasset` (`find . -name '*.uasset' -not -path './Heavy/*' -not -path './Modules/*' | wc -l`) ; avec `Heavy` : 9 068. `Content/Modules` est vide dans cet arbre (il est cuit en « non UFS », §5.3).
|
||
|
|
|
||
|
|
Les 15 plus gros `.uasset` (hors Heavy / Modules), `find -printf '%s %p\n' | sort -rn | head -15` :
|
||
|
|
|
||
|
|
| # | Taille (octets) | Fichier |
|
||
|
|
|---|---|---|
|
||
|
|
| 1 | 72 640 384 | FreeAnimationsPack/Demo/Characters/Mannequins/Meshes/SKM_Manny.uasset |
|
||
|
|
| 2 | 69 080 160 | FreeAnimationsPack/…/Meshes/SKM_Quinn.uasset |
|
||
|
|
| 3 | 51 917 561 | BPs/GI.uasset |
|
||
|
|
| 4 | 37 594 042 | FreeAnimationsPack/…/Meshes/SKM_Manny_Simple.uasset |
|
||
|
|
| 5 | 35 665 481 | FreeAnimationsPack/…/Meshes/SKM_Quinn_Simple.uasset |
|
||
|
|
| 6 | 22 111 776 | __ExternalActors__/VehicleTemplate/Maps/VehicleOffroadExampleMap/9/O4/E3Z8H79ZU52XLU8ILP50RQ.uasset |
|
||
|
|
| 7 | 21 135 848 | FreeAnimationsPack/…/Textures/Manny/T_Manny_02_BN.uasset |
|
||
|
|
| 8 | 20 616 335 | BPs/Person.uasset |
|
||
|
|
| 9 | 19 703 340 | FreeAnimationsPack/…/Textures/Quinn/T_Quinn_02ID_BN.uasset |
|
||
|
|
| 10 | 19 137 278 | __ExternalActors__/VehicleTemplate/…/3/S0/RJKVJCDVTHKGGSDSDG2W9T.uasset |
|
||
|
|
| 11 | 19 116 860 | __ExternalActors__/VehicleTemplate/…/D/1P/LIVOURXQMVQB9GBPKV0RLA.uasset |
|
||
|
|
| 12 | 18 511 165 | FreeAnimationsPack/…/Textures/Manny/T_Manny_01_BN.uasset |
|
||
|
|
| 13 | 16 106 381 | FreeAnimationsPack/…/Textures/Quinn/T_Quinn_01ID_BN.uasset |
|
||
|
|
| 14 | 16 064 152 | __ExternalActors__/VehicleTemplate/…/2/5C/5G8PYJ4E4VYUH6BJJZ6714.uasset |
|
||
|
|
| 15 | 13 673 464 | FreeAnimationsPack/…/Textures/Manny/T_Manny_02_MSR_MSK.uasset |
|
||
|
|
|
||
|
|
Blueprints de jeu les plus lourds (`find Content/BPs Content/UI`) : GI 51,9 Mo, Person 20,6 Mo, Room 5,7 Mo, CharGen 4,9 Mo, StreetMap_Static 4,5 Mo, ContactMenu 3,9 Mo, TopRight 3,6 Mo, PC 3,4 Mo. `GI.uasset` est la `GameInstanceClass` (`/Game/BPs/GI.GI_C`, DefaultEngine.ini). Contenu des graphes (nœuds obsolètes, dépendances) : à approfondir (niveau supérieur), non analysé ici.
|
||
|
|
|
||
|
|
Les 4 plus gros fichiers de `FreeAnimationsPack` (mannequins) et les `__ExternalActors__/VehicleTemplate` relèvent de contenu de modèle de projet ; `FreeAnimationsPack` est en `DirectoriesToNeverCook`.
|
||
|
|
|
||
|
|
## 5. Configuration
|
||
|
|
|
||
|
|
Commandes : `cat Config/DefaultEngine.ini`, `DefaultGame.ini`, `DefaultScalability.ini`, `LifePlay.uproject` ; `grep -h -o '^r\.[A-Za-z0-9.]*' Config/DefaultScalability.ini | sort -u`.
|
||
|
|
|
||
|
|
### 5.1 Versions
|
||
|
|
|
||
|
|
| Clé | Valeur | Source |
|
||
|
|
|---|---|---|
|
||
|
|
| `EngineAssociation` | `"5.5"` | LifePlay.uproject |
|
||
|
|
| `ProjectVersion` | `2026.10.1.6` | Config/DefaultGame.ini |
|
||
|
|
| `Description` (uproject) | « LifePlay 2026.9 beta - portage UE 5.5 » | LifePlay.uproject |
|
||
|
|
| `IncludeOrderVersion` / `DefaultBuildSettings` | `Unreal5_5` / `V5` | Source/*.Target.cs |
|
||
|
|
|
||
|
|
### 5.2 Rendu (DefaultEngine.ini)
|
||
|
|
|
||
|
|
| Réglage | Valeur | Remarque |
|
||
|
|
|---|---|---|
|
||
|
|
| `r.AntiAliasingMethod` | 2 (TAA) | commentaire : TSR (défaut UE5 = 4) fait scintiller les morphs ; lot L6a |
|
||
|
|
| `r.DynamicGlobalIlluminationMethod` | 0 (pas de Lumen) | lot L7c |
|
||
|
|
| `r.ReflectionMethod` | 2 (SSR) | lot L7c |
|
||
|
|
| `r.Shadow.Virtual.Enable` | 0 (pas de VSM) | lot L7c |
|
||
|
|
| `r.DefaultFeature.AutoExposure` | False | |
|
||
|
|
| `r.TextureStreaming` | True | |
|
||
|
|
| `r.DefaultFeature.AmbientOcclusionStaticFraction` | False | |
|
||
|
|
| `r.AllowStaticLighting` | True | |
|
||
|
|
| `r.MinScreenRadiusForCSMDepth` | 0.01 | |
|
||
|
|
| `r.AllowOcclusionQueries` | True | |
|
||
|
|
| `DefaultGraphicsRHI` | `DefaultGraphicsRHI_DX12` | WindowsTargetSettings ; SM5 |
|
||
|
|
| Nanite | non réglé | aucune clé Nanite dans les .ini (`grep -c -i nanite Config/*.ini` : 0 dans chaque fichier) |
|
||
|
|
| HardwareTargeting | Desktop / Maximum | |
|
||
|
|
| RecastNavMesh | AgentRadius 13, CellSize 19, TileSizeUU 1000, RuntimeGeneration Dynamic | |
|
||
|
|
| PhysicsSettings | clés héritées 4.27 (`PhysXTreeRebuildRate`, `bEnablePCM`, `bSubstepping`…) | à confirmer par UA-T4 (clés possiblement ignorées ou renommées côté Chaos) |
|
||
|
|
|
||
|
|
`[CoreRedirects]` : 1 redirection de package, 1 de classe, 1 d'enum vers `/Script/LifePlay` (Victory Plugin → LPVictoryCompat).
|
||
|
|
|
||
|
|
### 5.3 Empaquetage (DefaultGame.ini)
|
||
|
|
|
||
|
|
| Clé | Valeur |
|
||
|
|
|---|---|
|
||
|
|
| `Build` / `BuildConfiguration` | IfProjectHasCode / PPBC_Shipping |
|
||
|
|
| `StagingDirectory` | `D:/Game/LifePlay_Build_5.5` (chemin codé en dur) |
|
||
|
|
| `UsePakFile` | True |
|
||
|
|
| `bUseIoStore` | True (Oodle Kraken, lot O2) |
|
||
|
|
| `bCompressed` | True |
|
||
|
|
| `bGenerateChunks` / `bGenerateNoChunks` | False / False |
|
||
|
|
| `DirectoriesToAlwaysCook` | `/Game` (1 entrée) |
|
||
|
|
| `DirectoriesToNeverCook` | 20 entrées (`grep -c`) : `/Game/Heavy/New/fBlah`, 4 dossiers de la chaîne d'animation (`/Game/Quaternius`, `/Game/FreeAnimationsPack`, `/Game/AnimPacks`, `/Game/Retarget_ue5`), 15 plugins éditeur (`/Interchange`, `/InterchangeAssets`, `/NNEDenoiser`, `/NNERuntimeORT`, `/SpeedTreeImporter`, `/Paper2D`, `/MovieRenderPipeline`, `/USDCore`, `/Bridge`, `/Fab`, `/LiveLink`, `/MetaHumanSDK`, `/Takes`, `/PythonScriptPlugin`, `/ChaosVD`) |
|
||
|
|
| `DirectoriesToAlwaysStageAsNonUFS` | `Modules` |
|
||
|
|
| `IncludePrerequisites` | True |
|
||
|
|
| McpAutomationBridge | `bEnableNativeMCP=True`, port 3000 |
|
||
|
|
|
||
|
|
### 5.4 Scalabilité (DefaultScalability.ini, 127 lignes)
|
||
|
|
|
||
|
|
Groupes couverts : ShadowQuality @0-3, TextureQuality @0-3, EffectsQuality @0-3, AntiAliasingQuality @0-3. 17 variables distinctes : `r.DetailMode`, `r.MaxAnisotropy`, `r.PostProcessAAQuality`, `r.RefractionQuality`, `r.SSS.SampleSet`, `r.SSS.Scale`, `r.Shadow.CSM.MaxCascades`, `r.Shadow.CSM.TransitionScale`, `r.Shadow.DistanceScale`, `r.Shadow.MaxCSMResolution`, `r.Shadow.MaxResolution`, `r.Shadow.PreShadowResolutionFactor`, `r.Shadow.RadiusThreshold`, `r.Streaming.MaxEffectiveScreenSize`, `r.Streaming.MipBias`, `r.Streaming.PoolSize`, `r.TranslucencyLightingVolumeDim`. Les autres groupes et le niveau Cinematic sont laissés aux valeurs de `Engine/Config/BaseScalability.ini` (spécification VQ1, en-tête du fichier) : tout changement de valeurs par défaut du moteur 5.8 s'y applique sans décision.
|
||
|
|
|
||
|
|
Autres fichiers : `DefaultInput.ini` (1 section `InputSettings`), `DefaultEditor.ini` (1 section, profils de scène de prévisualisation), `DefaultEditorSettings.ini`.
|
||
|
|
|
||
|
|
### 5.5 Plugins moteur (LifePlay.uproject, 27 entrées)
|
||
|
|
|
||
|
|
- Plugins du projet (5) : LPAnimCore (Win64), LPSandbox (`Optional`, Win64), ModdingExtra, StreetMap, McpAutomationBridge (`Optional`, Editor).
|
||
|
|
- Moteur, jeu et éditeur : EnhancedInput (1).
|
||
|
|
- Moteur, désactivé : AndroidFileServer (1).
|
||
|
|
- Moteur, éditeur seulement (`TargetAllowList: Editor`, 20) : NNEDenoiser, NNERuntimeORT, Interchange, InterchangeAssets, InterchangeTests, Fab, Bridge, MetaHumanSDK, SpeedTreeImporter, HairStrands, MovieRenderPipeline, Paper2D, USDCore, ChaosVD, LiveLink, ConcertMain, ConcertSyncClient, ConcertSyncCore, Takes, PythonScriptPlugin.
|
||
|
|
- `AdditionalPluginDirectories` : `../LifePlay-Sandbox/Plugins` (chemin relatif hors dépôt).
|
||
|
|
- Plugins susceptibles d'être renommés, déplacés ou passés en expérimental en 5.8 : à vérifier par UA-T4 (notamment HairStrands, NNEDenoiser / NNERuntimeORT, Bridge, MetaHumanSDK, Paper2D, ChaosVD, Concert*).
|
||
|
|
|
||
|
|
### 5.6 Plugins du projet (code)
|
||
|
|
|
||
|
|
Commande : `find Plugins/<p>/Source \( -name '*.cpp' -o -name '*.h' \) | wc -l` ; `... -exec cat {} + | wc -l`.
|
||
|
|
|
||
|
|
| Plugin | Type | Fichiers | Lignes | Version |
|
||
|
|
|---|---|---|---|---|
|
||
|
|
| LPAnimCore | Runtime | 5 | 783 | 1.0.0 |
|
||
|
|
| ModdingExtra | Runtime (contenu : oui) | 6 | 710 | 1.0 |
|
||
|
|
| StreetMap | Runtime + Editor (contenu : oui) | 28 | 4 853 | 1.0 |
|
||
|
|
| McpAutomationBridge | Editor, 2 modules (McpAutomationBridge, McpAutomationBridgeFab) | 1 624 | 237 902 | 0.6.0-beta-b |
|
||
|
|
|
||
|
|
Aucun `.uplugin` du projet ne porte de champ `EngineVersion` (grep sur les 4 fichiers). Dépendances de modules : StreetMap utilise UnrealEd, AssetTools, EditorStyle, PropertyEditor, XmlParser, Projects, Slate (API éditeur) ; ModdingExtra : AssetRegistry, Json, Engine, Slate, SlateCore ; LPAnimCore : Core, CoreUObject, Engine. McpAutomationBridge est de loin le plus gros volume de code éditeur à recompiler en 5.8 (code tiers en bêta) : décision garder / désactiver à un niveau supérieur. Le mécanisme de montage des mods (ModdingExtra) n'est pas analysé ici : à approfondir (niveau supérieur).
|
||
|
|
|
||
|
|
## 6. Chemins moteur codés en dur
|
||
|
|
|
||
|
|
Commande : `grep -rIn -E "UE_5\.[0-9]|UE_4\.[0-9]+|UE4\.27|4\.27|Launcher|UnrealEditor|RunUAT" Tools Config Source Plugins/*/Source Build *.bat` ; `find . -maxdepth 2 \( -name '*.bat' -o -name '*.cmd' \)` : aucun lanceur `.bat`/`.cmd` trouvé hors `Releases` et `Intermediate`.
|
||
|
|
|
||
|
|
| Fichier:ligne | Contenu | Action en 5.8 |
|
||
|
|
|---|---|---|
|
||
|
|
| Tools/BuildDebug.ps1:19 | `$UE = 'D:\Game\Launcher\Engine\UE_5.5\Engine'` ; l.29 `RunUAT.bat` | changer le chemin par défaut |
|
||
|
|
| Tools/RunCommandlet.ps1:20 | `$Engine = 'D:\Game\Launcher\Engine\UE_5.5\Engine'` ; l.23 `UnrealEditor-Cmd.exe` | changer le chemin par défaut |
|
||
|
|
| Config/DefaultGame.ini:16 | `StagingDirectory=(Path="D:/Game/LifePlay_Build_5.5")` | dossier de sortie, pas un chemin moteur |
|
||
|
|
| Tools/CheckIntegrity.ps1:21 | `$Root427 = 'D:\Game\LifePlay-master 4.27'` | référence 4.27, indépendante de 5.8 |
|
||
|
|
| Tools/AuditAssets.py, AuditScriptDeps.py, BuildCollections.py, FixTextureMips.py | en-têtes : `UnrealEditor-Cmd.exe <projet> -run=pythonscript …` | aucun chemin moteur ; scripts Python éditeur (API `unreal` à confirmer en 5.8) |
|
||
|
|
| Config/*.ini | aucun chemin `UE_5.5` / `UE_4.27` ; seulement des commentaires (« 4.27 », « 5.5 ») | aucun |
|
||
|
|
| Source/**, Plugins/*/Source | aucun `UE_5.5` / `UE_4.27` | aucun |
|
||
|
|
| Docs : 02, 03, 08, 09, 13, 18, 24, 25, 27, Journal_Modifications | mentions d'éditeur / moteur (`grep -rIl`) | à mettre à jour après migration |
|
||
|
|
|
||
|
|
La version du moteur est aussi fixée par `EngineAssociation` (« 5.5 ») ; `Misc/EngineVersion.h` est inclus 1 fois dans LifePlay (consultation de version, rôle exact à approfondir au niveau supérieur).
|
||
|
|
|
||
|
|
## 7. Surface exposée : les 20 points les plus susceptibles de casser en 5.8
|
||
|
|
|
||
|
|
Classement par probabilité et coût estimés par le rédacteur (aucune compilation faite). Chaque point est **à confirmer par UA-T4** (notes de version / en-têtes 5.8). Les mentions « à approfondir (niveau supérieur) » signalent un mécanisme qu'il faudrait suivre, non analysé ici.
|
||
|
|
|
||
|
|
| # | Point | Où | Motif de risque |
|
||
|
|
|---|---|---|---|
|
||
|
|
| 1 | `Chaos::FTriangleMeshImplicitObjectPtr` / `Body->TriMeshGeometries` | LPDebugSubsystem.cpp:9,136,215,227 | API interne Chaos, non stable ; type du pointeur de géométrie sujet à refonte |
|
||
|
|
| 2 | `RHIGetTextureMemoryStats`, `GDynamicRHI`, `FTextureMemoryStats` | LPVideoQualitySubsystem.cpp:22-24,38,43 | API RHI privée, refontes récurrentes |
|
||
|
|
| 3 | Plugin McpAutomationBridge (1 624 fichiers, 237 902 lignes) | Plugins/McpAutomationBridge | gros volume de code éditeur tiers en bêta, compilé avec l'éditeur. À approfondir (niveau supérieur) |
|
||
|
|
| 4 | Commandlets du portage 4.27 : K2Node / EdGraph / `ReconstructNode` | LifePlayEditorTools (117 inclusions éditeur, 11 `ReconstructNode`) | API Blueprint éditeur régulièrement modifiée ; 18 commandlets à usage unique : candidats au retrait |
|
||
|
|
| 5 | `FSavePackageArgs` / `UPackage::SavePackage` | 21 commandlets (`UObject/SavePackage.h` x21) ; LPConvertAtmosphericFogCommandlet.cpp:149-152 | signature et options de sauvegarde déjà modifiées entre 5.0 et 5.5 |
|
||
|
|
| 6 | `UEdGraphSchema_K2`, `K2Node_*` (≈20 types) | LifePlayEditorTools | noms de pins et de fonctions de bibliothèques susceptibles de bouger |
|
||
|
|
| 7 | `FTSTicker` (14 sous-systèmes, 40 lignes) | LPColorGradeSubsystem.cpp:76 … LPVideoQualitySubsystem.cpp:159 | usage massif ; vérifier toute dépréciation de `FTickerDelegate` / `FDelegateHandle` en 5.8 |
|
||
|
|
| 8 | `IPluginManager::GetEnabledPluginsWithContent` | LPModDailies.cpp:50 | dépend du comportement de montage des plugins de contenu de mod |
|
||
|
|
| 9 | Montage des mods et conteneurs (ModdingExtra, `DirectoriesToAlwaysStageAsNonUFS=Modules`, IoStore) | Plugins/ModdingExtra ; DefaultGame.ini | mécanisme non analysé. À approfondir (niveau supérieur) |
|
||
|
|
| 10 | `Scalability::FQualityLevels` / `GetQualityLevels` | LPVideoQualitySubsystem.cpp:184 (+16 lignes) | structure des niveaux de scalabilité (groupes ajoutés ou renommés) ; lien avec DefaultScalability.ini |
|
||
|
|
| 11 | `FSlateApplication`, `SNew`, widgets Slate (44 + 28 lignes) | LPKeyboardSubsystem.cpp, LPModInfoSubsystem.cpp, LPSettingsSubsystem.cpp, LPDirectControlSubsystem.cpp | API Slate (styles `FCoreStyle`, `FSlateTypes`) : dépréciations probables |
|
||
|
|
| 12 | `FCoreDelegates::OnEndFrame` | LPDebugSubsystem.cpp:371,387 | signature d'événement de fin de frame |
|
||
|
|
| 13 | `GetSkinnedAsset` / `USkeletalMesh` | LPMeshCompat.cpp:18 ; LPSecondScreenSubsystem.cpp:31 | transition `USkinnedAsset` / `USkeletalMesh` ; 27 usages de `USkeletalMesh` à vérifier |
|
||
|
|
| 14 | `FSoftObjectPath`, `GetAssetByObjectPath`, `AssetClassPath`, `ScanPathsSynchronous` | LPAssetRegistryHelpers.cpp:10-75 ; LPHairstyleSubsystem.cpp:499,595 ; LPModDailies.cpp:60-73 | API AssetRegistry déjà migrée une fois (5.1) ; 21 commandlets appellent `SearchAllAssets` |
|
||
|
|
| 15 | `ParseIntoArray` (44 lignes), `FString::Find` | LPStringCompat.*, LPDataCompat.cpp, LPSessionLogSubsystem.cpp (6) … | le correctif CX-B12 suppose le comportement 5.5 ; tout changement en 5.8 touche les données du jeu. À approfondir (niveau supérieur) |
|
||
|
|
| 16 | `GLog->AddOutputDevice` + `FOutputDevice` | LPSessionLogSubsystem.cpp:71,122,170 | signature de `Serialize` (verbosité, catégorie) et thread-safety |
|
||
|
|
| 17 | `UGameplayStatics` SaveGame (Load / SaveGameToSlot) | LPModSettingsLibrary.cpp:18,23,32 ; LPDumpSaveCommandlet.cpp:42 | format et compatibilité des sauvegardes existantes. À approfondir (niveau supérieur) |
|
||
|
|
| 18 | `NavigationSystem` / `K2_GetRandomLocationInNavigableRadius` | LPNavigationHelpers.h / .cpp ; LPFixNavRandomPointCommandlet | surface déjà modifiée en 5.5 (R-04) ; `RecastNavMesh` en config |
|
||
|
|
| 19 | Réglages de rendu hérités : TAA, SSR, pas de VSM / Lumen, DX12 ; `BaseScalability.ini` du moteur | DefaultEngine.ini ; DefaultScalability.ini | valeurs par défaut du moteur 5.8 ; verrouillage actuel en config, mais les groupes non couverts suivent le défaut moteur |
|
||
|
|
| 20 | Plugins moteur éditeur (20) et `PhysicsSettings` hérités 4.27 | LifePlay.uproject ; DefaultEngine.ini | plugins renommés / dépréciés / expérimentaux ; clés `PhysXTreeRebuildRate` etc. possiblement ignorées |
|
||
|
|
|
||
|
|
Points secondaires non classés : chemins de `Tools/*.ps1` (§6, changement trivial) ; `TObjectPtr` (6 usages, API stable) ; `UE_DEPRECATED` (0 dans nos sources).
|
||
|
|
|
||
|
|
## 8. Commandes utilisées (récapitulatif)
|
||
|
|
|
||
|
|
```
|
||
|
|
# depuis D:\Game\LifePlay-master 5.5
|
||
|
|
ls Source Source/*; cat Source/*/*.Build.cs Source/*.Target.cs; cat LifePlay.uproject
|
||
|
|
cat Source/<m>/*.cpp Source/<m>/*.h | wc -l ; grep -h "UCLASS" Source/<m>/* | wc -l
|
||
|
|
grep -ho '#include *[<"][^>"]*[>"]' Source/<m>/* | sort | uniq -c | sort -rn
|
||
|
|
grep -c -E "<motif>" Source/<m>/* # §2 ; grep -n pour fichier:ligne
|
||
|
|
grep -h -E "UFUNCTION\(.*Blueprint(Callable|Pure)" Source/LifePlay/*.h
|
||
|
|
find Content/<dossier> -name '*.uasset' | wc -l ; find ... -printf '%s %p\n' | sort -rn | head -15
|
||
|
|
cat Config/DefaultEngine.ini Config/DefaultGame.ini Config/DefaultScalability.ini
|
||
|
|
grep -rIn -E "UE_5\.[0-9]|UE_4\.[0-9]+|Launcher|UnrealEditor|RunUAT" Tools Config Source Plugins/*/Source
|
||
|
|
find Plugins/<p>/Source \( -name '*.cpp' -o -name '*.h' \) | wc -l
|
||
|
|
```
|
||
|
|
|
||
|
|
Limites : regroupement des en-têtes par module UE déduit du chemin ; `grep -c` compte des lignes ; classement des commandlets d'après leurs commentaires d'en-tête ; aucune mesure de dépréciation par le compilateur (aucun build, conformément à la fiche).
|