← Retour au blog

Nouvelle gestion des évènements

Bonsoir !

!! Attention, news technique !!


Je suppose que le titre de la news laisse plutôt pensif... En effet, je ne suis pas certain que tout le monde voit d'entrée ce que sont les « évènements »
Si vous affichez la page d'accueil, vous pourrez voir tout en bas une section appelée « Évènements en cours ». Eh bien toutes les lignes qui peuvent y être affichées sont des évènements. Il s'agit donc des attaques, constructions, réparations, espionnages, etc.
Finalement, c'est assez logique.

Eh bien pour que les attaques soient faites ou pour qu'après avoir construit des tanks vous les retrouviez dans votre garage, il y a un système de gestion des évènements qui est en place. Ce système vient de subir un changement radical (c'est même le plus gros changement qu'a subi le jeu depuis sa sortie le 1er juin 2007 !).

Je vais commencer par vous présenter le système tel qu'il était auparavant. Puis vous en saurez plus sur ce qu'il est devenu ce soir. Enfin, j'expliquerais pourquoi avoir opéré un tel changement.

L'ancien système

Les évènements, lorsqu'ils sont lancés, sont stockés dans ce qu'on appelle une base de données. Donc si vous lancez une attaque sur moi à 12h00, quelque part est écrit tout ce qui concerne cette attaque. L'information la plus importante, c'est l'heure à laquelle cette attaque doit avoir lieu. En effet, une attaque lancée n'est réellement réalisée que plus tard (30 minutes par exemple).
Ainsi, on peut disposer de ce qu'on appelle une « table » qui regroupera tous les évènements en cours. Cette table sera appelée simplement la table des évènements.

L'ancien système était tel qu'à chaque affichage de page, le serveur vérifiait d'abord s'il y avait des évènements terminés dans cette table (en utilisant l'heure de réalisation et en la comparant à l'heure actuelle). Si l'heure de réalisation est passée, alors il faut faire ce qu'indique l'évènement (souvenez-vous dans l'exemple : lancer l'attaque contre moi et donc envoyer les rapports notamment), puis le supprimer de la table des évènements en cours.

Une fois cette vérification terminée, alors le serveur vous affiche votre page que vous attendiez depuis quelques centièmes de secondes (qui peuvent devenir des secondes dans les pires cas).

En fait, pour parer à une attente systématiquement trop longue les évènements ne sont pas traités à chaque affichage mais à condition que certaines contraintes soient réalisées (notamment il y a un temps minimum entre deux vérifications), et heureusement pour le serveur qui gère la table des évènements, vous pouvez me croire

On peut représenter ceci par un schéma qui sera, je l'espère, le plus clair possible (cliquez pour agrandir) :
images/inscrits/1/1259625799.png

Le nouveau système

Le nouveau système est différent de l'ancien dans le mode d'exécution des évènements. Leur stockage passe toujours par une table des évènements mais contrairement à ce qui faisait, il n'y a plus de vérification des évènements à l'affichage des pages. C'est en fait un petit programme qui tourne sur le serveur qui s'en charge. Ce programme est en parallèle avec celui qui est chargé de vous renvoyer les pages que vous souhaitez afficher. Ainsi, la gestion des évènements est désormais totalement indépendante des visiteurs, et c'est une très bonne chose comme vous le verrez un peu plus bas !

Là aussi, un petit schéma résume bien ce qui se fait :
images/inscrits/1/1259625836.png
(on constate qu'il est bien plus simple que le premier !)

Cependant, ce système est en cours de test, et il n'est pas garantit qu'il puisse rester définitivement. Donc si vous constatez des évènements qui ne se font plus (par exemple : une construction qui reste plus longtemps qu'elle ne devrait), merci de nous le signaler dans le forum prévu pour les bugs.

Pourquoi changer et quels sont les apports ?

L'ancien système avait plusieurs défauts :
- ralentissement à l'affichage,
- problème de concurrence : si deux joueurs affichent une page en même temps et vérifient la condition nécessaire à l'exécution des évènements, alors il y a des doubles évènements (typiquement : les doubles attaques),
- la dépendance du système dans les visiteurs : s'il n'y a personne, les évènements ne sont plus réalisés...

Les apports du nouveau système sont donc évidents : il règle tous les problèmes qu'il y avait. En effet, ceux-ci avaient en commun d'être causés par le fait que c'étaient les joueurs qui réalisaient les évènements.

J'espère avoir été assez clair dans mes explications (sinon, n'hésitez pas à demander plus de précisions). On reparlera du principe plus tard. J'ai volontairement évité les détails techniques (sinon la news aurait été environ 10 fois plus longue ).
Bonne soirée, et bon jeu.
Publié par
Développeur

Commentaires (12)

_delete Membre
le 1 décembre 2009 à 07:35
C'est une sacré Amélioration que tu a fait ici Okin, et tu peut compter sur moi si je vois le moindre bug qui serais du à sa.

Merci pour toute tes amélioration.


Cordialement, Darksouvrain
Maria Membre
le 1 décembre 2009 à 08:09
(Plus de doubles attaques !)

Belle amélioration Okin .
Je vais aller chercher les bugs maintenant .

Merci .
Maria Membre
le 1 décembre 2009 à 08:24
"postée par Okin le 30/11/2009 à 22:00"

A 22:00 j'étais sur le jeu et pas la new ???
_delete Membre
le 1 décembre 2009 à 20:44
Moi je veux bien les détails techniques. ;)

PS: Enfin un vrai serveur? ou juste du VPS?
Okin Développeur
le 1 décembre 2009 à 21:00
Evidemment, je me doutais que tu serais intéressé

Non, ce n'est ni l'un ni l'autre, toujours en mutualisé. C'est ce qui apporte le plus de perfs (un serveur dédié, avec mysql ou postgre et apache sur une seule machine, c'est du suicide : il en faut au moins deux... et bon, ça demande beaucoup de temps). Là ça fonctionne nickel, puisque le jeu a été optimisé comme jamais depuis plusieurs mois.
_delete Membre
le 1 décembre 2009 à 23:19
C'est sur que pour les serveurs prives il faudrait au minimum un kimsuffi 3G pour répondre a la demande et tenir la charge. Bref, je savais pas qu'OVH offrat la possibilité de faire tourner des programmes (PHP je suppose) en mode cli (console) sur un mutualise.

Personnellement j'ai un RPS1 utilisé a titre prive puis reconvertis pour des serveurs de jeux et un petit site qui sortira
je l'espère bientôt (+ des services prives qu'il rend toujours) et c'est pas mal comme petite bête ça permet de se faire la main et de pouvoir faire des tests de charge et donc d'avoir un petit avis. Si un jour ww te permet de passer sur machine individuel et si tu as besoin d'aide n'hésitez pas a demander même si je pense que tu as déjà une certaine experience!

Bonne continuation

Desole pour les nombreuses fautes d'orthographe et de grammaire mais je suis sur monipod touch et ce n'est pas chose aise de te répondre

Sparkwade

PS: excuse moi également d'avoir lâche lavancement de la V5, jessayerai de m'y reinteresser dans peu de temps
Ancien membre
le 2 décembre 2009 à 06:30
Pour etre franc j'ai juste compris que la vérification des événement est supprimer sinon rien,

mais si tu as fais cela, ça signifie que c'est mieux.


Cordialement.
Ancien membre
le 3 décembre 2009 à 01:35
je voudrais juste savoir une chose, avant quand je faisais une attaque programmé et que j'avais pas les ressources j'avais un message qui m'indiquais a l'heure programmé que je n'avais pas les ressource et pourtant je les avais. Maintenant il n'y aura plus ce problème si j'ai bien compris.
Sinon super nouvelle merci pour ces améliorations okin.
Okin Développeur
le 3 décembre 2009 à 12:41
Non, ça ne change rien au fonctionnement de fond, c'est la forme qui change. Le programme fait tout au lieu de nous.
Ancien membre
le 3 décembre 2009 à 19:14
'Lut,

Bonne amélioration qui permet de plus attendre 3 heures pour quie le bouton "Terminer" disparaisse et que la construction soie éffectuée.
_delete Membre
le 4 décembre 2009 à 20:51
Moi ça bugait pas, mais bon c'est sur avec mon mac super trop mieu que vos PC bref ça à l'air très technique tout ça.
Okin Développeur
le 4 décembre 2009 à 22:35
Evite ce genre de remarques ;)