38 KiB
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
- 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).
- 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é). - 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
.uassetdontGI51,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). - 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
LPResavePackagesetLPTestStringCompat), 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,LPTestStringCompatvert) et après U6 (A/B et contrôle visuel), avant tout point de non-retour (U7 référence, U8 publication). - 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)
- Tableau récapitulatif et § 6 :
FabetBridgeprésents dans 5.8 (installation incomplète pendant T2) ; risque « élevé (bloquant) » → faible ; paradeOptionalreste utile (D13). Établi par UA-ESSAI § 3 (« Fab et Bridge actifs sans erreur de plugin »). - § 1 LPAnimCore : la rupture certaine n'est pas
GetBoneTransform(double)(:155) maisGetCompressedTrackToSkeletonMapTable(:127) ;AnimSequence.h:508ne suffit pas à conclure l'absence de la surchargedouble:LPPoseMeasure.cpp:1283(même appel) compile en 5.8 (essai-A1.log:99-100,Module.LPAnimMeasure.cppcompilé et.libliée). Statut de:155: incertain, probable non-événement. - § 5.2 LPAnimMeasure : « une erreur certaine » → aucune erreur (établi).
- § 3 StreetMap : avertissements = 7 C4996, pas 1 (
GetDetailsView×2,FSlateFontInfo×3,ImportVersion×1 dansStreetMapComponentDetails.cpp, +GetMaterialRelevance). - § 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.
- « Points remis à UA-T5 » 1–4 : tous mesurés ; le point 1 est sans objet.
- 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)
- (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). - (c) ligne 4, (e) R2 :
Fab/Bridgeprésents en 5.8 (installation incomplète pendant T4) ; R2 « certaine » → nul ; garder la paradeOptionalcomme robustesse. - (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. - (c) ligne 8 :
FJsonObject→ erreur confirmée àLPDataCache.cpp:198(TMap<FString,…>::Containsavec cléFJsonObjectSharedStringStorage::FStringType), pas à:52/:196(compilent : conversion implicite) ;LPEditWidgetCommandlet.cppcompile (essai-A1.log:167). Mcp : 0 erreur malgré 5 987 occurrences. - (c) ligne 30 :
RHIGetTextureMemoryStatsse résout (Module.LifePlay.cppcompilé,.libliée,essai-A1.log:108-109). - (d) points 1–7 : mesurés ; seul le point 8 (éditeur lancé) reste pour U3/U5.
- Ajouter : 7 C4996 non prévus (UA-ESSAI § 3), dont
GetObjectsWithPackage(bool)(LPDumpAssetsCommandlet.cpp:110) etInitializeSkeletalMeshFromMeshDescriptions(addon,LPHairFromStaticMeshCommandlet.cpp:430).
UA-OUTILS (T7) — pour cohérence, même si non demandé
- § 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). - § 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
- Décomposition de chaque lot en postes (tableau § 2), avec pour chaque poste une source (audit § ou journal).
- 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.
- 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.
- 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.
- 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).
- 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.
- 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).
- 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 ;Latestpasse 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
Truepar défaut en 5.8 ;FJsonObjectclé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 horsHeavy),GI51,9 Mo, 280 villes, 310 assets StreetMap, 16 commandlets retirables ; 10 scripts à cheminUE_5.5. - Durées 5.5 : build incrémental 13 s ; cook à chaud 6 min / 8 884 paquets ;
CompileAllBlueprints115 s ;LPCheckStreetMap25 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) ;:155sans correction ; équivalent 5.8 deGetCompressedTrackToSkeletonMapTable.
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
CompileAllBlueprints5.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→LPTestStringCompaten 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 ouUE_DEPRECATEDnon 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 :
- 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.
- 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.
- 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.
- Deux portes intermédiaires ajoutées au plan : G-U3 (0 erreur,
LPTestStringCompatvert, é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.8ne 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, brancheue5.8,Target.cs→Latest,EngineAssociation5.8,Fab/BridgeOptional,bUseZenStore=False(si D1(a)) ;git statuspropre ; - 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 ».