Bonjour,
Etant en pleine creation d'un jeu web a la ogame, nous en sommes arrivés à la partie ou on voudrait bien actualiser plusieurs partie de la page de maniere individuelle, legere, et fluide , cependant dans nos tentatives, il apparait que nous n'arrivons pas a le faire simplement depuis la version ajax de jQuery.

j'en suis dknc venu a la conclusion qu'il me fallait peut etre developper un moteur ajax pour gerer toutes les actualisations temps reels .
qu'en pensez vous ?

comment dois je m'y prendre dans ce developpement ?

merci d'avance!

6 réponses


Peux tu nous détailler un peu plus les soucis AJAX que tu as avec jQuery ? Il s'agit d'une synchronisation entre plusieurs utilisateurs instantanément ? Tu pourrais peut être te tourner vers une solution comme NodeJS par exemple.

ladylain
Auteur

Tout d'abord merci d'avoir pris le temps de me lire .

Notre jeu affiche des ressources qui augmentent dans le temps,
A coté de ca, nous avons aussi la possibilité de construire des batiments et donc en mode construction, la page affiche une barre de progression qui augmente selon le temps restant du batiment,
et par la suite nous auront aussi la fonctionnalité "Déplacement de vaisseaux" qui affichera en temps reel l'emplacement du vaisseau ainsi que la progressbar de son trajet.

Du coup, nous avons donc plusieurs envoi et reception ajax, pour ce qui est sensiblement une meme fonction l'actualisation selon certains parametres.

Cette actualisation utilisent deja pas mal de ressources serveur, mais si on la multiplie par un nombre de joueurs et aussi par l'ajout de fonctions similaires, on se retrouve avec une utilisation ressources serveur trop grande.

Comment alleger la charge serveur ainsi que la bande passante facilement ?

Pour NodeJs, je ne connais pas du tout, en quoi cela pourrait m'aider ? pourrais tu m'expliquer le plus simplement ?

D'après ta description, je vois deux problèmes :

  • Côté serveur : le serveur doit pouvoir faire énormément de calcul et renvoyer les données rapidement. Ici il n'y a pas de mystères, si ça ne tourne pas avec ton serveur, il faut augmenter celui ci. Passer sur la gamme supérieure chez ton hébergeur.
  • Actualisation des informations côté client. Le problème actuel avec le Web est le principe du REST. Le client établit la connexion avec le serveur, et le serveur la coupe lorsqu'il a renvoyé les données. Impossible pour le serveur de savoir qui est connecté à lui même. Pour avoir cette mise à jour des données tu as 2 choix :
    1 ) le polling, on demande les informations à chaque intervalle de temps (toutes les x secondes).
  • : facile à implémenter
  • : gourmand en ressources, 95% des requêtes sont inutiles car les données n'auront pas été modifiées
    2) Le push, le serveur envoie les informations à tous les clients connectés lorsque les valeurs sont modifiées :
  • : faible en ressource
  • : les envois ne sont effectués que pour certaines clients
    = : comme vu plus haut, le principe REST ne fonctionne pas de cette manière, il faut donc passer par des systèmes annexes.

Pour faire simple, NodeJS va te permettre de "garder la connexion ouverte" entre ton client et ton serveur. Il y a un tutoriel sur NodeJS pour un chat sur Grafikart. Je te conseille de le regarder, tu verras tout de suite si cela répondra à ton besoin ou non.

ladylain
Auteur

Merci pour les precisions tres bien expliqués :)

J'ai commencé a lire le Tuto de Grafikart, et j'avoue que cela me semble tres favorable à ce que je souhaite faire, cependant puis je me servir de NodeJs comme d'un serveur de Push ? ou est ce totalement different ?

Dans mon cas et d'apres ce que tu m'as décrit , j'ai bien compris qu'il me fallait un systeme qui s'adapterai a chaque joueur en particulier et seulement pendant le temps ou il est connecté, du coup, le push me semble etre une bonne idée .

Suis je dans la bonne logique ?

Il faut en effet partir sur du push. Je t'ai présenté les deux méthodes pour que tu comprennes bien le fonctionnement mais c'est le push la bonne réponse.

Pour NodeJS, tu peux l'utiliser de deux façons : soit tu fais toute l'application avec NodeJS, soit tu fais juste la gestion du push et tu l'intègres à autre chose (un framework par exemple).
Si tu as déjà commencé à coder ton application, tu peux dans ces cas là ne chercher qu'à intégrer la partie push avec NodeJS.

ladylain
Auteur

D'accord , Nous sommes en pleine réflexion apres avoir vu ce que peux faire NodeJs. Nous allons je pense dnas un premier temps l'integrer au jeu en tant que simple Push , mais au fur et a mesure du développement on avisera de si il faut s'en servir autrement. Ce sont a l'heure actuelle de nouvelle perspective qui s'ouvre a nous, puisque nous voulions en plsu integrer un chat ingame, et que NodeJS sait le gerer ( comme le tutoriel de grafikart le montre )

Merci à toi prbaron , tu as su repondre au mieux a mon probleme, je ne ferme pas ce topic, car si jamais j'ai besoin d'aide encore sur le sujet, je le ferai remonter !

Cordialement