LifePlay-Revival/Docs/Migration/etat/OPT/REFAC/REFAC-INDEX.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

4.6 KiB

REFAC-INDEX : base de refactorisation du C++ de LifePlay (fiche C1)

2026-10-15, session Sonnet · OPT0-R, avec deux sous-agents Sonnet (C1a inventaire, C1b API). Lecture seule du code ; aucun build, éditeur, MCP ni commit. Point de départ : etat\OB\OBA\OBA-T23-CODE-CART.md et OPT\OPT0\OPT0-A1-INV.md.

Contenu

Fichier Objet
REFAC-FONCTIONS.csv inventaire des définitions de fonctions : module, fichier, ligne, classe, fonction, UFUNCTION Blueprint, statique, tick
REFAC-APPELS.csv sites d'appel : appelant, appelé, fichier:ligne, interne ou moteur, colonne ambigu
REFAC-SANS-APPELANT.csv fonctions sans appelant interne (avec la réserve moteur / Blueprint)
REFAC-INDEX-C1a.md comptes bruts, fonctions les plus appelées et les plus longues, limites de l'analyse
REFAC-API-58.md statut des API moteur dans les en-têtes 5.8, correctifs et contournements maison, candidats
REFAC-TRANSFO-T1.md à T6.md une fiche de transformation par candidat

Comptes bruts (recomptés par mes soins)

Mesure Valeur Vérification
Fonctions définies 1011 (LifePlay 485, LPSandbox 132, StreetMapRuntime 93, LPModTools 82, LPAnimMeasure 77, LifePlayEditorTools 68, StreetMapImporting 43, LPAnimCore 31) wc -l du CSV : 1012 lignes, en-tête comprise
Sites d'appel 12 256 (internes 3169, moteur 9087) wc -l du CSV : 12 257 lignes, en-tête comprise ; 3169 + 9087 = 12 256
Sans appelant interne 364 (176 sans réserve de cycle de vie ni d'exposition) wc -l : 365 lignes
UFUNCTION Blueprint / statiques / Tick 30 / 67 / 17 rapport C1a, non recompté
Symboles moteur extraits / résolus dans les en-têtes 5.8 / tableau 1089 Classe::Membre / 382 / 150 rapport C1b, non recompté
API obsolète effectivement appelée 0 (6 symboles marqués obsolètes dans les en-têtes : faux positifs ou déjà traités) rapport C1b ; concorde avec OBA-T23 § 3.2
Gardes de version UE_VERSION_* / ENGINE_*_VERSION 10 (le rapport C1b en comptait 9) Grep direct, voir T1

Vérifications faites sur les en-têtes 5.8 : NavigationSystem.h:515-516 (K2_GetRandomLocationInNavigableRadius, BlueprintCallable), NavigationSystem.h:1483-1485 (ancien nœud pur, déprécié 5.1), SkinnedMeshComponent.h:1222-1223 (GetSkinnedAsset, pur), KismetRenderingLibrary.h:210 (ImportFileAsTexture2D), AutomationTest.h:63-65.

Résultat

Aucune API moteur dépréciée n'est appelée par le C++ suivi du jeu, de l'addon et de StreetMap (confirme OBA-T23). Six candidats de transformation, tous de faible gravité :

Id Candidat Gravité Niveau de preuve Décision
T2 étendre le banc LPTestStringCompat à ParseIntoArray moyenne (préalable) établi à lancer en premier
T3 LPMeshCompat vers GetSkinnedAsset + cast (56 nœuds) volume moyen, risque faible établi après T2
T5 LPNavigationHelpers vers K2_GetRandomLocationInNavigableRadius (6 nœuds) faible à moyen établi / estimé après T3
T4 Victory_LoadTexture2D_FromFile vers ImportFileAsTexture2D (5 assets) moyenne estimé facultatif
T1 retirer 10 gardes de version faible établi décision de l'utilisateur (copie 5.5)
T6 JSON écrit à la main en FJsonObject (1 site, addon) très faible estimé facultatif

Pas de candidat : LPStringCompat Contains / Find / Split (60 écarts du natif sur 3120 cas mesurés par OBA), LPAssetRegistryHelpers (le natif K2_GetAssetByObjectPath est impur), LPDataCompat (logique métier). Priorité d'ensemble : T2 d'abord ; les autres n'apportent qu'un nettoyage, aucun gain de performance n'est démontré.

Limites

  • Analyse lexicale (grep et expressions régulières, sans préprocesseur ni résolution de types) : les appels par délégué, par nom de chaîne ou depuis un Blueprint ne sont pas vus ; 1210 arêtes internes sont marquées ambiguës ; les fonctions écrites par macro ne sont pas comptées.
  • Les en-têtes Private, Internal, ThirdParty et Engine\Plugins ne sont pas balayés pour le statut des API.
  • 16 fichiers de l'addon, modifiés ou non suivis (liste dans REFAC-INDEX-C1a.md), ne sont pas analysés : LPSandbox est sous-compté. ModdingExtra et LPSandboxApp sont hors périmètre.
  • Les Blueprints ne sont pas couverts : tous les appelants Blueprint des fiches T2 à T5 sont « à relever par MCP » (lot ultérieur, BUILD-GO).
  • Dates de dernière modification des chiffres Blueprint (114, 385, 56, 6) : réimport historique, non HEAD.
  • Les deux agents lisent ces fichiers avant d'agir : lp-refac (cartographie) et lp-perf (mesure).