LifePlay-Revival/Docs/Migration/etat/U58/UA/UA-MOTEUR.md
edujiro5972 8084622450 LifePlay UE 5.8 : état de développement au 2026-10-19
Tickets : REP1-T4

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 22:57:42 +02:00

203 lines
36 KiB
Markdown
Raw 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.

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