LifePlay-Revival/Docs/Migration/etat/OPT/OPT0/OPT0-A3-GRILLE.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

20 KiB

OPT0-A3-GRILLE : grille de décision de l'héritage UE4 vers UE 5.8 natif

Fiche OPT0-A3 (OPT0-A3-FICHE.md) — Niveau N3 — Modèle prévu opus (Medium) | utilisé Opus 5.5 — Session « Medium · OPT0-A3 » — Skills : sk-orchestrate, lp-lot, lp-doc, sk-protocol. Date : 2026-10-15. Lecture seule : aucun éditeur, aucun build, aucune modification de code, d'asset ni de configuration, aucun git qui écrit. Sans verdict d'exécution. La grille classe les éléments et dit quelle preuve chaque changement exigera. Les lots d'exécution sont A4+, un groupe à la fois, A/B contre la base de l'alpha (doc 30 O4, Docs\30_Projet_Audit_Obsolescence.md:38).

Niveaux : établi (fichier:ligne relu, entrée de BC établie, compte mesuré) ; estimé (déduction, BC estimée, guide) ; incertain (source unique non vérifiée, ou fait à relever).

1. Contraintes qui pèsent sur toutes les preuves

  • Base de comparaison : build Development 5.8, parcours S2 du doc 29, avec LogStats (temps de démarrage, taille du paquet, durée de cuisson) : doc 30 O4 (30_Projet_Audit_Obsolescence.md:38). Établi.
  • Le banc P1 (PresentMon) ne mesure rien sur ce poste : aucune image captée en 6 essais (OPT0-TACHES.md:204) ; la reprise est la fiche B2-ter (OPT0-TACHES.md:212-215). Établi.
  • Le CSV Profiler est absent en Shipping par défaut (CsvProfilerConfig.h:10, :31, cité OPT0-TACHES.md:210). Une preuve de coût CPU par catégorie demande donc une build Development avec -csvprofile (BUILD-GO). Établi.
  • Aucun seuil PASS/FAIL standard (BC-INDEX, lacunes R4, BC-INDEX.md:32) : les seuils se fixent sur la première mesure de l'alpha (OPT0-TACHES.md:183). Établi.
  • Conséquence : tant que B2-ter n'a pas abouti ou qu'une build Development avec CSV n'est pas faite, aucun gain de performance ne peut être prouvé ; seuls les changements dont la preuve est « non-régression » (compilation, banc, parcours) sont exécutables. Estimé.

2. Preuves exigées (définitions)

Code Preuve Outil, source Coût
P0 aucune (rien à changer, ou garder) — nul
P1 compilation C++ sans erreur ni nouvel avertissement Tools\Build.ps1 (skill lp-build) faible, sans éditeur
P2 recompilation de tous les Blueprints sans erreur ni nouvel Accessed None commandlet CompileAllBlueprints, journal archivé (REFAC-TRANSFO-T3 l. 21) faible à moyen, copie UE
P3 banc LPTestStringCompat (3120 / 0 / 60) étendu au cas visé skill lp-validate ; REFAC-TRANSFO-T2 l. 19 faible
P4 parcours S2 joué par un humain, LogStats A/B contre l'alpha (non-régression : F5, DESTROY, à-coups avec -Stats) Tools\LogStats.ps1 (OPT0-PLAN l. 18) moyen, humain
P5 mesure de coût A/B : CSV Profiler + PerfReportTool sur build Development (catégories Game Thread, Blueprint), ou banc P1 une fois B2-ter réussi skill lp-perf, OPT\DOC\DOC-CSVProfiler-PerfReportTool.md moyen à élevé, BUILD-GO
P6 A/B de rendu : temps GPU, durée de cuisson, taille du paquet, session sans plantage GPU (ERR-138) lp-perf ; BC R5-14 à R5-17 élevé
P7 relevé préalable par MCP (lecture seule, lp-mcp) : le fait manque pour décider lp-mcp, méthode des lots A2b moyen, éditeur

3. Grille par élément

Colonnes : élément (source et compte) ; remplaçant natif 5.8 ; gain attendu ; risque ; preuve exigée ; groupe A4+ ; niveau.

3.1 Éléments de A1 (C++ de l'addon et de StreetMap, INI, C4996)

Id Élément (source, compte) Remplaçant natif 5.8 Gain attendu Risque Preuve Groupe Niveau
E01 Motifs UE4 dans le C++ de l'addon et de StreetMap : ENGINE_*_VERSION, UE_DEPRECATED / PRAGMA_DISABLE_DEPRECATION_WARNINGS, GetTimeSeconds, FindObject<, StaticLoadObject : 0 chacun (A1 § 3, OPT0-A1-INV.md:36-40) rien à faire nul nul P0 — établi
E02 ConstructorHelpers : 1 (Plugins/StreetMap/Source/StreetMapRuntime/StreetMapComponent.cpp:40, A1 § 3) garder : idiome UE5 courant dans un constructeur ; aucune entrée de BC ni de REFAC-API-58 ne le donne déprécié nul nul P0 — estimé
E03 FName(...TEXT( sur une ligne : 3 (LPSkeletonProfile.cpp:80, :81 ; LPSandboxCoupleMod.cpp:238, A1 § 3) garder : aucun site dans un tick (0 GetTimeSeconds, A1 § 3 limites) ; TEXT( total 1 189 + 87 est un compte de référence, pas un élément nul (code froid) nul P0 — estimé
E04 Entrée legacy : ActionMappings 55 (Config/DefaultInput.ini:95-149), AxisMappings 15 (l. 150-164), section Engine.InputSettings (l. 3), bEnableLegacyInputScales=True (l. 81, relu ce jour) Enhanced Input : un asset Input Action par nom, Mapping Contexts par mode (BC R1-01, R1-02, établies). Déjà en place : DefaultPlayerInputClass=/Script/EnhancedInput.EnhancedPlayerInput et DefaultInputComponentClass=…EnhancedInputComponent (DefaultInput.ini:165-166, relu) ; plugin EnhancedInput activé (LifePlay.uproject:49-50). Seules les liaisons sont legacy. aucun gain de performance attendu ni documenté (BC R1 n'en cite aucun) ; gain de durabilité : le moteur 5.8 permet de marquer des mappings dépréciés (InputSettings.h:116-120 bEnabledLegacyMappingDeprecationWarnings, :202-208 DeprecatedActionAndAxisNames), ce qui prépare un retrait futur ; débogueur d'entrée 5.8 (R1-103) élevé : 70 mappings ; nombre de nœuds Blueprint InputAction / InputAxis non relevé par A2b ; pièges signalés (axes qui ne partent plus à chaque tick au repos, action 2D en Vector2D : R1-04, non vérifié) ; régression 5.7 sur les touches tenues (R1-05, non vérifié) P7 (compter les nœuds d'entrée legacy par Blueprint) puis P2 + P4 (toutes les entrées du parcours S2) G1 établi (config, en-têtes) ; estimé (absence de gain) ; incertain (volume Blueprint)
E04b Liaisons d'entrée en C++ du jeu : BindAction / BindAxis / InputComponent dans Source\ : 0 (grep relu ce jour) sans objet : la passerelle ENHANCED_INPUT_ALLOW_LEGACY_BINDING (BC R1-102 ; EnhancedInputComponent.h:600-610, défaut 0) ne concerne que le C++ nul nul P0 G1 établi
E05 Clés de rendu r. : 79 (DefaultEngine.ini 11, DefaultScalability.ini 68 ; A1 § 4) garder : réglages du projet et de la scalabilité, voie native (BC R5-13) ; pas un héritage UE4 en soi. Seul le choix SM5 / SM6 est un candidat (E20) nul nul P0 — estimé
E06 gc. : 0 ; bUseFixedFrameRate : 0 (A1 § 4) rien à faire : le GC incrémental est expérimental et peu sûr vis-à-vis des threads (BC R8-02, R8-04, établies) ; aucun nouveau réglage GC en 5.6 à 5.8 (R8-101) nul sans mesure moyen si on active le GC incrémental P0 ; P5 avant tout réglage GC — établi
E07 C4996 : 0 dans les 4 derniers journaux de build (A1 § 5) ; candidat « StreetMap C4996 » d'OPT0-PLAN l. 41 clos : plus aucun C4996 de StreetMap ni de l'addon. Les 5 C4996 restants sont dans le plugin Marketplace HyperAIStudio (STM_Build_20261009-144519.log, A1 § 5), hors périmètre nul nul P0 (P1 à chaque montée de version, BC R1-101) — établi

3.2 Éléments de A2b (110 Blueprints)

Id Élément (source, compte) Remplaçant natif 5.8 Gain attendu Risque Preuve Groupe Niveau
E08 Nœuds dépréciés des Blueprints : non mesurables en lecture seule (A2b § 3, OPT0-A2b-INV.md:42) — (élément de mesure) : relever les avertissements de dépréciation à la compilation — nul (lecture) P2 en lecture : journal CompileAllBlueprints, comptage des avertissements « deprecated » G0 établi (lacune)
E09 Appels LPStringCompat : 502, dans 36 Blueprints (A2b § 4 ; classement estimé) garder : 60 écarts du natif sur 3120 cas (REFAC-INDEX l. 43 ; OPT0-PLAN l. 16) — élevé si on passe au natif (découpage de données changé : ERR-027, ERR-005, REFAC-TRANSFO-T2 l. 18) P0 ; P3 avant toute révision G2 (T2 seulement) établi
E10 Appels LPMeshCompat : 56 (Person 28, GI 17, …, A2b § 4) ; mêmes totaux qu'OBA (R22) GetSkinnedAsset + cast (SkinnedMeshComponent.h:1222-1223, REFAC-INDEX l. 28) : REFAC-TRANSFO-T3 une fonction C++ de moins ; aucun gain de performance démontré (REFAC-INDEX l. 43 ; T3 l. 24) faible, volume moyen (56 sites, T3 l. 20) P2 + P4 (T3 l. 21) ; écriture par lp-mcp-bp sous instantané G2 établi
E11 Appels LPNavigationHelpers : 6 (Person 3, Room 2, AI 1, A2b § 4) ; R22 K2_GetRandomLocationInNavigableRadius (NavigationSystem.h:515-516, impur) ; REFAC-TRANSFO-T5 nettoyage seulement faible à moyen : le nœud natif est impur, recâblage du flux d'exécution ; vérifier si RandomLocation et ReturnValue ont plusieurs consommateurs (T5 l. 16-17) P7 (consommateurs sur les 6 graphes) puis P2 + essai en jeu des déplacements (Person standIdle, jumpOffFnt ; Room moveToBedIfPossible, getStandSpots) G2 établi (signatures) ; estimé (réévaluation)
E12 Event Tick : 24 Blueprints sur 110, 1 nœud chacun (11 /Game/BPs, 13 /Game/UI, A2b § 5) ; nœuds atteints depuis le Tick : Person 103, Tutorial 20, TestPerson 13, PC 8, les autres 1 (A2b § 6) selon le cas : intervalle de Tick (R2-04), événement ou dispatcher au changement (R2-02), Timer (R2-05), désactivation du Tick des widgets sans travail continu (R2-01) ; passage en C++ des seuls points chauds mesurés (R2-12, R2-13, non vérifiées) inconnu : aucun coût par Blueprint mesuré. Les Ticks à 1 nœud atteint (20 sur 24) font peu de travail ; le candidat principal est Person (103 nœuds, personnage répété) moyen : Epic prévient qu'un événement en rafale peut coûter plus qu'un Tick (R2-03) ; Test* sont des Blueprints de test P5 d'abord (coût du Tick de Person, de PC, de Tutorial) ; puis P2 + P4 + P5 A/B. Sans P5 : aucun changement G3 établi (comptes) ; estimé (gain)
E13 Delay / RetriggerableDelay : 89 nœuds dans 46 Blueprints ; 0 atteint depuis un Tick (A2b § 6) garder : le Delay est la voie native pour une action différée (R2-05, établie) nul nul P0 — établi (dans le Blueprint ; appels hors Blueprint non suivis, A2b § 6)
E14 Get All Actors Of Class : 0 (A2b § 6) rien à faire (R2-06 sans objet) nul nul P0 — établi
E15 Blueprints d'animation : 7 FreeAnimationsPack + 3 Heavy, graphes d'animation non classés (A2b § 5) Thread Safe Update Animation + Property Access (R1-06, R9-06, R9-07) ; Fast Path (R1-07, R9-08) ; Animation Budget Allocator si plusieurs personnages (R9-01 à R9-03) inconnu ; potentiellement le plus fort de l'axe A si des Cast ou des calculs tournent dans l'EventGraph à chaque image (R9-06 : EventGraph « souvent le plus coûteux ») moyen (pose, root motion : R9-09) P7 (EventGraph des AnimBP, option « Warn About Blueprint Usage » en lecture du journal, R1-07) puis P5 G4 estimé

3.3 Candidats nommés par OPT0-PLAN et par la base de refactorisation

Id Élément (source) Remplaçant natif 5.8 Gain attendu Risque Preuve Groupe Niveau
E16 Branche UE4 morte R20 : garde ENGINE_MAJOR_VERSION >= 5 toujours vraie (OBA-T5-EVAL.md:139), aujourd'hui à Source/LifePlayEditorTools/LPDumpFunctionCommandlet.cpp:105 (relu ; la ligne a bougé depuis OBA, l. 89-90) supprimer la branche propreté ; nul en jeu (commandlet d'éditeur) nul P1 (build Editor, OBA-T5-EVAL:139) G5 établi
E17 10 gardes de version UE_VERSION_* / ENGINE_*_VERSION (REFAC-TRANSFO-T1), dont E16 retirer les branches 5.5 propreté faible ; casse la compilation de la copie 5.5 si on y reporte P1 ; décision de l'utilisateur sur la copie 5.5 (REFAC-INDEX l. 40) G5 établi
E18 Victory_LoadTexture2D_FromFile (5 assets) : REFAC-TRANSFO-T4 ImportFileAsTexture2D (KismetRenderingLibrary.h:210, REFAC-INDEX l. 28) nettoyage moyen (REFAC-INDEX l. 39) P7 (appelants) + P2 + P4 (images chargées en jeu) G5, facultatif estimé
E19 JSON écrit à la main dans l'addon (1 site) : REFAC-TRANSFO-T6 FJsonObject + sérialiseur nul très faible (REFAC-INDEX l. 41) P1 + relecture du fichier produit G5, facultatif estimé
E20 SM5 contre SM6 / DX12 (EVAL-FAB-4 ; OPT0-PLAN l. 42) : DefaultGraphicsRHI_DX12 (Config/DefaultEngine.ini:129) ; aucun format de shader fixé par le projet, donc défaut du moteur +D3D12TargetedShaderFormats=PCD3D_SM5 (Engine/Config/BaseEngine.ini:3411, relu) SM6 : cible recommandée par Epic, SM5 limité à 8 UAV par shader (R5-01) ; Lumen, Nanite, VSM exigent SM6 (R5-02, R5-03) ; la page des réglages Windows le marque « Experimental » (R5-04) non chiffré (BC-INDEX l. 33 : aucun gain SM6/SM5 chiffré) ; ouvre Lumen et Nanite, pas un gain direct élevé : recompilation de tous les shaders, durée de cuisson, rendu changé, antécédent de plantage GPU DXGI_ERROR_DEVICE_RESET (ERR-138 ; R5-14) ; matériel du poste RX 6600M dans la gamme RX 6000 (R5-02 ; variante mobile non vérifiée) P6 complet + P4 ; décision de l'utilisateur G6 établi (config) ; incertain (gain)
E21 Startup Movie Player R23 : [/Script/MoviePlayer.MoviePlayerSettings] +StartupMovies=loading (Config/DefaultGame.ini:7-10) ; Content/Movies/loading.mp4 82 696 632 octets (relevé ce jour, = 78,9 Mio d'OBA-T5-EVAL:284) aucun remplaçant prêt : Media Framework le remplacera « dans une version future » (R1-08, établie) ; module encore présent en 5.6 / 5.7 (R1-09, non vérifié) nul en performance ; taille du paquet si le film est réencodé (hors héritage) retrait futur sans date P0 : suivi seulement (OBA-T5-EVAL:142) ; P1 à chaque montée de version — (suivi) établi
E22 Banc LPTestStringCompat étendu à ParseIntoArray : REFAC-TRANSFO-T2 — (préalable de mesure) aucun en jeu ; sécurise E09 et E10 aucun (commandlet d'éditeur, T2 l. 18) P3 G2 (en premier) établi

4. Groupes d'exécution A4+ (proposition, sans décision)

Groupe Éléments Nature Préalable Preuve d'acceptation Ordre proposé
G0 E08 mesure : avertissements de dépréciation des Blueprints copie UE, commandlet (BUILD-GO) journal archivé, compte brut 1 (peu coûteux, peut révéler d'autres éléments)
G2 E22, E10, E11 (E09 garder) nettoyage U9 : T2 → T3 → T5 (REFAC-INDEX l. 36-38) E22 d'abord ; P7 pour E11 P3, P2, P4 2
G5 E16, E17, E18, E19 nettoyage C++ décision sur la copie 5.5 pour E17 P1 (+ P2 et P4 pour E18) 3, regroupable avec G2
G1 E04, E04b migration de l'entrée vers Enhanced Input P7 : nœuds d'entrée legacy par Blueprint ; décision de l'utilisateur P2 + P4 (toutes les entrées du parcours S2) 4 (durabilité, aucun gain de performance)
G4 E15 AnimBP thread-safe, Fast Path, budget P7 ; P5 disponible P5 A/B + P4 5, après B2-ter ou CSV Development
G3 E12 Ticks Blueprint P5 disponible (mesure de Person, PC, Tutorial) P5 A/B + P2 + P4 5, après B2-ter ou CSV Development
G6 E20 SM6 / DX12 décision de l'utilisateur ; P6 outillé (B2-ter) P6 + P4 6, en dernier
— E01, E02, E03, E05, E06, E07, E13, E14, E21 rien à faire, garder ou suivre — P0 —

Lecture d'ensemble (estimé) : aucun élément de l'axe A n'a aujourd'hui de gain de performance prouvé. Les seuls candidats à gain possible sont E12 (Ticks, surtout Person) et E15 (AnimBP), et les deux exigent une mesure P5 que le poste ne sait pas encore produire (§ 1). Les groupes G0, G2 et G5 sont des nettoyages sans risque notable, prouvables par compilation et parcours.

5. Recompte contre A1 et A2b

Source Compte de la source Rattaché dans la grille Écart
A1 § 3 : 5 motifs à 0 + ConstructorHelpers 1 + FName(TEXT 3 + TEXT( 1 276 (référence) 8 lignes de motif E01 (5 motifs), E02 (1), E03 (3 + référence) 0
A1 § 4 : ActionMappings 55, AxisMappings 15, Engine.InputSettings 1, bUseFixedFrameRate 0, r. 79, gc. 0 6 motifs E04 (3), E06 (2), E05 (1) 0
A1 § 5 : C4996 0 sur 4 journaux, + 5 hors périmètre 1 constat E07 0
A2b § 3 : dépréciés non mesurables 1 E08 0
A2b § 4 : String 502 + Mesh 56 + Navigation 6 = 564 3 correctifs E09, E10, E11 0 (502 + 56 + 6 = 564)
A2b § 5 : Event Tick 24 (11 + 13 = 24) ; AnimBP 10 (7 + 3) non classés 2 E12, E15 0
A2b § 6 : Delay 89 / 46 Blueprints ; GAAOC 0 2 E13, E14 0
OPT0-PLAN l. 37-43 : 6 candidats (entrée legacy, U9 R22, R20, StreetMap C4996, SM5/SM6, Movie Player R23) 6 E04, E10 + E11, E16, E07, E20, E21 0
REFAC-INDEX l. 34-41 : T1 à T6 6 E17 (T1), E22 (T2), E10 (T3), E18 (T4), E11 (T5), E19 (T6) 0
Ajouts de cette fiche (relus ce jour) — E04b (0 liaison C++), bEnableLegacyInputScales dans E04, formats de shader dans E20 ajouts signalés

Total : 23 lignes de grille (E01 à E22 et E04b). Tout élément de A1 et de A2b est rattaché.

6. Décisions à soumettre à l'utilisateur (par Big Boss)

  1. Ordre des groupes A4+ (§ 4) : accord, ou autre priorité.
  2. G1 (Enhanced Input) : migrer sans gain de performance, pour la durabilité, ou attendre une dépréciation effective du moteur.
  3. G5 / E17 : retirer les gardes de version 5.5 (le développement 5.5 est arrêté selon la décision du 2026-10-12, à confirmer par Big Boss).
  4. G6 / E20 : instruire SM6 maintenant, ou après la réparation du banc (B2-ter) et la stabilisation ERR-138.
  5. G3 et G4 : accepter qu'aucun changement de Tick ou d'AnimBP ne parte avant une mesure P5 (B2-ter ou CSV Profiler sur build Development avec BUILD-GO).

6b. Décisions de l'utilisateur, 2026-10-15 (transmises par Big Boss)

  1. Ordre A4+ : « Ordre proposé (Recommandé) » : G0, G2, G5, G1, puis G3 et G4 après mesure, G6 en dernier.
  2. G1 (Enhanced Input) : « Oui, pour la durabilité ».
  3. G5 / E17 (gardes de version 5.5) : « Oui (Recommandé) ».
  4. G6 / E20 (SM6) : « Après B2-ter et ERR-138 (Recommandé) ».
  5. G3 / G4 : aucun changement avant une mesure P5 (conséquence du § 1, non contestée).

G0 n'est pas lancé : il demandera un ordre de l'utilisateur et un BUILD-GO.

7. Limites

  • Aucun coût mesuré : tous les « gains » sont des attentes, au mieux estimées.
  • Le nombre de nœuds d'entrée legacy (InputAction, InputAxis) dans les Blueprints n'a été relevé par aucune fiche (E04, P7 à faire).
  • A2b ne suit pas les appels hors Blueprint ni les délégués (A2b § 6) : un Delay ou un coût atteint depuis un Tick par un autre chemin n'est pas exclu.
  • Les entrées R1-04 et R1-05 (pièges de migration de l'entrée) restent non vérifiées ; la seule preuve locale est l'existence de l'option de dépréciation des mappings dans InputSettings.h:116-120, qui ne prouve pas un retrait.
  • Le classement String de A2b reste estimé (A2b § 4).
  • Faits du moteur relus directement par cette session (sans délégation) : InputSettings.h:96-120, :202-208, EnhancedInputComponent.h:600-615, BaseEngine.ini:3411-3412, Config/DefaultInput.ini:81, :165-166, Config/DefaultEngine.ini:127-129, Config/DefaultGame.ini:7-10, LifePlay.uproject:49-50, LPDumpFunctionCommandlet.cpp:105.

8. Fin

Fichiers écrits : OPT0-A3-FICHE.md, ce livrable, la ligne A3 de OPT0-TACHES.md (tous dans etat\, suivis par git : .gitignore l. 77). Fichiers à commiter (ticket de Big Boss) :

  • A Docs/Migration/etat/OPT/OPT0/OPT0-A3-FICHE.md
  • A Docs/Migration/etat/OPT/OPT0/OPT0-A3-GRILLE.md
  • M Docs/Migration/etat/OPT/OPT0/OPT0-TACHES.md

Journal : sans objet (aucun fichier hors etat\ modifié). Fin : [A3→BOSS] OPT0 FIN-FICHE A3 D:\Game\LifePlay-master 5.8\Docs\Migration\etat\OPT\OPT0\OPT0-A3-GRILLE.md