LifePlay-Revival/Docs/Migration/etat/U58/UA/UA-MOTEUR.md

204 lines
36 KiB
Markdown
Raw Normal View History

# UA-MOTEUR — Audit du moteur : installation actuelle et changements UE 5.6 → 5.8
Fiche UA-T4 — Niveau N4 — Modèle prévu opus-max | utilisé fable
Date : 2026-10-08. Racine projet : `D:\Game\LifePlay-master 5.5`. Lecture seule : aucune installation, aucune compilation, aucun lancement, aucun git d'écriture. Plan de référence : `Docs/Migration/27_Plan_Migration_UE58.md` (lot UA). Livrables frères : `UA-JEU.md` (UA-T1).
Conventions : « **établi** » = lu dans un fichier local ou dans une note officielle citée ; « **estimé** » = déduit d'un établi ; « **incertain** » = non vérifié ou source partielle. Chaque ligne de la table (c) cite sa source (URL ou fichier moteur local) et un usage réel du projet (`fichier:ligne`) ou « sans usage trouvé ».
Sources officielles lues :
- Notes 5.6 : https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-engine-5-6-release-notes (lue dans le navigateur intégré, 685 664 caractères ; sections « Platform SDK Upgrades » et « Upgrade Notes » lues en entier ; le reste filtré par mots-clés — voir § Limites).
- Notes 5.7 : https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-engine-5-7-release-notes (idem, 400 278 caractères).
- Notes 5.8 : https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-engine-5-8-release-notes (lue par WebFetch en 4 tranches, 357 273 caractères, intégralité).
- Fichiers du moteur 5.8 installé localement (configuration UBT, ini de base, en-têtes), cités `UE_5.8/Engine/...`.
---
## (a) État du moteur et de la chaîne actuels — **établi**
### Moteurs présents (`D:\Game\Launcher\Engine`)
| Moteur | `Engine/Build/Build.version` | Installé le | Remarques |
|---|---|---|---|
| UE_4.27 | 4.27.2, CL 18319896 | — | abandonné |
| UE_5.5 | **5.5.4**, CL 40574608, `++UE5+Release-5.5`, build Launcher (`IsPromotedBuild=1`) | 07/09/2026 18:18 | moteur du projet |
| UE_5.8 | **5.8.3**, CL 58210709, `++UE5+Release-5.8`, build Launcher | **08/10/2026 09:17–09:35** | **déjà installé** (la fiche UA-T4 le supposait absent) |
Écart avec l'énoncé de la fiche : UE 5.8.3 est présent (104 Go, 266 479 fichiers, 1 239 DLL dans `Engine/Binaries/Win64`, `UnrealEditor.exe` et `UnrealEditor-Core.dll` présents, `Engine/Source/Runtime` 10 954 en-têtes, `Engine/Extras/Redist` présent). Installation datée de ce matin ; non vérifiée par lancement (interdit par la fiche). Le prérequis « UE 5.8 installé » de UA-T5 semble donc satisfait, sous réserve d'un lancement de l'éditeur vide (UA-T5).
### Moteur 5.5 : plugins ajoutés, configuration modifiée
- Aucun dossier `Engine/Plugins/Marketplace` (ni en 5.5 ni en 5.8) : **aucun plugin ajouté au moteur** par le Launcher. `Fab` et `Bridge` sont livrés en standard dans `UE_5.5/Engine/Plugins/` (dossiers de premier niveau) ; `MegascansPlugin` aussi.
- Aucun `.ini` de `UE_5.5/Engine/Config` modifié après l'installation (tous datés 07/09/2026 18:18).
- 662 `.uplugin` en 5.5, 893 en 5.8.
### Chaîne de compilation (machine)
| Élément | Valeur | Source |
|---|---|---|
| Visual Studio | Community 2022 **17.14.37628.2**, `D:\Game\VS2022` | `vswhere` |
| MSVC installés | **14.38.33130** et **14.44.35207** | `D:\Game\VS2022\VC\Tools\MSVC` |
| Clang (VS) | 19.1.5 (`VC\Tools\Llvm\x64\bin\clang.exe`) | `clang --version` |
| Windows SDK | 10.0.22621.0 et 10.0.26100.0 | `Windows Kits\10\Include` |
| .NET système | SDK 9.0.318 ; runtimes 6.0, 7.0, 8.0, 9.0 | `dotnet --list-sdks/runtimes` |
| UBT 5.5 | `net8.0`, DotNet 8.0.300 embarqué (`Engine/Binaries/ThirdParty/DotNet/8.0.300`) | `UnrealBuildTool.runtimeconfig.json` |
| UBT 5.8 | `net10.0`, `rollForward=LatestMajor`, **DotNet 10.0 embarqué** (`Engine/Binaries/ThirdParty/DotNet/10.0`) | idem |
### Projet (rappel utile à cette fiche ; détail dans UA-JEU)
- `LifePlay.uproject` : `EngineAssociation "5.5"` ; modules `LifePlay` (Runtime), `LifePlayEditorTools` (Editor) ; plugins projet `LPAnimCore`, `ModdingExtra`, `StreetMap`, `McpAutomationBridge` (Editor, `Optional`), addon `LPSandbox` via `AdditionalPluginDirectories: ../LifePlay-Sandbox/Plugins` (`Optional`) ; 26 plugins moteur activés dont **`Fab` et `Bridge` non marqués `Optional`**.
- `Source/LifePlay.Target.cs:12-13` et `Source/LifePlayEditor.Target.cs:12-13` : `BuildSettingsVersion.V5`, `EngineIncludeOrderVersion.Unreal5_5`.
- `Config/DefaultEngine.ini` : `r.AntiAliasingMethod=2` (TAA), `r.DynamicGlobalIlluminationMethod=0`, `r.ReflectionMethod=2`, `r.Shadow.Virtual.Enable=0`, `DefaultGraphicsRHI_DX12` ; pas de clé `r.Substrate`, pas de section audio.
- `Config/DefaultGame.ini` : `UsePakFile=True`, `bUseIoStore=True`, `bCompressed=True`, Shipping, `+DirectoriesToAlwaysCook=/Game`, `DirectoriesToAlwaysStageAsNonUFS=Modules` ; **pas de clé `bUseZenStore`** (hérite du moteur).
- `Config/DefaultScalability.ini` (VQ1) : groupes ShadowQuality, TextureQuality, EffectsQuality, AntiAliasingQuality, niveaux 0–3.
---
## (b) Exigences 5.8 et écart avec la machine
### Exigences — **établi** (source principale : `UE_5.8/Engine/Config/Windows/Windows_SDK.json`, lu intégralement ; recoupé avec les notes 5.8 § « Platform SDK Upgrades »)
| Exigence | 5.5 (`Windows_SDK.json` 5.5) | 5.8 (`Windows_SDK.json` 5.8) | Notes officielles 5.8 |
|---|---|---|---|
| Visual Studio minimal | 2022 17.8 | 2022 17.8 (`MinimumVisualStudio2022Version`) ; 2026 18.0 (`MinimumVisualStudio2026Version`) | « Recommended Visual Studio 2026 ; minimum Visual Studio 2022 v17.14 or newer » |
| MSVC préférés | 14.38.33130–14.38.x | **14.50.35717+** (VS 2026) puis **14.44.35207+** (VS 2022 17.14) | « MSVC recommended 14.50, minimum 14.38 » |
| MSVC bannis | 14.39.x, 14.40.x | **14.39.x, 14.40.0–14.43.x, 14.44.0–14.44.35210** (« Template compile error. Resolved with 14.44.35211 »), 14.50.0–14.50.35722 | — |
| MSVC minimal | 14.38.33130 | 14.38.33130 | — |
| Windows SDK | principal 22621, min 19041 | principal 22621, min 19041 | « Default 10.0.26100.0, minimum 10.0.22621.0 » (écart entre le json et la note ; les deux versions sont présentes sur la machine) |
| Clang (optionnel) | min 16.0, préféré 18.1.3 | min 18.1.8, préférés 20.1.8+, 19.1.x | « LLVM Clang minimum 18.1.8, preferred 20.1.8 » |
| .NET | 8.0 (embarqué) | **10.0 (embarqué par UBT)** | « .NET 10.0 for VS 2026 » |
| Cible Windows minimale | `0x601` (Windows 7) | **`0xA00` (Windows 10)** | Notes 5.7 § Windows : « Increased MinimumWindowsX64TargetVersion from 0x601 (Windows 7) to 0xA00 (Windows 10) » |
| Composants VS suggérés | VC 14.38 LTSC, SDK 22621 | VC 14.44 LTSC (VS 2022) ou VC 14.50 LTSC (VS 2026), SDK 22621, `VC.Llvm.Clang`, `Component.Unreal.Ide`, `Component.Unreal.Debugger` | — |
Note 5.7 (§ Core, API Change) : « MSVC v14.50 compiler bundled with Visual Studio 2026 is not currently supported » — levé en 5.8 (14.50.35723+ préféré).
### Écart machine → actions — **établi** sauf mention
1. **MSVC 14.44.35207 est banni par 5.8** (`Windows_SDK.json` 5.8 : `"14.44.0-14.44.35210"`). UBT 5.8 marque une telle toolchain en erreur : `UE_5.8/Engine/Source/Programs/UnrealBuildTool/Platform/Windows/MicrosoftPlatformSDK.cs:1156-1159` (« UnrealBuildTool has banned the MSVC {Banned} toolchains due to compiler issues… »). **À faire par l'utilisateur** (hors périmètre de la fiche) : mettre à jour VS 2022 vers une 17.14.x livrant MSVC ≥ 14.44.35211, ou installer VS 2026 (MSVC ≥ 14.50.35723). *Estimé* : la toolchain 14.38.33130 présente reste acceptée (≥ minimum, non bannie, non préférée) ; d'après la logique de `AddVisualCppToolChain` (toolchain avec `Error` écartée au choix), UBT devrait se rabattre sur 14.38 et compiler — à confirmer par UA-T5 (lire la ligne « Using Visual Studio … toolchain » du journal UBT).
2. Windows SDK : rien à installer (22621 et 26100 présents).
3. .NET : rien à installer (UBT 5.8 embarque DotNet 10.0 ; `rollForward=LatestMajor` autorise un runtime système supérieur mais n'en exige pas).
4. Clang : non requis pour une compilation MSVC ; 19.1.5 présent ≥ 18.1.8 si on l'active un jour.
5. Cible Windows 10 minimum : aucune action machine ; conséquence produit, voir (c) ligne 5.
6. `BuildSettingsVersion` : voir (c) ligne 2 — modification de deux `Target.cs` obligatoire pour un moteur Launcher (notes 5.7).
---
## (c) Changements 5.6 → 5.8 pertinents, croisés avec le projet
Effort : F = faible (< 1 h, une édition), M = moyen (½ journée, recompilation et test), É = élevé (lot dédié). Probabilité/impact en (e).
| # | Changement | Version | Source | Usage chez nous (fichier:ligne) | Effet probable | Effort | Statut |
|---|---|---|---|---|---|---|---|
| 1 | MSVC 14.44.35207 banni ; 14.44.35211+ ou 14.50.35723+ préférés | 5.8 | `UE_5.8/Engine/Config/Windows/Windows_SDK.json` ; notes 5.8 « Preferred MSVC is bumped to 14.50 (UBT) » | Chaîne machine (`VC\Tools\MSVC\14.44.35207`) | Erreur UBT sur cette toolchain ; repli probable sur 14.38 (estimé) ; sinon blocage | action utilisateur (mise à jour VS) | établi |
| 2 | `BuildSettingsVersion` : V6 (5.7) puis V7 (5.8). Notes 5.7 § Dev Tools : « For Launcher & Installed Engine Builds: For each *Target.cs file in your project, update the build settings to V6 … you'll see a prompt identifying which *Target.cs file must be updated ». V6 = `bStrictInlineConformance=true`, `UndefinedIdentifierWarningLevel=Error` ; V7 = `ReturnType`, `Dangling`, `UnreachableCode` → `Error` | 5.7, 5.8 | notes 5.7 ; `UE_5.8/Engine/Source/Programs/UnrealBuildTool/Configuration/Rules/TargetRules.cs:123-186` | `Source/LifePlay.Target.cs:12`, `Source/LifePlayEditor.Target.cs:12` (V5) | Invite au démarrage / refus tant que V5 ; passage à V6 ou V7 transforme des avertissements en erreurs dans nos 5 modules (118 + 130 fichiers) et dans StreetMap/McpAutomationBridge | F (édition) + M (corrections révélées, mesurées par UA-T5) | établi |
| 3 | `EngineIncludeOrderVersion` : `Unreal5_5` toujours accepté (seuls 5_1 et 5_2 sont `[Obsolete]`) ; `Latest = Unreal5_8` | 5.8 | `TargetRules.cs:188-210` (5.8) | `Target.cs:13` (×2) | Aucun pour le premier essai ; passer à 5_8 plus tard peut révéler des includes implicites manquants | F | établi |
| 4 | **Plugins `Fab` et `Bridge` absents du moteur 5.8** (retirés de `Engine/Plugins` ; en 5.8 « Fab » n'apparaît que comme canal de distribution) | 5.6–5.8 (date de retrait non datée par les notes) | listing local `UE_5.5/Engine/Plugins` vs `UE_5.8/Engine/Plugins` ; notes 5.8 (Fab = marketplace) | `LifePlay.uproject` : entrées `"Name": "Fab"` et `"Name": "Bridge"` **sans `Optional`** ; `McpAutomationBridge.uplugin` les référence avec `Optional: true` ; `DefaultGame.ini` `+DirectoriesToNeverCook=/Bridge`, `/Fab` (inoffensif) | UBT : `UEBuildTarget.cs:5886` « Unable to find plugin '{0}' (referenced via {1}). Install it and try again, or remove it from the required plugin list. » → **échec de build/ouverture tant que le .uproject les exige** | F (retirer ou `Optional:true`) | établi |
| 5 | Cible Windows minimale Windows 10 (`MinimumWindowsX64TargetVersion` 0x601 → 0xA00) | 5.7 | notes 5.7 § Windows ; `Windows_SDK.json` 5.8 | sans usage code ; concerne le jeu livré | Joueurs Windows 7/8 exclus ; prérequis d'installation inchangés sinon | — | établi |
| 6 | Audio Windows : backend par défaut XAudio2 → **WASAPI** | 5.8 (WASAPI introduit en 5.6) | notes 5.8 (« default backend changes from XAudio2 to WASAPI ; opt-out `AudioMixerModuleName=AudioMixerXAudio2` in WindowsEngine.ini ») ; `UE_5.8/Engine/Config/Windows/WindowsEngine.ini` `AudioMixerModuleName=AudioMixerWasapi` (5.5 : `AudioMixerXAudio2`) | sans usage code (aucune clé audio dans `Config/`) ; les Blueprints jouent des sons (hors périmètre) | Changement de pile audio à l'exécution ; comportement « identique » selon les notes 5.6 ; à écouter en jeu | F (clé d'opt-out si régression) | établi |
| 7 | **Zen Store par défaut** pour la sortie de cuisson : `bUseZenStore=True` | 5.6 (production ready), 5.8 (défaut) | `UE_5.8/Engine/Config/BaseGame.ini:95` `bUseZenStore=True` (5.5 : `:93` `False`) ; notes 5.8 « Zenserver as Cooked Output Store now enabled by default… Pak/IoStore staging remains available and supported » | `Config/DefaultGame.ini` `[/Script/UnrealEd.ProjectPackagingSettings]` : clé absente → hérite de True | La cuisson lance `zenserver` et y range la sortie ; le staging pak/IoStore reste ; la chaîne de cuisson DLC des mods (UA-T3) et les scripts de l'atelier doivent être rejoués ; ports/processus Zen (`Zen.AutoLaunch`, `RemoteNetworkService=GeneratedStaticKey` par défaut) | M (décision : forcer `bUseZenStore=False` ou adopter Zen) | établi |
| 8 | **`FJsonObject` : clés `FStringView`/`UE::FSharedString`** ; surcharges à clé `const ANSICHAR*` `UE_DEPRECATED(5.8)` ; `Values` n'est plus un `TMap<FString,…>` sauf `UE_JSONOBJECT_LEGACY_STRING_KEYS=1` | 5.8 | `UE_5.8/Engine/Source/Runtime/Json/Public/Dom/JsonObject.h:36-53,153-183` ; notes 5.8 (« `UE_JSONOBJECT_LEGACY_STRING_KEYS` (default 0) can be set to 1 to revert ») | `Plugins/ModdingExtra/.../LPDataCache.cpp:52,196` (itération `->Values`, `Pair.Key` passé à `HasField`/`SetField`) ; `Source/LifePlayEditorTools/LPEditWidgetCommandlet.cpp:79-186` ; `McpAutomationBridge` : 5 987 occurrences `FJsonObject`, 161 `->Values` | Erreurs de compilation possibles sur `Pair.Key` (type changé) ; aucune clé en littéral ANSI chez nous (0 trouvé) donc pas d'avertissement de ce côté ; Mcp : volume élevé mais plugin optionnel, éditeur seulement | F–M (LPDataCache, LPEditWidget) ; É si Mcp doit compiler ; parade `GlobalDefinitions.Add("UE_JSONOBJECT_LEGACY_STRING_KEYS=1")` | établi |
| 9 | `GetMaterialRelevance(ERHIFeatureLevel::Type)` déprécié au profit de `EShaderPlatform` | 5.7 | notes 5.7 § Materials and Shaders ; `UE_5.8/.../Components/MeshComponent.h:127-129` | `Plugins/StreetMap/Source/StreetMapRuntime/StreetMapSceneProxy.cpp:21` | Avertissement de dépréciation (erreur si avertissements fatals) | F | établi |
| 10 | `r.TranslucencyLightingVolumeDim` → `r.TranslucencyLightingVolume.Dim` (alias déprécié 5.7 via `FAutoConsoleVariableDeprecated`) | 5.7 | `UE_5.8/.../Renderer/Private/TranslucentLighting.cpp:3398` ; `BaseScalability.ini` 5.8 n'emploie plus l'ancien nom | `Config/DefaultScalability.ini` `[EffectsQuality@0..3]` `r.TranslucencyLightingVolumeDim=` | Toujours appliqué (alias) avec avertissement au journal ; renommer | F | établi |
| 11 | `r.PostProcessAAQuality` : **introuvable** dans `Engine/Source/Runtime` des deux moteurs et absent de `BaseScalability.ini` 5.5 comme 5.8 | déjà en 5.5 | grep local 5.5 et 5.8 | `Config/DefaultScalability.ini` `[AntiAliasingQuality@0..3]` (seule clé du groupe) | La clé est probablement déjà sans effet en 5.5 : notre groupe AA ne règle rien ; en 5.8 le groupe de base pilote `r.FXAA.Quality`, `r.TemporalAA.Quality`, `r.TSR.*` | F (VQ à revoir) | incertain (non trouvé ≠ inexistant ; à confirmer par `r.PostProcessAAQuality` dans la console) |
| 12 | `r.MinScreenRadiusForCSMDepth` : introuvable dans `Source/Runtime` 5.5 et 5.8 | déjà en 5.5 | grep local | `Config/DefaultEngine.ini` `[/Script/Engine.RendererSettings]` | Clé morte, sans effet ; nettoyage optionnel | F | incertain (même réserve) |
| 13 | `BaseScalability.ini` 5.8 : nouvelles clés héritées dans nos groupes (ShadowQuality : `r.MegaLights.*`, `r.Shadow.Virtual.MarkCoarsePagesLocal` ; EffectsQuality : `r.Fog.SeparateComposition`, `r.HeterogeneousVolumes.Allowed` ; TextureQuality@0 `r.MaxAnisotropy` 0→1) | 5.6–5.8 | diff local `BaseScalability.ini` 5.5/5.8 | `Config/DefaultScalability.ini` (nos clés redéfinissent les mêmes noms que 5.5 ; `r.MaxAnisotropy=0` au niveau 0 prime sur la base) | MegaLights inactif (`bEnableMegaLights=0` par défaut, `RendererSettings.cpp:83` 5.8) et VSM désactivé par `DefaultEngine.ini` : clés sans effet ; `r.Fog.SeparateComposition` et `HeterogeneousVolumes` peuvent modifier le rendu des brouillards/volumes aux niveaux 0–1 | F (relecture VQ) | établi (clés) / estimé (effet visuel) |
| 14 | TAA toujours disponible (`AAM_TemporalAA`), TSR par défaut moteur, **SMAA ajouté** (`r.AntiAliasingMethod=5`) | 5.7 | `UE_5.8/.../RendererSettings.h:194-199` ; notes 5.7 (« r.AntiAliasingMethod=5 ») | `Config/DefaultEngine.ini` `r.AntiAliasingMethod=2` ; `Docs/Migration/25_Video_Quality.md` | Aucun : TAA conservé ; SMAA = option future pour le scintillement des morphs (L6a) | — | établi |
| 15 | **Substrate** « production-ready and enabled by default as of UE 5.7 » — mais le cvar `r.Substrate` reste à **0** par défaut ; « par défaut » = nouveaux projets (modèles `Templates/TP_*/Config/DefaultEngine.ini` : `r.Substrate=True`) | 5.7 | notes 5.7 § Substrate ; `UE_5.8/.../RenderCore/Private/RenderUtils.cpp:2069` (`r.Substrate`, 0) ; `UE_5.8/Templates/TP_AEC_BlankBP/Config/DefaultEngine.ini:42` | `Config/DefaultEngine.ini` : pas de `r.Substrate` | Aucun : matériaux hérités conservés | — | établi |
| 16 | Lumen / VSM / MegaLights / Lumen Lite : défauts cvar inchangés pour un projet existant (`r.DynamicGlobalIlluminationMethod`, `r.ReflectionMethod`, `r.Shadow.Virtual.Enable` existent en 5.8 ; Lumen Lite « default for current-generation handheld consoles ») | 5.6–5.8 | notes 5.8 ; `IndirectLightRendering.cpp:93,104`, `VirtualShadowMapArray.cpp:161` (5.8) | `Config/DefaultEngine.ini` (verrouillage L7c) | Aucun tant que les clés restent ; les valeurs de `GlobalIlluminationQuality`/`ReflectionQuality` de base ont beaucoup changé (diff local) mais ne s'appliquent pas sans Lumen | — | établi |
| 17 | Navigation : « Deprecated navigation code from UE 5.5 is removed. The navmesh version is bumped to 28 with an automatic upgrade on load » ; 5.7 : « Removed deprecated 5.4 navigation code » ; `K2_GetRandomPointInNavigableRadius` **toujours présent** (déprécié 5.1) | 5.7, 5.8 | notes 5.8, 5.7 ; `UE_5.8/.../NavigationSystem.h:516,1485` | `Source/LifePlay/LPNavigationHelpers.cpp:16` (`K2_GetRandomLocationInNavigableRadius`, signature identique à `{}` près) ; `LPFixDeprecatedNodesCommandlet` ; `DefaultEngine.ini` `RuntimeGeneration=Dynamic`, `bForceRebuildOnLoad=True` | Aucun à la compilation ; navmesh reconstruit au chargement de toute façon | — | établi |
| 18 | AssetRegistry : `GetAssetByObjectPath(FName)` déprécié (étiquette passée de 5.1 à **5.6**) ; `GetAssetsByClass(FTopLevelAssetPath)` inchangé ; 5.8 : cache du registre à indirection, étiquettes en fichiers mappés | 5.6, 5.8 | `UE_5.8/.../IAssetRegistry.h:335,401` ; notes 5.8 § Core | `Source/LifePlay/LPAssetRegistryHelpers.cpp:19` (surcharge `FSoftObjectPath`, non dépréciée), `:65` | Aucun ; format de cache du registre : à surveiller pour les paquets de mods (UA-T3) | — | établi |
| 19 | `USkinnedMeshComponent::GetSkeletalMesh_DEPRECATED` / propriété `SkeletalMesh` : toujours présents, dépréciés 5.1 | — | `UE_5.8/.../SkinnedMeshComponent.h:277-278,1196` | `Source/LifePlay/LPMeshCompat.*` (utilise `GetSkinnedAsset`) | Aucun ; le correctif L7a reste valable | — | établi |
| 20 | `FTSTicker`, `FSlateApplication::RegisterInputPreProcessor`, `IInputProcessor`, `FSavePackageArgs`, `FAssetRegistryTagsContext`, `UAnimSingleNodeInstance`, `UPoseableMeshComponent`, `FStreamableManager::LoadSynchronous`, `UTexture2D::CreateTransient`, `FEditableTextBoxStyle::Font`, `FCoreDelegates::OnPreExit/OnExit`, `IPluginManager::GetEnabledPlugins*`, `UInputSettings::AddActionMapping` : **inchangés** en 5.8 | — | en-têtes 5.8 cités en annexe A | 40 `FTSTicker` (`LPColorGradeSubsystem.cpp:76,81`…), 10 `FSlateApplication`, 22 `FSavePackageArgs`, etc. | Aucun | — | établi |
| 21 | `FCoreDelegates::OnPostEngineInit` déprécié ; `LexToString(bool)` plus strict ; `TSharedFromThis` sans membre WeakPtr ; `FField::Bind/PostLoad/BeginDestroy` retirés ; `REN_ForceNoResetLoaders` déprécié | 5.8 | notes 5.8 § Core | `OnPostEngineInit` : 0 ; `LexToString` : `Source/LifePlay/LPSessionLogSubsystem.cpp:496` (sur `EBuildConfiguration`, enum : non concerné) ; Mcp : 2 appels à vérifier ; `TSharedFromThis` : Mcp ×3 (pas d'`AsWeak`) | Sans usage trouvé côté jeu | — | établi |
| 22 | Sémantique des chaînes : `FString::ParseIntoArray` toujours sur `UE::String::ParseTokens` avec `IgnoreCase` ; `Find` toujours sur `Strnistr` ; aucune note 5.6–5.8 ne mentionne de changement de `FString::Find`/`ParseIntoArray` ; `UKismetStringLibrary::ParseIntoArray/FindSubstring` signatures identiques | 5.6–5.8 | `UE_5.8/.../Core/Private/Containers/String.cpp.inl:479,1356-1365` ; `KismetStringLibrary.h:342,372` (5.8) | `Source/LifePlay/LPStringCompat.*`, 55 `ParseIntoArray`, 102 `.Contains(` | Les correctifs CX-B08/CX-B12 restent nécessaires et valides ; rejouer `LPTestStringCompatCommandlet` en 5.8 pour preuve | F (test) | établi (code) / incertain (corps non diffé ligne à ligne) |
| 23 | Entrées héritées (`UInputSettings` action/axis) : 5.7 ajoute un drapeau **opt-in** de dépréciation des noms de mappings ; 5.8 unifie Enhanced Input et CommonInput | 5.7, 5.8 | notes 5.7 § Gameplay (« bEnabledLegacyMappingDeprecationWarnings »), notes 5.8 § Unified Input | `Source/LifePlay/LPKeyboardSubsystem.cpp:315`, `LPDirectControlSubsystem.cpp:162,183` (`UInputSettings`), `DefaultInput.ini` | Aucun (drapeau non activé) | — | établi |
| 24 | Plugins moteur retirés entre 5.5 et 5.8 : ADOSupport, AnimNext*, AppleVision, **Bridge**, **Fab**, Flurry, GizmoEdMode, HierarchyTableBuiltin, MassEntity (→ MassCore), MobileFSR, RigLogicAnimNext, RigLogicMutable, StudioTelemetry, TextureMediaPlayer, TraceDataFilters | 5.6–5.8 | listing local des `.uplugin` ; notes 5.8 (« new MassCore module ») | Seuls Fab/Bridge sont référencés (ligne 4) ; Mcp référence `MassGameplay` (présent), `StructUtils` (présent, `Experimental/StructUtils`), `InterchangeOpenUSD` (absent en 5.5, présent en 5.8) | Aucun hors ligne 4 | — | établi |
| 25 | `BasePluginName.ini` déprécié ; « Plugins no longer load ini files from subdirectories » | 5.8 | notes 5.8 § Core | plugins projet : seul `Plugins/McpAutomationBridge/Config/FilterPlugin.ini` (filtre d'empaquetage, pas une config chargée) ; aucun `Config/*.ini` dans `LPAnimCore`, `ModdingExtra`, `StreetMap`, addon | Sans usage trouvé ; mods en plugins (`Mods/`) : aucun trouvé dans le dépôt (contrat des mods : UA-T3) | — | établi |
| 26 | IoStore/pak : `-SkipEncryption`, `bDeduplicateChunks`, `bUsePatchInPlaceLayout`, `-CookPackageDir=` ; « Pak/IoStore staging remains available » ; `TextureFormatOodle` devient module moteur | 5.8 | notes 5.8 § Build/Cook | `Config/DefaultGame.ini` (`bUseIoStore=True`, `bCompressed=True`, aucune clé Oodle explicite) | Aucun changement forcé ; options nouvelles | — | établi |
| 27 | Cuisson dans le processus éditeur dépréciée (« always executed in a separate invocation of the CookCommandlet… remove all support in 5.9 ») | 5.7 | notes 5.7 § Core | sans usage trouvé (cuisson par `BuildCookRun`, commandlets séparés) | Aucun | — | établi |
| 28 | Graph Editor : `FVector2D` → `FVector2f` pour les positions Slate (dépréciations), `UMG` : animations sans `UUMGSequencePlayer` | 5.6 | notes 5.6 § UI/UMG | commandlets : `NodePosX/Y` (int32, `LPFixAssetRegistryPinsCommandlet.cpp:224`…) non concernés ; `UUMGSequencePlayer` : 0 ; `PlayAnimation(` chez nous = `USkeletalMeshComponent::PlayAnimation` (`LPDirectControlSubsystem.cpp:975,1002`), pas UMG | Sans usage trouvé | — | établi |
| 29 | Python (éditeur) : initialisation différée, `-ExecutePythonScript` force l'activation, `FTSTicker` exposé | 5.6 | notes 5.6 § Python | `PythonScriptPlugin` activé (Editor) ; outillage sandbox (`pythonscript -FullStdOutLogOutput`, mémoire des pièges de build) | Scripts de l'atelier à rejouer (UA-T2) | F | établi |
| 30 | `Scalability::FQualityLevels` : membres identiques (Resolution, ViewDistance, AntiAliasing, Shadow, GlobalIllumination, Reflection, PostProcess, Texture, Effects, Foliage, Shading, Landscape) ; `RHIGetTextureMemoryStats` : déclaration non retrouvée dans `RHI.h` 5.5 ni 5.8 (implémentations trouvées dans `MetalDynamicRHI.h`) | — | `Scalability.h` 5.5/5.8 ; grep local | `Source/LifePlay/LPVideoQualitySubsystem.cpp:38-45,184` | Aucun pour `FQualityLevels` ; `RHIGetTextureMemoryStats` compile en 5.5 donc déclarée ailleurs (probablement `DynamicRHI.h` du module RHI) — à confirmer par UA-T5 | — | établi / incertain |
| 31 | 5.8 : `"config xxxx"` console commands retirées en Shipping ; `ini.SkipSaveIfPreSaveSucceeded` ; `MallocBinned3` petit bin 14 Ko | 5.8 | notes 5.8 § Core | `TEXT("config` chez nous = chemins `Saved/Config/Windows/*.ini` (`LPColorGradeSubsystem.cpp:27`, `LPKeyboardSubsystem.cpp:37`, `LPVideoQualitySubsystem.cpp:71`, `LPAnimRedirect.cpp:10`), pas des commandes console | Sans usage trouvé | — | établi |
| 32 | `GameFeaturePlugins can load from AdditionalPluginDirectories in the .uproject` | 5.8 | notes 5.8 | `LifePlay.uproject` `AdditionalPluginDirectories` (addon sandbox) | Aucun (pas GameFeature) ; confirme la prise en charge du mécanisme | — | établi |
Changements vérifiés **sans usage trouvé** (cités pour clore la recherche) : `QueueSubtitle` (5.8), `FSoundWaveProxy` (5.8), `AActor::EditorKeyPressed` retiré (5.8), `ToggleFeatureLevelPreview` (5.8), `PLATFORM_TCHAR_IS_4_BYTES` (5.8), `FSoftObjectPath::SubPathString` → `FUtf8String` (5.6), compact sets `bUseCompactSetAsDefault` (5.8, désactivé par défaut ; 166 `TSet`, 227 `TMap` chez nous non affectés), MetaSound/Niagara/PCG/Landscape/XR/Mass/Mover/GameplayCameras (toutes les « Upgrade Notes » 5.6 et 5.7 lues : aucune ne vise une API utilisée par le projet hormais les lignes 2, 5, 9, 23 ci-dessus).
Vérification structurelle : les **441 en-têtes moteur distincts** inclus par `Source/`, `Plugins/{LPAnimCore,ModdingExtra,StreetMap}` et `LPSandbox` existent tous (par nom de fichier) dans `UE_5.8/Engine/Source` ou `Engine/Plugins` — **aucun en-tête disparu**. Les signatures citées en annexe A sont inchangées sauf mention dans la table.
---
## (d) Points à mesurer par l'essai de compilation UA-T5
1. Toolchain retenue par UBT 5.8 avec 14.44.35207 bannie : lire « Using Visual Studio … (toolchain 14.38.33130 / erreur) » ; si erreur bloquante, c'est le premier résultat à rapporter (action utilisateur : mise à jour VS).
2. Comportement sans `Fab`/`Bridge` : l'essai doit d'abord être fait **avec** le `.uproject` intact (attendu : `Unable to find plugin 'Fab'`), puis avec `Optional:true` ou retrait, pour documenter les deux.
3. `BuildSettingsVersion` : compiler en **V5 tel quel** (noter l'invite ou le refus), puis en V6 et en V7, et compter les erreurs révélées par `UndefinedIdentifierWarningLevel`, `ReturnType`, `Dangling`, `UnreachableCode` (par module : LifePlay, LifePlayEditorTools, LPAnimCore, ModdingExtra, StreetMap, LPSandbox, McpAutomationBridge).
4. `FJsonObject` : erreurs dans `LPDataCache.cpp:52,196` et `LPEditWidgetCommandlet.cpp` ; nombre d'erreurs dans `McpAutomationBridge` (plugin optionnel : mesurer aussi l'essai avec Mcp désactivé) ; essai avec `UE_JSONOBJECT_LEGACY_STRING_KEYS=1`.
5. Avertissements de dépréciation : `GetMaterialRelevance` (`StreetMapSceneProxy.cpp:21`), `FEditableTextBoxStyle::Font` (`LPFixEditableTextBoxFontCommandlet.cpp:63-66`), `GetSkeletalMesh_DEPRECATED` (toujours encadré par `PRAGMA_DISABLE_DEPRECATION_WARNINGS` ?), et tout `UE_DEPRECATED(5.6|5.7|5.8)` touché.
6. `RHIGetTextureMemoryStats` (`LPVideoQualitySubsystem.cpp:43`) : vérifier qu'elle se résout en 5.8.
7. `IncludeOrderVersion` : compiler en `Unreal5_5` puis `Unreal5_8` ; compter les erreurs d'includes implicites.
8. Si l'éditeur est lancé (UA-T5 ou lot U suivant, pas ici) : journal des cvars dépréciées (`r.TranslucencyLightingVolumeDim`), clés inconnues (`r.PostProcessAAQuality`, `r.MinScreenRadiusForCSMDepth`), lancement de `zenserver`, backend audio choisi, `LPTestStringCompatCommandlet`.
---
## (e) Risques (probabilité × impact, parade)
| # | Risque | P | I | Signal | Parade |
|---|---|---|---|---|---|
| R1 | MSVC 14.44.35207 bannie bloque UBT 5.8 | moyenne (repli 14.38 probable) | élevé (aucune compilation) | erreur UBT « banned the MSVC 14.44.0-14.44.35210 » | mise à jour VS 2022 17.14.x (MSVC ≥ 14.44.35211) ou VS 2026 ; vérifier dans l'installateur quelle 14.44 est proposée |
| R2 | `Fab`/`Bridge` exigés par le `.uproject` | **certaine** | élevé (ouverture/compilation refusée) | « Unable to find plugin 'Fab' » | `Optional:true` ou retrait des deux entrées (éditeur seulement, aucun contenu cuit) |
| R3 | V6/V7 révèlent des erreurs (identificateurs non définis, types de retour, références pendantes, code inatteignable) dans 7 modules dont deux tiers (StreetMap, Mcp) | élevée | moyen (corrections mécaniques) | décompte UA-T5 | corriger ; `WarningLevel.Warning` ciblé par module (`CppCompileWarningSettings`) en repli ; Mcp désactivable |
| R4 | `FJsonObject` casse `LPDataCache` (lecture des `.lpmod`/caches de données = contrat des mods) | élevée | élevé (chargement des données du jeu) | erreurs de type sur `Pair.Key` | adapter 2 boucles ; parade temporaire `UE_JSONOBJECT_LEGACY_STRING_KEYS=1` ; tests ERR-026/ERR-027 |
| R5 | Zen Store par défaut modifie la chaîne de cuisson (jeu et DLC mods) | élevée | moyen (temps, scripts à rejouer ; staging pak/IoStore conservé) | `zenserver` lancé, sortie de cuisson absente de `Saved/Cooked` | décision explicite : `bUseZenStore=False` dans `DefaultGame.ini` pour isoler la migration, ou adoption dans un lot dédié |
| R6 | Rendu : nouvelles clés de base (`r.Fog.SeparateComposition`, `HeterogeneousVolumes`), WASAPI, SMAA disponible | moyenne | faible–moyen (visuel/audio sans crash) | comparaison de captures à cadrage identique (règle « comparer avant de revenir ») | relecture VQ ; clé d'opt-out audio ; ne rien changer sans capture de référence 5.5 |
| R7 | Sémantique chaînes/conteneurs 5.6–5.8 non documentée dans les notes mais modifiée | faible | élevé (bugs silencieux type CX-B08) | `LPTestStringCompatCommandlet` ; comparaison `String.cpp.inl` | rejouer la commandlet de test en 5.8 avant tout lot de contenu |
| R8 | Joueurs Windows 7/8 | certaine | faible (public) | — | mention dans la note de version 5.8 du jeu |
| R9 | Notes 5.6/5.7 lues par filtrage (voir Limites) : un changement pertinent non capté | faible–moyenne | moyen | erreurs UA-T5 non anticipées | UA-T5 est la preuve par l'échec ; compléter la table a posteriori |
---
## Limites de lecture (ce qui manque exactement)
- Notes 5.8 : lues intégralement (4 tranches WebFetch, 357 273 caractères). Les sections « Platform SDK Upgrades » n'y mentionnent ni DirectX 12 minimal ni Shader Model.
- Notes 5.6 (685 664 caractères) et 5.7 (400 278 caractères) : les pages ne sont pas lisibles par WebFetch (corps vide) ; lues dans le navigateur intégré. Lues **en entier** : « Platform SDK Upgrades », « Upgrade Notes » (toutes sous-sections), et toutes les lignes contenant les mots-clés listés en annexe B (411 lignes pour 5.6, 264 pour 5.7). **Non lues** : le reste des listes « New / Bug Fix » hors mots-clés. Les changements de défauts moteur ont donc été établis par les fichiers locaux de 5.8 plutôt que par les notes 5.6/5.7.
- Aucune compilation ni lancement : les effets « estimés » (repli MSVC 14.38, erreurs V6/V7, `RHIGetTextureMemoryStats`) attendent UA-T5.
- Les Blueprints (nœuds dépréciés) ne sont pas audités ici (pas d'ouverture d'`.uasset`) : aucune note 5.6–5.8 lue ne cite un nœud Blueprint retiré ; seules dépréciations Blueprint citées : `FRigControlElement::Settings` (Control Rig, 5.8) et `BP_Get*` Pose Search (5.8), sans usage chez nous.
---
## Annexe A — Signatures vérifiées dans `UE_5.8/Engine/Source` (établi)
| API | 5.5 | 5.8 |
|---|---|---|
| `IAssetRegistry::GetAssetsByClass(FTopLevelAssetPath, TArray<FAssetData>&, bool)` | `IAssetRegistry.h:249` | `:335` identique |
| `IAssetRegistry::GetAssetByObjectPath(const FName…)` | `:339` `UE_DEPRECATED(5.1)` | `:401` `UE_DEPRECATED(5.6)` |
| `UNavigationSystemV1::K2_GetRandomLocationInNavigableRadius` | `NavigationSystem.h:497` | `:516` (`FilterClass = {}`) |
| `UNavigationSystemV1::K2_GetRandomPointInNavigableRadius` | `:1492` dép. 5.1 | `:1485` dép. 5.1 |
| `USkinnedMeshComponent::GetSkeletalMesh_DEPRECATED` | `SkinnedMeshComponent.h:1061` | `:1196` |
| `FTSTicker` | `Ticker.h:26` | `:26` |
| `UKismetStringLibrary::ParseIntoArray` / `FindSubstring` | `KismetStringLibrary.h:375/345` | `:372/342` |
| `FString::ParseIntoArray` (ParseTokens, IgnoreCase) / `Find` (Strnistr) | `String.cpp.inl:1306-1315 / 438` | `:1356-1365 / 479` |
| `Scalability::GetQualityLevels/SetQualityLevels/LoadState/SaveState` | `Scalability.h:175-204` | `:175-220` (+ surcharges avec `Section`) |
| `FEditableTextBoxStyle` / `FSlateFontInfo Font` | `SlateTypes.h:998/867` | `:1018/884` |
| `FSlateApplication::RegisterInputPreProcessor` | `SlateApplication.h:1482,1490` | `:1544,1552` |
| `FPrimitiveSceneProxy::GetDynamicMeshElements/GetViewRelevance/GetTypeHash` | `PrimitiveSceneProxy.h:440/476/253` | `:504/542/309` |
| `FLocalVertexFactory(ERHIFeatureLevel::Type, const char*)` | `LocalVertexFactory.h:62` | `:80` |
| `UMeshComponent::GetMaterialRelevance(ERHIFeatureLevel::Type)` | `MeshComponent.h:98` | `:128` **`UE_DEPRECATED(5.7)`** |
| `FSavePackageArgs` | `SavePackage.h:60` | `:62` |
| `FAssetRegistryTagsContext` | `AssetRegistryTagsContext.h:97` | `:97` |
| `UAnimSingleNodeInstance`, `UPoseableMeshComponent` | présents | présents |
| `FStreamableManager::LoadSynchronous/RequestSyncLoad` | `StreamableManager.h:539/527` | `:800/786` |
| `UTexture2D::CreateTransient` | `Texture2D.h:336` | `:342` |
| `FCoreDelegates::OnExit/OnPreExit` | `CoreDelegates.h:220/223` | `:256/259` |
| `IPluginManager::GetEnabledPlugins/GetEnabledPluginsWithContent` | `IPluginManager.h:409/416` | `:428/435` |
| `UInputSettings::AddActionMapping` | `InputSettings.h:207,263` | `:252,311` |
| `EAntiAliasingMethod` (None, FXAA, TemporalAA, MSAA, TSR) | `RendererSettings.h:190-195` | `:194-199` |
| `r.Substrate` (défaut 0, `ECVF_ReadOnly`) | `RenderUtils.cpp:1773` | `:2069` |
| `bEnableMegaLights = 0` | `RendererSettings.cpp:93` | `:83` |
| `AudioMixerModuleName` (`Config/Windows/WindowsEngine.ini`) | `AudioMixerXAudio2` | `AudioMixerWasapi` |
| `bUseZenStore` (`Config/BaseGame.ini`) | `:93 False` | `:95 True` |
| `BuildSettingsVersion` / `EngineIncludeOrderVersion` | — | `TargetRules.cs:123-210` (V7, Unreal5_8 = Latest) |
Commandes reproductibles (PowerShell, lecture seule) : `Get-Content <moteur>\Engine\Build\Build.version` ; `Get-Content <moteur>\Engine\Config\Windows\Windows_SDK.json` ; `Get-ChildItem D:\Game\VS2022\VC\Tools\MSVC` ; `vswhere -all -products * -format json` ; `Select-String -Path <fichier> -Pattern <symbole> -Context 3,0` ; diff des `BaseScalability.ini` par analyse clé=valeur des sections `*Quality@0..3`.
## Annexe B — Mots-clés du filtrage des notes 5.6/5.7
`deprecat`, `removed`, `renamed`, `no longer`, `Fab`, `Quixel`, `Bridge`, `TemporalAA`, `TAA`, `AntiAliasingMethod`, `ParseIntoArray`, `FString`, `FTSTicker`, `AssetRegistry`, `GetAssetsByClass`, `IoStore`, `.pak`, `UnrealPak`, `StructUtils`, `MassEntity`, `AnimNext`, `PythonScript`, `FJsonObject`, `PrimitiveSceneProxy`, `VertexFactory`, `GetDynamicMeshElements`, `Scalability`, `PostProcessAAQuality`, `XAudio2`, `WASAPI`, `navmesh version`, `Windows 7/10`, `IncludeOrderVersion`, `BuildSettingsVersion`, `UE_DEPRECATED`, `GameInstanceSubsystem`, `SkinnedAsset`, `GetSkeletalMesh`, `K2_Get`, `UKismetStringLibrary`, `RHIGetTextureMemoryStats`, `SaveGame`, `UGameUserSettings`, `SlateApplication`, `IInputProcessor`, `CommonUI`, `EnhancedInput`, `Oodle`, `ZenStore`, `Substrate/Lumen/MegaLights/Nanite/TSR/VSM … default`, `Mutable`, `PoseableMesh`, `MeshDescription`, `RawMesh`, `Commandlet`, `SavePackage`, `K2Node`, `EdGraph`, `Kismet`, `NavigationSystem`, `RecastNavMesh`, `AudioMixer`, `FTickableGameObject`, `TSet/TMap/TArray`.