I. Iteration et Evenements (Le Temps, C’est de l’Argent)
Evitez le Tick (La Mort Lente) : Ne jamais executer de logique couteuse dans l’Event Tick. Remplacer systematiquement le Tick par des Timers pour les verifications periodiques (ex: Check Range toutes les 0,2s).
Separation des Donnees : Utiliser les Data Tables ou les Data Assets (via des Structures) pour stocker les statistiques et les valeurs ajustables. Le code ne doit pas contenir de nombres magiques.
Limiter l’UI : Mettre a jour l’Interface Utilisateur (UMG) uniquement lorsque la valeur affichee change reellement, et non a chaque Tick.
II. References et Communication (Garder le Contact)
Interdiction du GetAll : Ne jamais utiliser Get All Actors of Class en cours de jeu. Indexer les acteurs critiques (monstres, joueurs) dans un tableau central (souvent dans le Game Mode ou le Game State) lors de leur creation.
Le Contrat d’Interface : Pour la communication entre Actors (ex: Interact), utiliser les Interfaces Blueprints pour envoyer un message generique. Cela evite les Cast To… couteux et repetitifs.
Nettoyage du Garbage : Quand un Actor qui a ete reference dans un tableau ou une variable est detruit, utiliser la fonction Set pour mettre la variable de reference a None. Cela aide le Garbage Collector (GC) a liberer la memoire.
III. Logique et Structure (Compter les Cycles)
Variables Locales : Utiliser les variables locales (creees dans les fonctions) pour tous les calculs temporaires. Elles sont effacees immediatement de la pile et sont tres performantes.
Conciliation de Graphes : Decomposer la logique complexe en Fonctions (pour la logique pure) et en Macros (pour la logique reutilisable avec un Execution Pin). Un graphe de la taille d’un ecran est un signe de probleme.
Eviter la redondance : S’assurer que la logique multijoueur est executee uniquement sur le serveur ou le client approprie. Ne pas executer la meme logique deux fois (une fois pour le serveur, une fois pour le client).