JeuWeb - Crée ton jeu par navigateur
NodeJs et actualisation - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : NodeJs et actualisation (/showthread.php?tid=2732)



NodeJs et actualisation - Lain - 08-02-2013

Bonjour a tous !

Cela fait pas mal de temps que je ne suis pas revenu sur ce forum, tout simplement car j'avais quitté la réalisation des jeux par navigateur.

Toutefois récemment, j'ai rejoins une équipe avec qui nous travaillons d'arrache pied sur un une sorte de MMOSTR par navigateur a la manière d'un ogame like.

nous en sommes arrivé au point ou nous voudrions faire actualiser certaine données sur la page en cours de visualisation par le joueur et ce de manière totalement fluide et sans pour autant gaspiller les ressources serveur avec de l'ajax. Nous en sommes donc venu à nous tourner vers NodeJs, cependant sans grand résultat.

Pour vous donner un exemple, nous affichons une div sur la page batiments du joueur qui permet d'afficher les constructions ou upgrades en cours.
Nous voudrions donc afficher un timer ( compte a rebours ) du temps restant avant la fin de l'action ainsi qu'une progressbar se remplissant d'elle meme.
Et enfin que si le timer arrive a zero et que la progressbar arrive a 100%, l'action disparaisse et que le batiment s'affiche dnas la liste des batiments construits ou que le niveau du batiment change en conséquence.

auriez vous une petite idée sur la maniere d'operer ?

cordialement

Lain


RE: NodeJs et actualisation - Sephi-Chan - 09-02-2013

Du Javascript exécuté côté client suffit amplement pour faire ça dès lors que tu sais quand la construction a débuté et quand elle va s'achever. Aurais-je moi mal compris le problème ?


RE: NodeJs et actualisation - Lain - 07-10-2013

Alors tout d'abord Merci Sephi-Chan pour cette reponse. Notre codeur n'est pas parti sur cette maniere de faire et a preferé au depart, faire tout avec NodeJS. Malheureusement après quelques mois et une augmentation de l'activité ingame, la charge du serveur a commencé à augmenter incroyablement. Il a donc fallu revoir le systeme pour l'optimiser,nosu sommes donc parti sur le meme principe que tu expliques.

Nous lancons l'action en ajax , la barre de progression s'active coté client et une fois fini, elle envoi un message a NodeJS pour qu'il acutalise les données du joueur.

merci


RE: NodeJs et actualisation - Th3conc3pt3ur - 07-10-2013

Oui c'est comme ça que Ogame fait d'ailleurs c'est pour ça pendant un moment sur leur version si on lancer une amélio et qu'on restait sur la page le compteur passait en négatif Wink


RE: NodeJs et actualisation - GeGe_KAT - 07-10-2013

Je pense qu'il voulait dire de le faire en JS sans appel NodeJS au serveur.

Si c'est que pour l'affichage : Pourquoi ne pas récupérer en même temps que la page de base la div "construction terminée" que tu souhaites afficher une fois que la construction est faite (la garder en display none qq part).
En JS : une fois ton temps écoulé, tu ne fais qu'un remplacement de la div de construction par la div "construction terminée". Pas de communication avec le serveur, et si l'utilisateur rafraichit sa page une fois que la constrution sera terminée, il obtiendra la même page visuellement.

(Un peu bidouille, certes, mais ça peut être une première version fonctionnelle.)


RE: NodeJs et actualisation - Aedius - 16-01-2014

Citation :Malheureusement après quelques mois et une augmentation de l'activité ingame, la charge du serveur a commencé à augmenter incroyablement.

tu veux dire qu'un truc du genre était trop lourd ?

Code :
setTimeout(endBluiding, 3600, construct, pos);

avec
function endBluiding( construct,pos) {

   // enregistrer en bdd la construction

   game.emit('constructFinish',construct, pos)
}

si c'est le cas, ton retour m'aiderait grandement.