Bonjour,
Je développe actuellement un petit MMO en C# et j'aurais besoin de conseils concernant la gestion des mise à jours de mon monde.
Résumé rapide du problème :
Chaque partie du monde est géré par une 'zone' qui connait toutes les entités qui s'y trouvent (joueurs / bâtiments / ...).
Chaque entité possède une liste d'actions en cours, qui déterminent comment elle va évoluer dans les secondes suivantes (blessure / déplacement / bonus divers, ...)
Actuellement, chaque 'zone' est un thread séparé qui met à jour chaque action de chacune de ses entités, en boucle (la fréquence de mise à jours est donc potentiellement très variable, ce qui complique la gestion de certaines actions).
Hors je viens de lire un peu de doc sur Threading.Timer, disant que c'était très économe en processeur pour gérer les événements répétitifs. Je me tâte donc à passer sur un modèle où chaque action aurait son propre timer, qui appellerait sa fonction de mise à jours à intervalles fixes (ou pas, suivant l'action).
Le problème est que cela va rapidement faire énormément de timers - même avec seulement 500 entités, à raison de 2-3 actions par entités, on atteint des chiffres qui vont au-delà des cas parlant de la fonction Timer sur internet.
Donc ma question est : les timers restent-ils une solution efficiente lorsqu'on les utilisent massivement (de l'ordre de plusieurs milliers simultanément), ou bien vaut-il mieux que je garde mon modèle actuel ?
Merci.
Partager