JeuWeb - Crée ton jeu par navigateur
Heure client / serveur - 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 : Heure client / serveur (/showthread.php?tid=7272)

Pages : 1 2 3


Heure client / serveur - Prélude - 10-12-2014

Est-ce que vous tenez compte, dans vos jeux "temps réel", de la différence d'heure entre le client et le serveur ?
La différence pouvant venir du décalage horaire, ou tout simplement d'un serveur qui avance ou recule d'une ou deux minutes, par exemple.


RE: Heure client / serveur - niahoo - 10-12-2014

Perso j'ai pas de jeu en prod, mais oui, il faut que ce soit synchronisé. Si tu affiches une date à laquelle va se passer un évènement sur le client, au moment ou s'affiche 00:00:00, l'évènement doit avoir lieu côté serveur.

Je suppose que le temps Javascript dépend du temps sur l'OS du client. Du coup ça peut poser problème ce décalage, en effet.


RE: Heure client / serveur - Ioio - 10-12-2014

Le mieux est d'afficher l'heure du serveur sur toutes tes pages comme ça, pas de soucis...


RE: Heure client / serveur - Prélude - 10-12-2014

Ioio : C'est sûr que ça simplifie grandement la tache...
Mais ce n'est pas forcément le plus sympa pour un utilisateur. 8 heures de différence avec la côte Ouest des États-Unis. Si un évènement doit se passer à 8 heure du mat, les joueurs doivent se lever à minuit (enfin, doivent rester éveillés...). Alors qu'en France, les joueurs pourront se la couler douce.
Après, entre le temps enregistré dans la base et le temps affiché, cela pose des problèmes : un évènement doit se passer à 13h15 (heure serveur), vous affichez quoi pour le joueur ? "13h15 heure serveur" en espérant que le joueur connaisse l'heure du serveur ?! On le laisse faire le calcul ?!

Vous n'avez jamais été confronté à ce type de problématique ?
Va falloir que j'écrive un article à ce sujet tiens...


RE: Heure client / serveur - Ioio - 10-12-2014

Oui ben c'est le jeu XD
Heure du serveur, point !
Si les joueurs vivent à 8heures de décalage qu'il en soit ainsi Smile
Ou alors, tu détècte le fuseau horaire du joueur, tu le stock, et tu sépare tes joueurs toutes les 3h de décalage. Aisnsi, il n'y aura pas interaction entre les joueurs de pays différents. Ou encore, tu crées un monde pour chaque pays Big Grin
Et afficher l'heure du serveur sur chaque page peut vraiment être pratique et au pire, tu l'adaptes au fuseau horaire en fonction de ce que je viens de dire Wink


RE: Heure client / serveur - Thêta Tau Tau - 10-12-2014

Je suis confronté à ce problème pour les ressources en temps réel, les comptes à rebours, et l'indication des actions possibles ou pas sur l'interface en fonction du stock de ressources (en temps réel aussi, genre le bouton "améliorer le bâtiment" change de couleur à la seconde où le joueur a assez de ressources).

En première approximation, mon client demande la date au serveur (via websocket), comme ça j'ai la différence entre les deux, et je peux corriger la date côté client. C'est tout con et ça marche pas trop mal.

Après je suppose qu'on pourrait améliorer ça en prenant en compte le ping/lag, en vérifiant de temps en temps que la différence client/serveur n'a pas bougée etc. Mais bon pour l'instant j'ai pas envie de me casser la tête là dessus (s'il y a 0.5 secondes de décalage c'est pas un drame).




Je me suis pas encore trop penché sur le problème des timezones, mais dans tous les frameworks que j'ai essayé il y avait des fonctions pour les gérer (nativement ou via une extension). Du coup ça me semble pas trop dur de faire en sorte que chaque client ait l'heure dans son fuseau horaire.

Après ça peut toujours poser problèmes dans les communications entre joueurs, genre si un Français dit à un Québécois qu'il va se faire attaquer à 13h15 et qu'il a besoin d'aide, avec le système ou chacun voit l'heure dans sa timezone, le Québécois risque d'arriver après la bataille. Du coup indiquer l'heure du serveur à tout le monde me semble une option viable aussi, ou sinon indiquer les deux heures pour ceux qui sont pas dans le fuseau horaire du serveur.


RE: Heure client / serveur - Argorate - 11-12-2014

(10-12-2014, 01:03 PM)Prélude a écrit : Est-ce que vous tenez compte, dans vos jeux "temps réel", de la différence d'heure entre le client et le serveur ?
La différence pouvant venir du décalage horaire, ou tout simplement d'un serveur qui avance ou recule d'une ou deux minutes, par exemple.

Oui, j'affiche l'heure du serveur en haut de DVO et non l'heure local.
Je passe au JS l'heure du serveur, donc il y a bien sur un mini-décalage le temps de chargement mais c'est léger quand la page est en cache.

On pourrait faire des choses plus poussé en synchronisant via websocket.

PS: j'ai des joueurs canadiens entre autres, et j'ai jamais eu de remarque à ce sujet, au contraire je pense que définir "rendez-vous à 16h" en synchronisant et donc mettant tout le monde d'accord sur quel "16h" on parle, clarifie et harmonise pour tout le monde.


RE: Heure client / serveur - Xenos - 11-12-2014

Et pour faciliter les choses, en se basant sur l'heure serveur et rien d'autre, on peut envisager d'afficher en info-bulle l'heure locale équivalente, non? Smile

Type:
Rendez-vous le [18/12/2014 à 15h] → infobulle "Local date (Japan): 19/12/2014 2h"

Ainsi, tout le monde est calé sur l'heure du serveur (astuce: changer le système de datation et créer un calendrier fictif dicté par le serveur, pour limiter les embrouilles entre temps IRL et temps IG) mais tout le monde a aussi la date locale pour pouvoir noter ses rendez-vous.


RE: Heure client / serveur - Argorate - 11-12-2014

oui, c'est un bon compromis (moi j'ai un peu la flemme de le faire j'avoue :p)


RE: Heure client / serveur - Ioio - 11-12-2014

Oui ou alors pour gagner du temps, justement, ne faites rien ! XD
C'était une petite blague !
Je pense que tout a été dit... Si ce n'est de laisser le joueur s'organiser lui-même sans lui donner une date et heure précise juste des comptes et décomptes (sous forme, "il y a x secondes" puis "Il y a x jours" ou "dans x secondes" et "dans x heures") Et laisser la magie de l'interaction pour que les joueurs découvrent eux-même que leurs voisins sont à l'autre bout du monde Smile