LifePlay-Revival/Docs/Migration/etat/U58/UA/UA-SYNTHESE.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

38 KiB
Raw Blame History

UA-SYNTHESE — Effort, risques et décisions pour la porte G-U (migration UE 5.5 → 5.8)

Fiche UA-T6 — Niveau N5 — Modèle prévu fable-top | utilisé fable

Date : 2026-10-08. Lot UA du plan Docs/Migration/27_Plan_Migration_UE58.md. Lecture seule : aucune compilation, aucun lancement, aucun git, aucun audit ni code modifié. Sources : UA-JEU.md (T1), UA-PLUGINS.md (T2), UA-MODS.md (T3), UA-MOTEUR.md (T4), UA-ESSAI.md (T5, fait foi), UA-OUTILS.md (T7), UA-FAB.md, les journaux D:\Game\U58-essai\essai-A1|A2|B.log (relus pour cette synthèse), les journaux etat/AP7_Ship_*, etat/L1_CompileAllBlueprints_*, etat/L4-CX-B07_LPResavePackages_*, etat/L7h_LPCheckStreetMap_*, et les quatre corrections de l'orchestrateur (a–d), qui prévalent sur les audits.

Conventions : établi = constaté dans un fichier ou un journal cité ; estimé = déduit avec une méthode écrite (§ 7) ; incertain = ne se tranche que par un essai, nommé. Unité d'effort : 1 séance ≈ une demi-journée ≈ 3 h de travail orchestré, builds compris (même unité que UA-PLUGINS et UA-OUTILS). Les décisions appartiennent à l'utilisateur ; ce document recommande.


1. Résumé exécutif

  1. Effort total estimé : 14,5 à 25 séances pour U0–U8 (≈ 45 à 75 h orchestrées, 2 à 4 semaines à 1–2 séances/jour), + 2 à 4 séances pour U9 si on le fait maintenant ; durée machine cumulée ≈ 7 à 16 h, surtout sans surveillance (premier cook 5.8 à froid, réenregistrement, cuissons). Actions utilisateur ≈ 6 à 10 h (décisions, VS Installer, contrôles visuels, tests de mods, portes).
  2. La compilation n'est pas le problème (établi par l'essai T5 et relecture de essai-A1.log) : sur le moteur 5.8.3 complet, toutes les unités de compilation des 9 modules (jeu, 4 plugins, 3 modules de l'addon, Mcp) ont été compilées ; 2 causes d'erreur seulement (LPCoupleSimCore.cpp:127, LPDataCache.cpp:198), 9 avertissements C4996, chaîne d'outils conforme (VS 2026 / MSVC 14.50.35739, SDK 22621, .NET 10 embarqué).
  3. Trois risques majeurs : (R1) un mod cuit pour 5.5 monté dans le jeu 5.8 — plantage possible avant tout avertissement (P3×I3) ; (R2) le contenu au passage 5.8 — réenregistrement de 9 068 .uasset dont GI 51,9 Mo avec l'antécédent ERR-019 (plantages du resave de masse en 5.5) et premier cook à froid de durée inconnue (P2×I3) ; (R3) Zen store activé par défaut en 5.8, qui change la chaîne de cuisson dont dépendent la version de référence et les mods (P3×I2).
  4. Recommandation : GO séquencé pour U0–U8, U9 en go partiel (différé après U6 ou après V2.0), à condition de trancher en U0-T4 les décisions D1 (Zen store = False pour la migration), D3 (garder LPResavePackages et LPTestStringCompat), D10 (périmètre du réenregistrement) et D4 (Mcp désactivé, MCP Epic évalué sans l'activer dans le jeu), et d'ajouter deux portes intermédiaires : après U3 (0 erreur de compilation, LPTestStringCompat vert) et après U6 (A/B et contrôle visuel), avant tout point de non-retour (U7 référence, U8 publication).
  5. Premier lot à lancer : U0, dont la moitié est déjà faite (5.8.3 et VS 2026 installés) ; prérequis en § 9.

2. Lots × effort × niveaux × actions utilisateur × durées machine

Constantes de calibrage (établi sauf mention) : build éditeur 5.8 complet avec Mcp 26,5 min (A1) / 25,5 (A2) ; sans Mcp 4,9 min pour 71/132 actions (B, interrompu) → complet sans Mcp estimé 8–12 min ; build 5.5 incrémental 13 s (AP7_Build_20261006-212651.txt:74) ; cook 5.5 itératif à chaud 8 884 paquets en 6,0 min, BuildCookRun Shipping complet 7 min 37 s (AP7_Ship_20261007-023526.txt:3697,3748,4215) ; CompileAllBlueprints 115 s (L1_CompileAllBlueprints_20260929-010931.txt:3) ; LPCheckStreetMap 25 s (L7h_LPCheckStreetMap_20261001-201853.txt:3) ; LPResavePackages liste CX-B07 86 s (L4-CX-B07_LPResavePackages_20260930-115833.txt:3) ; cuisson DLC d'un mod 5–15 min (UA-MODS § 3) ; premier cook 5.8 à froid (DDC et shaders à reconstruire) estimé 1–3 h, incertain ; copie de 14 Go sur le NVMe USB estimé 5–15 min.

Lot Contenu ajusté par les constats Effort (séances, bas–haut) Niveaux Actions utilisateur Durées machine
U0 Préparation T1 fait (5.8.3 installé, UA-MOTEUR (a)). T2b à moitié fait : VS 2026 18.10 installé (corr. b) ; reste : figer les composants LTSC 14.38 + 14.50 dans VS Installer ; épingler ToolchainVersion=14.38.33130 dans le projet 5.5 ; build 5.5 de contrôle (toolset au journal UBT inchangé, code 0) + démarrage éditeur 5.5 ; relever %LOCALAPPDATA%\UnrealEngine\Common\Zen (5.6.6, 3,7 Go). T3 : tag ue5.5-final, copie P4 (exclure .mcp.json), branche ue5.8, dépôt des modules. T4 : décisions D1–D13 (§ 5). Nouveau T5 : dans la copie, EngineAssociation 5.8, Target.cs → Latest (A2 prouve 0 erreur supplémentaire), Fab/Bridge → Optional (robustesse, D13) 1 – 1,5 N0 (build, relevés), N1 (épinglage, copie), N2 (décisions), utilisateur VS Installer (15 min) ; décisions (45–60 min) build 5.5 après changement de toolset : estimé 5–10 min ; copie 5–15 min
U1 Cartographie Ce qui reste après UA : diff ciblé 5.5/5.8 de PluginManager.cpp, ObjectVersion.h, IoStore.h, IoContainerHeader.h (UA-MODS § 6, R2) ; spécification des 2 correctifs (:127 : équivalent 5.8 à identifier — candidats estimés : données compressées de UAnimSequence ou IAnimationDataModel::GetBoneAnimationTracks() déjà utilisé par l'addon LPAnimCatalogCommandlet.cpp:125 ; :198 : clé FJsonObject → FString explicite) ; relevé des nœuds Blueprint dépréciés en 5.5 avec Blueprint Reader (D8) sur GI, Person, UI/ModManager, UI/ModuleTick, UI/MainMenu, CharGen ; reliquats 4.27 (29 docs, UA-JEU § 6) ; U1-CART.md 1 – 2 N1 (inventaires, CART), N3 (diff moteur, spec des correctifs) aucune aucune
U2 Retrait 4.27 + chemin moteur Retrait de 16 commandlets (les 18 « portage 4.27 » de UA-JEU § 3 moins LPResavePackages, nécessaire en U5, et LPTestStringCompat, test gardé ; D3) et de leurs entrées Build.cs ; Tools/Engine.ps1 lu par BuildDebug.ps1, RunCommandlet.ps1 (jeu) ; bandeau « historique 4.27 » ; CheckIntegrity.ps1 ($Root427) retiré ou neutralisé ; build 5.5 inchangé (A-BUILD) ; commit 1 – 1,5 N1, N0 (build) relecture du commit (10 min) build 5.5 incrémental < 1 min
U3 Bascule et compilation Correctifs : LPCoupleSimCore.cpp:127 (rupture certaine), LPDataCache.cpp:198 (rupture certaine, contrat des mods : choix D11), :155 (même forme d'appel que LPPoseMeasure.cpp:1283 qui compile en 5.8 → très probablement sans correction) ; erreurs de lien ou révélées après correction : estimé 0–3 ; 9 C4996 (corriger ou tolérer, D12) ; niveaux stricts V7 sur LPAnimCore et ModdingExtra (seuls non mesurés) ; premier lancement de l'éditeur 5.8 (sans ouvrir de Blueprint) et LPTestStringCompat rejoué ; CHG, commit 1,5 – 3 N3 (correctifs), N0 (builds), N4 si blocage inattendu aucune 4–8 builds × 8–12 min ; premier lancement éditeur (shaders éditeur) estimé 20–60 min
U4 Plugins tiers et addon StreetMap : compile déjà (0 erreur, 7 C4996 établi) → corrections de dépréciation + commentaire faux StreetMapSceneProxy.cpp:169 ; rendu vérifié en U5/U6. Mcp : compile en 5.8 (établi, A2−B) → D4 : désactivé (P7) ou gardé (+20 min par build complet) ; évaluation du MCP officiel Epic ModelContextProtocol sur la copie (le serveur « Unreal MCP » du .mcp.json utilisateur n'a pas répondu dans cette session : ECONNREFUSED, à vérifier d'abord). Addon : branche ue5.8, 8 scripts à chemin UE_5.5 (UA-OUTILS § 2) vers un point unique ; compile déjà (LPSandbox, LPAnimMeasure, LPModTools liés en A1) ; 1 C4996 LPHairFromStaticMeshCommandlet.cpp:430 ; tournée Mesure (non-régression JSON/CSV contre 5.5, SB2-T5) ; chaîne atelier (LPAnimTwist/LPAnimEval) rejouée ; commit addon puis pin 2 – 3,5 N3 (StreetMap, écart de mesure), N1 (scripts, tournée), N2 (arbitrage Mcp), N0 choix D4 ; lancement sandbox si écart visuel (30 min) 2–4 builds ; tournée Mesure (durée 5.5 à relever dans etat/SB*)
U5 Contenu Blueprint Backup & Restore avant tout réenregistrement ; ouverture du projet 5.8 ; réenregistrement selon D10 : hors Heavy 798 assets (estimé 10–30 min) ou tout 9 068 (estimé 1–3 h, ERR-019) ; CompileAllBlueprints (≈ 2 min) comparé au relevé 5.5 ; nœuds dépréciés → correctif par commandlet (modèle LPFixDeprecatedNodes, gardé en historique) ; LPCheckStreetMap 280/280 contre streetmap_5.5.csv ; cuisson complète à froid sans avertissement ; renommage r.TranslucencyLightingVolumeDim (UA-MOTEUR c10) 2 – 4 N1 (resave, relevés), N0 (cook, journaux), N3 si un Blueprint casse (GI) aucune (sauf plantage de resave : décision) resave 0,2–3 h ; cook à froid 1–3 h (incertain)
U6 Comportement en jeu Build Development empaqueté 5.8 ; A/B LogStats contre LifePlay_Build_5.5_DC4 sur le même parcours (nouvelle partie + Continuer) ; VQ revu (r.PostProcessAAQuality sans effet déjà en 5.5, SMAA disponible, nouvelles clés de base r.Fog.SeparateComposition, HeterogeneousVolumes) ; audio WASAPI écouté ; captures même cadrage avant/après ; registre des erreurs 2 – 3 N1 (A/B, VQ), utilisateur (visuel), N3 pour un écart inexpliqué contrôle visuel et audio 1–2 h build Development + cook à chaud 15–30 min
U7 Mods Selon UA-MODS § 3 et § 7 : atelier adapté (R0, partagé avec U4), version de référence Releases/2026.10.2.0 issue du build Shipping de U8 (voir enchaînement § 4), 3 cuissons DLC, tests T1–T7, dont T4 décisif (mod 5.5 dans jeu 5.8) ; garde C++ MODULE_GAME_VERSION si T4 plante (D2, +1 séance N3) ; guide moddeurs, README 2,5 – 4 N1, N0, utilisateur, N3 (garde) tests en jeu T1–T7 (≈ 1 h) ; décision D2 après T4 3 × 5–15 min ; 1 rebuild si garde
U8 Shipping, publication, évaluation Build Shipping -createreleaseversion=2026.10.2.0 (sert U7), archives PUB1/PUB2, README, note de version (Windows 10 minimum, WASAPI), évaluation multi-agents (prévu/utilisé), porte de publication 1,5 – 2,5 N1, N2, utilisateur porte de publication ; push (accord explicite) Shipping : compile Game ≈ 10 min + cook à chaud 15–30 min
U9 Voie UE5 native Inventaire des appelants Blueprint des 17 fonctions exposées (UA-JEU § 1), interrupteurs par correctif, banc LPTestStringCompat étendu ; non bloquant pour V2.0 2 – 4 (différable) N3, N1 décision d'activation ultérieure commandlets courts
Total U0–U8 14,5 – 25 ≈ 6–10 h ≈ 7–16 h
avec U9 16,5 – 29

Marge : les fourchettes hautes incluent une escalade de niveau par lot (règle du plan) et le facteur 1,5 de première exécution en 5.8 (UA-MODS § 7). Elles n'incluent pas un échec de T4 et un Blueprint cassé et un écart de rendu StreetMap simultanés (scénario noir : +3 à +5 séances).


3. Registre des risques

Échelle 1–3 ; score = P × I. « Repli » = ce qu'on fait si la parade échoue.

# Risque P I Score Signal d'alerte Parade Plan de repli Statut / source
R1 Mod cuit pour 5.5 monté dans le jeu 5.8 : conteneur monté avant tout contrôle ; paquet sans version lu avec le schéma 5.8 → erreur ou plantage au premier clip chargé 3 3 9 Test T4 (UA-MODS § 4) ; Saved/Crashes, LogStreaming/AsyncLoading2 Avertissement existant (modules cochés) ; README « supprimer l'ancienne version » ; garde C++ MODULE_GAME_VERSION ≠ ProjectVersion → assets ignorés (D2) Avertissement étendu aux modules décochés ; au pire, refus de montage des Mods/ sans tampon de version (toujours sans changer le format) incertain (nature de l'échec) ; UA-MODS R1, S11
R2 Contenu au réenregistrement : plantages de resave de masse (ERR-019 ouvert : BulkData IsUnlocked), GI 51,9 Mo, nœuds dépréciés 5.6–5.8 non audités (aucun .uasset ouvert en UA) 2 3 6 CompileAllBlueprints ≠ relevé 5.5 ; Saved/Crashes pendant LPResavePackages ; avertissements de cuisson > 3 Blueprint Backup & Restore ; resave par lots (hors Heavy d'abord, D10) ; travail dans la copie 5.8 seulement ; Blueprint Reader en 5.5 pour relever avant (D8) Ne pas réenregistrer Heavy (le cuiseur convertit à la volée) ; correctif par commandlet (modèles gardés en historique git) ; git checkout de la branche ue5.8 établi (ERR-019, volumes UA-JEU § 4) / incertain (nœuds)
R3 Zen store par défaut (bUseZenStore=True, BaseGame.ini:95 5.8) : chaîne de cuisson, version de référence et DLC des mods divergents ; zenserver lancé 3 2 6 Absence de .utoc/.ucas ou de Releases/…/AssetRegistry.bin après R1 ; -basedonreleaseversion en échec Fixer bUseZenStore=False dans DefaultGame.ini de la copie 5.8 avant le premier cook (D1) Adopter Zen dans un lot dédié après V2.0 ; le staging pak/IoStore reste « available and supported » (notes 5.8) établi (défaut) / incertain (effet) ; UA-MOTEUR c7, UA-MODS R3
R4 Contrat JSON / LPDataCache : au-delà de l'erreur :198, le changement de type de clé FJsonObject (FStringView/FSharedString) peut altérer silencieusement la fusion « défauts + champs » (LPDataCache.cpp:52-58) et le cache Saved/LPDataCache 2 3 6 Journal LoadTxtStats, Donnees : … 16 module(s) différent de 5.5 ; T1 ; diff des Saved/LPDataCache/*.json 5.5 vs 5.8 Correctif explicite (clé convertie en FString) plutôt que UE_JSONOBJECT_LEGACY_STRING_KEYS=1 (D11) ; test T1 + diff des caches Macro de compatibilité en secours (documentée par Epic, UA-MOTEUR c8) ; CacheVersion incrémenté pour forcer la reconstruction établi (erreur) / estimé (sémantique) ; UA-ESSAI § 3, UA-MOTEUR c8
R5 StreetMap : proxy de rendu maison sous le renderer 5.8 (280 villes, 310 assets) ; amont figé depuis 2023 2 3 6 LPCheckStreetMap ≠ 280/280 ou totaux ≠ streetmap_5.5.csv ; captures ville même cadrage différentes Compile déjà (établi) ; correctif GetMaterialRelevance(EShaderPlatform) ; captures avant/après (mémoire « comparer avant rollback ») Portage maison (MIT) ; à terme voie U9 (maillages statiques cuits par ville, UA-PLUGINS § 3) établi (compile) / incertain (rendu)
R6 Premier cook 5.8 à froid très long ou en échec (DDC et shaders reconstruits, 9 068 paquets, Heavy 6,2 Go, disque USB) ; rapports forum 5.8.1 de cuissons en échec (UA-MODS § 6) 2 2 4 Cook > 3 h ; LogCook erreurs ; PSO cache Lancer en arrière-plan, machine éveillée ; DDC sur C: (NVMe interne) si trop lent (UA-OUTILS § 3) Cook par -cookdir partiel pour diagnostiquer ; reporter Heavy estimé ; durée incertaine
R7 Modules non mesurés par l'essai 1 2 2 Erreur de lien ou nouvelle erreur en U3 après correction des 2 causes Réduit : relecture de essai-A1.log:81-304 montre que toutes les unités de compilation des 9 modules ont été compilées ; les 23 actions restantes sont des éditions de liens .dll dépendant de LPAnimCore/ModdingExtra et la cible (estimé) Escalade N4 sur blocage de lien établi (compilation) / estimé (nature des 23 actions)
R8 Zen server commun 5.5/5.8 : premier lancement de l'éditeur 5.8 remplace Common\Zen\Install 5.6.6 par 5.8.13, partagé avec 5.5 2 2 4 Éditeur 5.5 : erreurs DDC/Zen au démarrage après le premier lancement 5.8 Relever l'état avant (U0-T2b) ; démarrer l'éditeur 5.5 juste après le premier lancement 5.8 pour vérifier DDC fichiers D:/DDC suffit à 5.5 (DefaultEditorSettings.ini:3) ; désactiver Zen.AutoLaunch côté 5.5 si nécessaire incertain ; UA-OUTILS § 1
R9 MSVC partagé : depuis VS 2026, UBT 5.8 prend 14.50.35739 ; le projet 5.5 doit rester sur 14.38 ; une mise à jour de VS peut déplacer 14.50 (bannie < 14.50.35723) ; BuildConfiguration.xml est commun 2 2 4 Ligne « Using Visual Studio … toolchain » du journal UBT 5.5 ≠ 14.38.33130 ; erreur « banned » en 5.8 Épinglage par projet (ToolchainVersion, P8) ; composants LTSC figés ; jamais d'épinglage global 14.44.35207 en secours pour 5.8 (préféré rang 1, non banni : MicrosoftPlatformSDK.cs:1156, corr. b) établi ; UA-OUTILS § 1, § 5
R10 Disque USB (D: = NVMe en boîtier USB : moteurs, projet, DDC) : latence et risque de déconnexion pendant un resave ou un cook de plusieurs heures → assets ou DDC corrompus 1 3 3 Hitches d'E/S, erreurs IFileManager, Saved/Crashes Instantané Tools/Snapshot.ps1 et git avant tout resave ; machine éveillée ; opérations longues sans sommeil DDC et Saved/Cooked sur C: ; restauration Tools/Restore.ps1 / git checkout établi (matériel, corr. d) / estimé (effet)
R11 Plugin McpAutomationBridge : bêta tierce, compile en 5.8 mais +20 min par build complet ; une mise à jour amont peut casser la compilation éditeur 2 1 2 Durée de build ; erreurs dans Plugins/McpAutomationBridge P7 : désactivé pour U0–U8 (D4) ; Optional + Editor déjà en place Dossier sorti du projet (comme l'essai B) établi ; UA-ESSAI § 3
R12 Moteur 5.8 et MCP expérimental : le MCP officiel Epic ou tout pont IA activé dans le .uproject 5.8 pourrait modifier des assets ou être embarqué ; le serveur « Unreal MCP » configuré n'a pas répondu dans cette session 1 2 2 Diff git status inattendu sur Content/ ; plugin sans TargetAllowList: Editor Évaluer sur une copie jetable de la copie 5.8, jamais sur la branche de travail ; Editor seulement ; non commité (règles UA-FAB) Renoncer au pont IA pour V2.0 estimé
R13 GetBoneTransform(double) à LPCoupleSimCore.cpp:155 encore en erreur après correction de :127 1 1 1 Erreur C2664 à :155 au premier build U3 Même appel que LPPoseMeasure.cpp:1283 qui compile (établi) → probable non-événement FAnimExtractContext (parade UA-PLUGINS § 1) incertain (masqué par :127)
R14 Sémantique FString modifiée sans note (CX-B08/B12) 1 3 3 LPTestStringCompat en échec ; Modules : N .lpmod lu(s) ≠ 16 Commandlet rejouée dès U3 (porte intermédiaire) Correctif dans ULPStringCompat (un seul point d'entrée) établi (code 5.8 inchangé, UA-MOTEUR c22)
R15 Sauvegardes et réglages 5.5 des joueurs (GameSettings.sav, parties) refusés par 5.8 1 2 2 Test T6 En-tête versionné du .sav (conception moteur) ; SaveModSelection reconstruit Message au joueur ; note de version estimé ; UA-MODS S6
R16 Rendu/audio par défaut : WASAPI, nouvelles clés de base de scalabilité, Windows 7/8 exclus 2 1 2 Écoute et captures en U6 Clés verrouillées (TAA, SSR, sans Lumen/VSM) restent ; opt-out AudioMixerXAudio2 si régression Revenir clé par clé avec capture de référence établi ; UA-MOTEUR c6, c13

Hiérarchie : R1, R2, R3, R4, R5 (scores 6–9) décident du succès ; R6–R10 sont des risques de temps ou d'outillage ; le reste est de surveillance.


4. Points de non-retour et comment les garder réversibles

# Opération Lot Irréversible ? Comment rester réversible
N1 Épinglage ToolchainVersion 14.38 dans le projet 5.5 ; figement des composants VS U0 non (config) Une clé ini, un commit ; VS Installer garde les deux toolsets
N2 Premier lancement de l'éditeur 5.8 (remplace le zenserver commun, crée DDC/Zen 5.8) U3 partiellement (installation Zen commune) Relever l'état Common\Zen avant ; vérifier l'éditeur 5.5 juste après (R8)
N3 Retrait des 16 commandlets U2 non Historique git ; tag ue5.5-final
N4 Réenregistrement des assets (.uasset réécrits au format 5.8 : illisibles par 5.5) U5 oui pour les fichiers touchés Uniquement dans LifePlay-master 5.8 / branche ue5.8 ; LifePlay-master 5.5 jamais touché ; Snapshot + Blueprint Backup & Restore ; Content sous git local → git checkout
N5 Création de Releases/2026.10.2.0 et déplacement des références 5.5 U7/U8 non si les 5.5 sont conservées Déplacer (jamais supprimer) vers LifePlay_Backup_5.5\Releases (UA-MODS R2) ; 1,3 Go par version
N6 Recuisson et republication des 3 mods pour V2.0 ; les archives 5.5 deviennent incompatibles U7 oui pour les joueurs (deux versions en circulation) Garder les archives V1.5 téléchargeables ; nom d'archive porte la version du jeu ; avertissement de version en jeu
N7 Publication V2.0 (tag, push GitHub, archives) U8 oui Porte utilisateur explicite ; rien n'est poussé sans accord (règle PUB) ; V1.5 reste en ligne
N8 Désinstallation de 4.27 et archivage du projet 4.27 (P6) après U6 réinstallable, long Reporter après la publication V2.0, pas « après U6 » (recommandation D6)
N9 Adoption des API 5.8 dans le code (restrictions 5.5 levées) : la branche ue5.8 ne recompile plus en 5.5 U3+ oui pour la branche main reste 5.5 ; correctifs 5.5 cherry-pickés tant que V1.x est maintenue

Règle générale : tout ce qui précède U7 se fait dans la copie 5.8 et reste jetable (on peut recommencer depuis ue5.5-final en une copie de 15 min). Les seuls vrais engagements sont N6 et N7, derrière une porte.


5. Décisions à soumettre à l'utilisateur (liste fermée)

# Décision Options Recommandation Conséquence
D1 Zen store (bUseZenStore) pour la copie 5.8 (a) False explicite dans DefaultGame.ini ; (b) laisser le défaut 5.8 (True) et valider la chaîne DLC/référence avec Zen (a) pour toute la migration : une variable de moins dans U5–U8 ; Zen en lot dédié après V2.0 (a) chaîne identique à 5.5, R3 neutralisé ; (b) R3 actif, +0,5–1 séance de validation, dépendance à zenserver pour cuire
D2 Garde C++ MODULE_GAME_VERSION avant montage d'un mod (a) rien de plus que l'avertissement actuel ; (b) assets d'un module de version ≠ ignorés par LPModDailies/LPHairstyle (clé existante, contrat inchangé) ; (c) avertissement étendu aux modules décochés Décider après T4 ; si T4 plante → (b)+(c) ; si T4 journalise une erreur propre → (c) seul (b) +1 séance N3 et un rebuild ; aucune surface du contrat ne change (UA-MODS R1)
D3 Sort des 18 commandlets de portage (P3) (a) retirer les 18 ; (b) retirer 16, garder LPResavePackages (outil de U5) et LPTestStringCompat (test) ; (c) ne rien retirer (b) ; LPFixDeprecatedNodes reste disponible en historique comme modèle si U5 révèle des nœuds dépréciés (b) surface éditeur réduite de ≈ 3 900 lignes ; les API K2Node/EdGraph les plus instables sortent du build
D4 McpAutomationBridge et MCP Epic ModelContextProtocol (a) P7 : Mcp désactivé, pas de pont IA pour V2.0 ; (b) Mcp gardé (compile, +20 min/build complet) ; (c) évaluer le MCP officiel Epic en U4 sur une copie jetable, activer seulement s'il est Editor et non commité (a) pour U0–U8, (c) en parallèle sans dépendance ; commencer par vérifier que le serveur .mcp.json répond (ECONNREFUSED aujourd'hui) (a) builds courts ; (c) 0,5–1 séance N1+N2, hors chemin critique
D5 P1 référence de comportement = LifePlay_Build_5.5_DC4 et V1.5 confirmer / autre build confirmer ; conserver ce build intact jusqu'à V2.0 A/B U6 et tests U7 ont une base fixe
D6 P6 archivage/désinstallation 4.27 (a) après U6 (plan) ; (b) après publication V2.0 ; (c) jamais tant que V1.x est maintenue (b) 2,4 To libres : rien ne presse ; évite une réinstallation en cas de retour en arrière
D7 P7 Mcp désactivé tant qu'aucune version 5.8 n'existe confirmer tel quel / reformuler « désactivé pour V2.0, même s'il compile » reformuler (il compile : le motif n'est plus l'absence de version mais le coût et la bêta) cohérence avec D4
D8 Blueprint Reader activé en 5.5 avant U1 (plugin Fab installé en 5.5, UA-FAB) (a) oui, en Editor seulement, activation locale non commitée ; (b) non, relever seulement en 5.8 (a) : c'est le seul moyen de relever les graphes (GI 51,9 Mo) avant la bascule, à coût nul pour le jeu (a) U1 +0,5 séance, R2 mieux borné ; vérifier que l'activation ne modifie aucun asset (git status)
D9 U9 maintenant ou différé (go partiel) (a) en parallèle de U5–U6 (plan) ; (b) après U6 ; (c) après V2.0 (c) : U9 ne conditionne pas V2.0 et consomme N3 au moment où U3–U6 en ont besoin (c) −2 à −4 séances sur le chemin critique ; la voie reste « préparée » par l'inventaire déjà fait (UA-JEU § 1, 17 fonctions exposées)
D10 Périmètre du réenregistrement en U5 (a) tout Content (9 068) ; (b) hors Heavy (798) + Heavy seulement si la cuisson l'exige ; (c) rien (laisser le cuiseur convertir) (b) (a) 1–3 h et ERR-019 ; (b) 10–30 min, Heavy reste au format 5.5 sur disque (chargé et converti à la volée par 5.8, cuit normalement) ; (c) avertissements de chargement persistants
D11 Correctif LPDataCache : code ou macro (a) conversion explicite des clés en FString ; (b) UE_JSONOBJECT_LEGACY_STRING_KEYS=1 (GlobalDefinitions) (a) + diff des caches 5.5/5.8 (R4) ; (b) seulement comme secours de U3 (a) 0,2 séance N3 ; (b) dette qui saute à la prochaine version
D12 Réglages stricts et avertissements : BuildSettingsVersion.Latest (V7) + IncludeOrderVersion.Latest ; sort des 9 C4996 (a) Latest + corriger les 9 ; (b) Latest + tolérer les C4996 jusqu'à U8 ; (c) bOverrideBuildEnvironment (A1) (a) : A2 prouve 0 erreur supplémentaire avec Latest ; 9 corrections mécaniques (≈ 0,5 séance N1/N3) (c) laisse une dette que 5.9 fera payer (Unreal5_6 retiré en 5.9, TargetRules.cs:249)
D13 Fab/Bridge dans le .uproject 5.8 (a) laisser Enabled non Optional (présents aujourd'hui) ; (b) Optional: true (b) : robustesse face à une installation incomplète (c'est ce qui a faussé T2/T4) ; DirectoriesToNeverCook les exclut déjà aucune conséquence en jeu

Décisions déjà verrouillées et non rouvertes ici : cible 5.8, abandon 4.27, mods figés, PUB, P2 (compat UE4 gardée), P4 (copie), P5 (V2.0), P8 (VS 2026 en coexistence).


6. Corrections à reporter dans les audits (sans les modifier ici)

UA-PLUGINS (T2)

  1. Tableau récapitulatif et § 6 : Fab et Bridge présents dans 5.8 (installation incomplète pendant T2) ; risque « élevé (bloquant) » → faible ; parade Optional reste utile (D13). Établi par UA-ESSAI § 3 (« Fab et Bridge actifs sans erreur de plugin »).
  2. § 1 LPAnimCore : la rupture certaine n'est pas GetBoneTransform(double) (:155) mais GetCompressedTrackToSkeletonMapTable (:127) ; AnimSequence.h:508 ne suffit pas à conclure l'absence de la surcharge double : LPPoseMeasure.cpp:1283 (même appel) compile en 5.8 (essai-A1.log:99-100, Module.LPAnimMeasure.cpp compilé et .lib liée). Statut de :155 : incertain, probable non-événement.
  3. § 5.2 LPAnimMeasure : « une erreur certaine » → aucune erreur (établi).
  4. § 3 StreetMap : avertissements = 7 C4996, pas 1 (GetDetailsView ×2, FSlateFontInfo ×3, ImportVersion ×1 dans StreetMapComponentDetails.cpp, + GetMaterialRelevance).
  5. § 4 Mcp : compilation 0.6.0-beta-b sur 5.8.3 établie (A2 − B : 0 erreur, ≈ 20 min sur 25,5) ; effort « 0,5–1 séance pour mettre à jour » devient facultatif.
  6. « Points remis à UA-T5 » 1–4 : tous mesurés ; le point 1 est sans objet.
  7. Méthode d'estimation : « 2 ruptures certaines (GetBoneTransform) + 2 entrées .uproject » → 2 ruptures certaines (:127, LPDataCache:198), 0 entrée .uproject.

UA-MOTEUR (T4)

  1. (b) point 1, (c) ligne 1, (e) R1 : MSVC 14.44.35207 n'est pas banni (le ban porte sur la version du compilateur 19.44.35228, hors plage 14.44.0–35210 : MicrosoftPlatformSDK.cs:1156, UA-OUTILS § 1) ; depuis VS 2026 (18.10), UBT 5.8 retient 14.50.35739 (essai-A1.log, UA-ESSAI § 1). Retirer R1 ; remplacer par le risque « MSVC partagé » (R9 ci-dessus).
  2. (c) ligne 4, (e) R2 : Fab/Bridge présents en 5.8 (installation incomplète pendant T4) ; R2 « certaine » → nul ; garder la parade Optional comme robustesse.
  3. (c) ligne 2 / (e) R3 : V6/V7 (Latest) n'ont révélé aucune erreur sur les modules compilés (A2 − A1 = 0) ; R3 « élevée » → faible, résiduel sur LPAnimCore et ModdingExtra seulement.
  4. (c) ligne 8 : FJsonObject → erreur confirmée à LPDataCache.cpp:198 (TMap<FString,…>::Contains avec clé FJsonObjectSharedStringStorage::FStringType), pas à :52/:196 (compilent : conversion implicite) ; LPEditWidgetCommandlet.cpp compile (essai-A1.log:167). Mcp : 0 erreur malgré 5 987 occurrences.
  5. (c) ligne 30 : RHIGetTextureMemoryStats se résout (Module.LifePlay.cpp compilé, .lib liée, essai-A1.log:108-109).
  6. (d) points 1–7 : mesurés ; seul le point 8 (éditeur lancé) reste pour U3/U5.
  7. Ajouter : 7 C4996 non prévus (UA-ESSAI § 3), dont GetObjectsWithPackage(bool) (LPDumpAssetsCommandlet.cpp:110) et InitializeSkeletalMeshFromMeshDescriptions (addon, LPHairFromStaticMeshCommandlet.cpp:430).

UA-OUTILS (T7) — pour cohérence, même si non demandé

  1. § 0 et § 1 : « UBT 5.8 retient 14.44.35207 » était vrai avant l'installation de VS 2026 ; désormais 14.50.35739 (Log.txt à relire). § 5 : l'arbitrage A/B est tranché (P8 = B en coexistence) ; la condition « VS ≥ 18.2 » est satisfaite (18.10, 14.50.35739 > 14.50.35722 banni).
  2. § 1 ligne Epic Launcher / Fab : « Fab/Bridge absents de 5.8 » → présents.

UA-ESSAI (T5) — précision, pas correction

« ≈ 23 actions non exécutées → modules non mesurés » : d'après essai-A1.log:81-304, toutes les unités de compilation des modules projet et addon ont été compilées (dont les 32 commandlets, Module.LifePlay.cpp, Module.LPSandbox.cpp, Module.StreetMapImporting.cpp) ; les actions non exécutées sont des éditions de liens et la cible (estimé).


7. Méthode d'estimation

  1. Décomposition de chaque lot en postes (tableau § 2), avec pour chaque poste une source (audit § ou journal).
  2. Points d'appel × poids (barème UA-PLUGINS, repris) : rupture certaine établie par l'essai = 0,1 séance avec garde ou réécriture locale ; dépréciation C4996 = 0,05 ; « présent, comportement à vérifier » = coût du test qui tranche (lancement, capture, commandlet). Appliqué : U3 = 2 × 0,1 + 9 × 0,05 + marge d'erreurs révélées (0–3 × 0,1) ; U4 StreetMap = 7 × 0,05 + 1 capture.
  3. Cycles de build mesurés : 8–12 min par build éditeur 5.8 complet sans Mcp (dérivé de A1 26,5 min − part Mcp ≈ 20 min, et B 4,9 min pour 54 % des actions) ; 0,1 séance par cycle (build + lecture du journal) ; 4–8 cycles en U3, 2–4 en U4, 1–2 par lot ensuite.
  4. Cuissons et commandlets : durées 5.5 établies (§ 2, constantes) × facteur d'inconnue 5.8 : cook à chaud ×2–3 (15–30 min) ; cook à froid non dérivable de 5.5 (DDC vide, shaders) : fourchette 1–3 h posée par analogie avec le premier cook 5.5 du portage (non journalisé en durée : incertain) ; réenregistrement : 86 s pour la liste CX-B07 extrapolé linéairement aux volumes (798 / 9 068 assets) avec ×2 pour les gros Blueprints.
  5. Validations utilisateur : 0,5 séance par parcours en jeu (nouvelle partie + Continuer), comme VQ/DC ; T1–T7 des mods = 1 séance (UA-MODS § 7).
  6. Marge : borne haute = borne basse × 1,5 (première exécution en 5.8, UA-MODS § 7) + une escalade de niveau par lot ; U7 reprend UA-MODS § 7 (3 séances, 4 avec garde) ajusté 2,5–4 car R0 est partagé avec U4.
  7. Niveaux : grille a–f du plan 27 appliquée au poste le plus lourd de chaque lot (U3 correctifs = 1-1-1-1-1-1 = 6 → N2, relevé à N3 par la règle « portage d'API » ; U5 Blueprint cassé = 1-2-2-2-1-0 = 8 → N3 ; U7 garde = 1-2-1-2-1-1 = 8 → N3).
  8. Ce qui n'est pas estimé : coût d'un portage de StreetMap si le rendu diverge (voie U9, hors V2.0) ; coût d'une adoption de Zen (hors V2.0) ; coût des outils Fab (installés, non comptés).

8. Établi / estimé / incertain

Établi (preuves citées)

  • 5.8.3 et VS 2026 installés ; UBT 5.8 retient MSVC 14.50.35739 + SDK 22621 + .NET 10 ; 14.44.35207 non banni ; 5.5 préfère 14.38 (UA-OUTILS, UA-ESSAI, corr. b).
  • Blocage de cible tant que Target.cs = V5 ; Latest passe sans erreur supplémentaire (A2 − A1 = 0).
  • Deux causes d'erreur de compilation : LPCoupleSimCore.cpp:127, LPDataCache.cpp:198 ; 9 C4996 ; Mcp compile (≈ 20 min) ; Fab/Bridge présents ; toutes les unités de compilation des modules projet/addon compilées en A1/A2 (essai-A1.log:81-304).
  • Contrat des mods : formats texte indépendants du moteur ; recuisson obligatoire (cuisson sans version) ; avertissement de version après montage et pour les modules cochés seulement (UA-MODS).
  • Zen store True par défaut en 5.8 ; FJsonObject clés changées ; WASAPI par défaut ; Windows 10 minimum ; 441 en-têtes inclus tous présents (UA-MOTEUR).
  • Volumes : 9 068 .uasset (798 hors Heavy), GI 51,9 Mo, 280 villes, 310 assets StreetMap, 16 commandlets retirables ; 10 scripts à chemin UE_5.5.
  • Durées 5.5 : build incrémental 13 s ; cook à chaud 6 min / 8 884 paquets ; CompileAllBlueprints 115 s ; LPCheckStreetMap 25 s ; resave CX-B07 86 s.
  • ERR-019 ouvert (plantages de resave de masse) ; D: est un NVMe en boîtier USB.

Estimé (méthode § 7)

  • Séances par lot et total 14,5–25 (U0–U8) ; durée d'un build 5.8 sans Mcp 8–12 min ; cook à chaud 15–30 min ; resave 10–30 min (hors Heavy) ; copie 5–15 min ; nature des 23 actions UBT non exécutées (liens) ; :155 sans correction ; équivalent 5.8 de GetCompressedTrackToSkeletonMapTable.

Incertain (test qui tranche)

  • Comportement de 5.8 face à un conteneur 5.5 monté : refus propre, erreur ou plantage → T4 (U7) ; conditionne D2.
  • Durée du premier cook 5.8 à froid et réussite du réenregistrement de GI → U5 (en copie, réversible).
  • Nœuds Blueprint dépréciés 5.6–5.8 → Blueprint Reader en 5.5 (D8) puis CompileAllBlueprints 5.8.
  • Rendu du proxy StreetMap sous 5.8 → captures même cadrage (U5/U6).
  • Interaction Zen store × -createreleaseversion → neutralisée par D1(a), sinon test R1 de UA-MODS.
  • Compatibilité de 5.5 avec un zenserver commun 5.8.13 → lancement de l'éditeur 5.5 après le premier lancement 5.8.
  • Sémantique FString → LPTestStringCompat en 5.8 (U3).
  • Contradiction résiduelle entre UA-PLUGINS § 1 (surcharge double « absente » à AnimSequence.h:508) et UA-ESSAI (LPAnimMeasure compile) : tranchée en faveur de l'essai (fait foi) ; cause possible : surcharge déclarée ailleurs (classe de base ou UE_DEPRECATED non fatal) — à lire en U1.

9. Recommandation finale

GO, séquencé pour U0–U8 ; go partiel sur U9 (différé après V2.0, D9).

Arguments :

  1. Le coût de portage du code est faible et mesuré (2 causes d'erreur, 9 avertissements, chaîne d'outils prête) : c'est l'essai réel qui le dit, pas une prévision.
  2. Les incertitudes restantes (contenu, mods, rendu StreetMap) sont toutes testables de façon réversible dans la copie 5.8, avant les deux seuls engagements irréversibles (référence/mods V2.0 et publication), chacun derrière une porte utilisateur.
  3. Un no-go n'est pas justifié par les risques ; il ne le serait que par le rapport coût/bénéfice : 15–25 séances pour un jeu dont le rendu est verrouillé (TAA/SSR, sans Lumen) tirent peu des nouveautés 5.8 à court terme. Le bénéfice est stratégique (dernière UE5, support de l'éditeur et des outils Fab 5.8 seulement : Plugin Usage Finder, AssetDump, Pipeline Validator) et il ne se dégrade pas si l'on attend : 5.5 reste fonctionnel. L'utilisateur peut donc choisir le calendrier librement ; la recommandation technique est d'y aller maintenant que l'environnement est en place et les audits frais.
  4. Deux portes intermédiaires ajoutées au plan : G-U3 (0 erreur, LPTestStringCompat vert, éditeur 5.8 ouvert) et G-U6 (A/B et contrôle visuel équivalents à DC4). Si G-U3 échoue de façon imprévue (escalade N4 épuisée) : no-go technique, retour à 5.5 sans perte (copie jetable). Si G-U6 révèle un écart de rendu StreetMap non corrigeable à coût borné : go partiel « éditeur et outils en 5.8, publication V2.0 reportée ».

Premier lot à lancer : U0, avec ses prérequis :

  • décisions D1, D3, D4, D8, D9, D10, D13 tranchées (les autres peuvent attendre leur lot : D2 après T4, D5–D7 en U0-T4, D11–D12 en U3) ;
  • utilisateur : VS Installer (composants LTSC 14.38 et 14.50 figés) ; confirmer que D:\Game\LifePlay-master 5.8 ne contient que .mcp.json à préserver ; machine éveillée pour les copies ;
  • N1 : épinglage 14.38 dans le projet 5.5 puis build 5.5 de contrôle (preuve : ligne « Using Visual Studio 14.38.33130 toolchain » et code 0) avant toute autre action ; relevé Common\Zen ;
  • N1 : tag ue5.5-final, copie P4, branche ue5.8, Target.cs → Latest, EngineAssociation 5.8, Fab/Bridge Optional, bUseZenStore=False (si D1(a)) ; git status propre ;
  • livrables : etat/U58/U0/U0-ENV.md, U0-VS2026.md, décisions verrouillées ajoutées au plan 27.

Handoff vers U1 : « copie 5.8 prête et taguée ; U1 produit U1-CART.md (diff moteur ciblé, spec des 2 correctifs, relevé Blueprint Reader 5.5) ; niveaux N1 + N3 ».