IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NodeJS Discussion :

Jeu tour par tour


Sujet :

NodeJS

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 41
    Points : 79
    Points
    79
    Par défaut Jeu tour par tour
    Bonjour à tous,

    Je tiens à vous faire part d'un problème que je me pose depuis 2 jours. Je suis actuellement en train d'imaginer sur papier un projet, et qui me pousserait à utiliser des technos que je ne connais pas très bien.

    Il s'agit d'un jeu tour par tour, (genre bataille navale ou pictionary), que j'aimerais faire en HTML5/JS (pour l'instant je penche pour Node.js).

    Le problème c'est que je suis à l'origine plutôt orienté Java, et j'ai l'habitude de travailler avec des threads, ce qui me permet d'imaginer mes applications plutôt simplement, mais là avec Node.js et le javascript en général je bloque.


    J'ai déjà utilisé Node.js pour faire un système de chat multi-salles. Et cela fonctionnait très bien. Sauf que là, le projet s'avère légèrement plus compliqué.

    Alors voilà, j'aimerais faire en sorte qu'il y est à l'image de plusieurs salles pour un chat, plusieurs parties en cours.

    Par exemple, le joueur N°1 se connecte au site, et décide de créer une partie. La partie s'ajoute dans une liste, et le joueur N°2 se connecte et décide de joindre cette partie.
    Pendant ce temps, le joueur N°3 a quant à lui lancé une autre partie, et le joueur n°4 l'a rejoint.

    Ce que j'ai du mal à me représenter, est que sachant que à la connexion du joueur n°2 par exemple, la partie se lance, et donc le joueurs N°1 a 5 minutes pour jouer puis c'est au joueur N°2.

    Je pense que je devrais pouvoir lancer une sorte de timer sur le client joueur n°1, qui une fois terminé, recontacta le serveur qui lancera un timer sur le client du joueur n°2 (ça sera à lui de jouer).

    Sauf que si je fais cela, comment faire si j'ai besoin que le JS réagisse directement lors des évènements de la souris par exemple ? Cela fonctionnerait ?

    De plus il me semble que setTimeout() ne fonctionne pas toujours (pour le timer côté client), est-ce le cas avec Node.js ?

    Comment auriez-vous procédé ?
    Pensez-vous que les outils sont les bons pour ce projet ?

    Merci

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 139
    Points : 171
    Points
    171
    Par défaut
    Je pense que tu devrais plutôt gérer les timers coté serveur. Lors du début d'un tour, tu enregistres le timestamp de fin d'action et toutes les X secondes, une tâche Cron regarde les timestamp dépassés et effectue une action le cas échéant (bloquer les futures actions du joueur 1, autoriser le joueur 2 etc.).
    Pendant ce temps, le client Javascript fait des appels Ajax sur le serveur pour savoir si c'est à lui de jouer. Si c'est à lui, le serveur lui renvoi un certaine réponse et la vue change pour qu'il puisse faire des trucs.
    Rien ne t'empêche au début du tour de lancer un timer en Jabascript qui informe le(s) joueur(s) du temps restant.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 34
    Points : 68
    Points
    68
    Par défaut
    d'accord avec bewidia, toute la logique du code doit etre cote serveur, car tout ce qui s'execute chez le client est bidouillable. donc juste de l'informatif cote client. et les variables de session (cookie) pour identifier les clients.
    C'est evidemment plus facile a penser avec des threads. Mais dis toi que c'est pareil. Si c'est plus facile tu peux te recreer un environnement similaire:
    en creant une structure de donnnes par client (que tu stockes sur le serveur et pas dans les cookies hein), t'auras le meme environnememnt que les threads. (je ne sais pas si j'ai ete tres compréhensible).
    Et dernier point: concernant la communication client-serveur.
    ce que tu cherches, ce dont tu reves ^^ ce sont les WebSockets a travers le module socket io. et surtout pas AJAX.
    en gros le fonctionnement d'Ajax:
    le joueur 2 afin de savoir si le joueur 1 vient de jouer, doit demander au serveur (envoyer des requetes) toutes les demi secondes (car le serveur ne peut pas de sa propre initiative envoyer des messsages au client, AJAX est unidirectionnel, Donc usage exagerer de bande passante.
    Fonctionnement des WebSockets;
    Le joueur 2 afin de savoir si le joueur 1 vient de jouer, va tranquilement attendre que le serveur lui envoie un message sans envoyer de requetes, donc economie de bande passante. et ca c'est possible car les WebSockets sont bidirectionnelles. et avec Socket.io c'est un jeu d'enfants.
    En bref html5 + Node.JS = Socket.IO
    desole pour les accents, je suis sur un clavier qwerty.

Discussions similaires

  1. Jeu de role tour par tour
    Par Miistik dans le forum PC
    Réponses: 27
    Dernier message: 09/09/2014, 17h26
  2. Réponses: 3
    Dernier message: 25/08/2014, 16h46
  3. [Projet en cours] I:NVY jeu de stratégie en tour par tour
    Par r0d dans le forum Projets
    Réponses: 9
    Dernier message: 19/05/2011, 17h15
  4. Jeu de Stratégie tour par tour en Java
    Par Thommas dans le forum Général Java
    Réponses: 13
    Dernier message: 30/04/2007, 17h00
  5. [AJAX] ASOW : Jeu d'action/stratégie au tour par tour développé en AJAX
    Par Gray_Fox dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/04/2007, 09h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo