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

9.7 KiB

BC-R2 : performance des Blueprints (tick, timers, C++, validateurs, audit, références)

Date 2026-10-15, auteur « sous-agent Sonnet OPT0-R », 14 entrées : 11 établi / 0 estimé / 3 non vérifié.

Toutes les URL ci-dessous ont été ouvertes par WebFetch. Les pages Epic de la documentation affichent « Unreal Engine 5.8 » dans leur titre mais aucune date de mise à jour (« date inconnue »).

id affirmation (1-2 phrases, sans copie de texte) source (URL, date, version UE) niveau (établi / estimé / non vérifié) application à LifePlay (système ou fichier) action proposée skill de destination
R2-01 Le Tick sert au travail continu (mouvement temps réel) ; l'employer pour des tâches occasionnelles gaspille du CPU. https://dev.epicgames.com/documentation/unreal-engine/common-memory-and-cpu-performance-considerations-in-unreal-engine ; date inconnue ; UE 5.8 établi Blueprints d'acteurs et de composants avec un Event Tick Recenser les Blueprints qui ont un Tick actif et classer chaque Tick en « continu » ou « occasionnel » lp-bp-audit
R2-02 Surveiller une variable à chaque image est un anti-motif ; mieux vaut passer par un setter ou un événement qui déclenche la logique au changement de valeur. même URL ; date inconnue ; UE 5.8 établi Blueprints qui comparent une valeur à chaque Tick Remplacer le test par image par un événement ou un dispatcher émis au changement lp-perf
R2-03 Epic prévient que l'approche événementielle peut coûter plus cher qu'un Tick si l'événement part plusieurs fois par image ; un Tick ou un « command pattern » est alors préférable. même URL ; date inconnue ; UE 5.8 établi Événements/dispatchers appelés en rafale Mesurer avant de convertir un Tick en événement ; ne pas généraliser lp-perf
R2-04 On peut réduire la fréquence de Tick par objet ou composant (intervalle de Tick), ou limiter une partie du Tick avec un accumulateur de temps maison. même URL ; date inconnue ; UE 5.8 établi Blueprints à Tick actif dont le travail n'a pas besoin de 60 Hz Fixer un Tick Interval dans les defaults de classe (réglage de classe, lisible par audit) lp-perf
R2-05 Un Timer (se nettoie en fin de course) ou le nœud Delay conviennent pour exécuter une action différée, à la place d'un Tick qui compte le temps. même URL ; date inconnue ; UE 5.8 établi Blueprints qui comptent un délai dans le Tick Remplacer les compteurs de Tick par Set Timer by Event / Delay selon le cas lp-perf
R2-06 La page de référence du nœud « Get All Actors with Component » le qualifie d'opération très lente car il parcourt tous les acteurs du monde ; à éviter dans le code fréquent. https://dev.epicgames.com/documentation/unreal-engine/BlueprintAPI/PerformanceCapture/Core/GetAllActorswithComponent ; date inconnue ; UE 5.8 établi Tout nœud Get All Actors Of Class / With Component / With Interface dans un Tick, une boucle ou un widget Chercher ces nœuds par audit ; mettre le résultat en cache au BeginPlay ou tenir un registre lp-bp-audit
R2-07 Les chargements synchrones (LoadObject, StaticLoadObject) provoquent des à-coups de fréquence d'images ; les références dures chargent leurs cibles avec le propriétaire, et beaucoup de chargements simultanés gonflent la mémoire. Une TSoftObjectPtr se charge à la main, avec IsPending() pour savoir si elle est prête. https://dev.epicgames.com/documentation/unreal-engine/referencing-assets-in-unreal-engine ; date inconnue ; UE 5.8 établi Blueprints/classes C++ avec propriétés d'assets (meshes, sons, classes à instancier) Passer en références souples + chargement asynchrone les assets lourds ou rarement utilisés ; lister les chargements synchrones lp-bp-audit
R2-08 Le plugin Data Validation vérifie un asset, un asset et ses dépendances, un dossier ou tout le projet (menu du Content Browser, menu Tools) ; il s'exécute aussi à la sauvegarde (actif par défaut) et en ligne de commande par un commandlet DataValidation (C++ seulement par défaut), utilisable en CI. https://dev.epicgames.com/documentation/unreal-engine/data-validation-in-unreal-engine ; date inconnue ; UE 5.8 établi Contrôle automatique des assets, intégration à Tools/RunCommandlet.ps1 Évaluer un lancement du commandlet DataValidation sur le contenu migré (lecture, hors écriture) lp-validate
R2-09 Les validateurs Blueprint sont créés en étendant la classe de base de validateur ; ils sont découverts au démarrage de l'éditeur (sauf choix contraire du projet), et les validateurs Python doivent s'enregistrer eux-mêmes auprès du sous-système. même URL ; date inconnue ; UE 5.8 établi Règles de projet (noms, références interdites, Tick actif, dépendances dures) Prototyper un validateur C++ ou Blueprint de règles simples, puis l'ajouter à la batterie de validation lp-autotest
R2-10 La classe UEditorValidatorBase expose pour le C++ ValidateLoadedAsset_Implementation, CanValidateAsset_Implementation et CanValidate_Implementation, pour le Blueprint les événements K2_* et les fonctions AssetFails / AssetWarning / AssetPasses ; la page 5.8 ne signale aucune dépréciation. https://dev.epicgames.com/documentation/unreal-engine/API/Plugins/DataValidation/UEditorValidatorBase ; date inconnue ; UE 5.8 établi Écriture d'un validateur dans un module éditeur (Build.cs avec le module DataValidation) Vérifier dans le source 5.8 la signature exacte (contexte FDataValidationContext) avant écriture ue-cpp-build
R2-11 Le tableau des canaux de trace d'Unreal Insights n'a aucun canal Blueprint dédié ; seule mention : le canal AssetLoadTime ajoute les noms de Blueprints aux timers de sérialisation (CPU + -statnamedevents). https://dev.epicgames.com/documentation/unreal-engine/unreal-insights-reference-in-unreal-engine-5 ; date inconnue ; UE 5.x (version de la page non lue) établi Mesure du coût des Blueprints ; choix de l'outil Ne pas supposer un canal « blueprint » ; vérifier avec la fenêtre de trace de l'éditeur 5.8 avant de s'appuyer sur le billet vendeur (R2-13) lp-perf
R2-12 Un billet vendeur affirme que la nativisation a été dépréciée en 4.27 et supprimée en UE5 (donc absente en 5.7) ; aucun outil de conversion automatique Blueprint vers C++ n'existe plus. https://www.strayspark.studio/blog/blueprint-nativization-ue57-when-convert-blueprints-cpp ; 2026-03-31 ; UE 5.7 non vérifié Décision de migration d'héritage UE4 : la conversion se fait à la main Ne pas planifier de « nativisation » ; chiffrer la réécriture manuelle des seuls points chauds lp-perf
R2-13 Même billet : porter en C++ en priorité les Ticks sur beaucoup d'acteurs, les calculs lourds par image, les boucles sur grands tableaux et les spawns fréquents ; événementiel, UI et mise en place unique restent en Blueprint. Méthode : classe de base C++ avec reparentage, fonction BlueprintCallable ou BlueprintNativeEvent. Il conseille de profiler d'abord avec Insights (canal Blueprint) et de viser un VM Blueprint sous ~1 ms par image. même URL ; 2026-03-31 ; UE 5.7 non vérifié Choix des Blueprints à passer en C++ (reparentage) Établir la liste par mesure, pas par intuition ; le seuil d'1 ms est un ordre de grandeur de vendeur lp-perf
R2-14 Les erreurs « Accessed None » viennent d'une variable de référence vide (jamais affectée ou détruite) ; correctif cité : affecter la variable puis garder l'accès par un test Is Valid. Un fil de forum de 2018 (auteur non identifié comme employé d'Epic) soutient que Tick et timers coûtent à peu près pareil, le coût venant du travail déclenché (traces répétées). https://forums.unrealengine.com/t/accessed-none/391339 ; 2017-04-19 ; UE 4.x ; https://forums.unrealengine.com/t/tick-vs-timers/118402/7 ; 2018-12-22 ; UE 4.x non vérifié Journaux de jeu (Accessed None) ; Ticks avec traces Ne pas se contenter de masquer par Is Valid : chercher pourquoi la référence est vide ; mesurer avant de choisir entre Tick et timer lp-mcp

Lacunes et doutes

  • Asset Audit : aucune page Epic ouverte ne décrit la fenêtre Asset Audit (ni son chemin de menu exact en 5.8) ni le Size Map. Les résultats de recherche ne donnaient que des pages de vendeurs (non ouvertes). Sujet non couvert : à vérifier directement dans l'éditeur 5.8.
  • Blueprint profiler : aucune page Epic officielle ouverte sur un profileur Blueprint en 5.6 à 5.8 ; le tableau des canaux Insights n'a pas de canal Blueprint (R2-11), ce qui contredit le conseil -trace=default,blueprint du billet vendeur (R2-13). À trancher par un essai.
  • Sortis dans les recherches mais non ouverts, donc exclus du tableau : documentation 4.26/4.27 du nœud Get All Actors Of Class (signalé lent), fils de forum sur le type d'une variable souple vu comme référence dure dans le Reference Viewer, registre d'acteurs par auto-enregistrement, pages API de UEditorValidatorSubsystem (bValidateOnSave, cuisson) et de EDataValidationUsecase.
  • Casts et chaînes de références dures : la page Epic « Referencing Assets » ne traite pas des casts ; aucune source ouverte sur ce point.
  • La page Epic sur le coût CPU ne cite ni GetAllActorsOfClass ni Delay dans un Tick ; le conseil « pas de Delay dans un Tick » n'est pas couvert par une source ouverte.
  • Un billet bugnet.io (2026-06-14) dit seulement d'utiliser le profileur Blueprint, sans détail ; non retenu. Une autre page bugnet censée traiter GetAllActorsOfClass dans le Tick a renvoyé un index sans contenu utile ; non retenue.
  • Aucune note de version 5.6 à 5.8 consultée sur ces thèmes ; « UE 5.8 » ne vaut que pour le titre des pages de documentation.