22-09-2009, 04:17 PM
(22-09-2009, 06:00 AM)QuentinC a écrit : Que penser d'une actualisation implicite uniquement lrosque nécessaire ?
Par exemple, j'ai besoin d'un objet User pour le joueur X, j'actualise immédiatement tout ce qui le concerne avant qu'on puisse utiliser cet objet pour faire autre chose.
A mon avis ça n'empêche pas qu'on puisse modéaliser les combats de cette manière.
tout à fait. Mais je crois avoir trouvé une backdoor pour cette technique : imaginons une page web qui regroupe des statistiques sur les combats. Le joueur X ne participe à aucun combat ni de près ni de loin mais consulte les statistiques. En utilisant la technique du "j'actualise lorsque quelqu'un demande quelque chose", lors que le joueur X affiche la page des stats alors le système doit analyser tous les combats à faire et les effectue. J'ai peur que cela puisse prendre un bon bout de temps si de nombreux combats sont à traiter.
En généralisant, l'effet "pervers" de cette technique est que l'on peut se retrouver à traiter un volume "important" de transactions (et changements d'état des objets) en un seul instant.
En y réfléchissant, il faudrait sans doute un mixte entre les deux grandes stratégies :
- actualisation au besoin : à utiliser pour ce qui concerne uniquement les évolutions du compte du joueur
- actualisation au moment de l'évènement : à utiliser pour ce qui concerne l'ensemble du monde persistant.
En gros, on aurait ainsi réparti les exemples suivants :
- construction d'un bâtiment, évolution des ressources etc... : actualisation au besoin, ie. lorsque le propriétaire du compte affiche l'état de son village par exemple
- combats, etc... : actualisation au moment, ie. un process en tâche de fond traite une file d'évènements toutes les secondes (et se mets en veille le reste du temps).
En parallèle, soit l'utilisation de la technique du long polling soit un coup de Ajax (chaque minute) permettra au client de se tenir informé des nouveautés du monde persistant en "quasi temps réel".
Je réfléchis un peu tout haut là, et je tente de rassembler les idées....
ca vous semble cohérent?