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

Langage PHP Discussion :

[Petit jeu] Synchronisation?


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [Petit jeu] Synchronisation?
    Bonjour,

    Je ne sais pas si je suis dans la bonne section, j'espère ne pas me tromper, si c'est le cas je m'excuse à l'avance

    Que j'explique, je me suis lancer actuellement dans le développement d'un petit jeu en PHP, domaine que je n'avais encore jusque la pas abordé.
    Je rencontre un problème face à un besoin que je n'ai encore jamais rencontré, à savoir une sorte de synchronisation entre plusieurs joueurs, je m'explique par un exemple :

    Imaginons que 4 personnes se connectent à un site pour jouer à la bataille (le jeu de carte hein ! ), on aura un lien "jouer carte" permettant de jouer une carte sélectionnée dans une liste, puis c'est aux autres joueurs, jusqu'à la fin du tour, ensuite calcul de la carte la plus forte, et gain de ces cartes pour le vainqueur.

    Et je ne sais pas du tout par quel bout le prendre pour arrivé à un résultat.. j'ai pensé à une solution qui serait d'avoir une BDD à coté qui stockerai les cartes jouées et une fois que 4 cartes sont inscrites (condition vérifié dans la boucle enregistrant les cartes disons) faire le calcul du vainqueur et hop on efface les cartes de la bdd.

    en gros me servir de la BDD comme "lien" entre les joueurs qui aurait leur affichage mis à jour dynamiquement avec l'aide de la bdd. (il faudrait même stocker le vainqueur dans la bdd pour ma solution d'ailleurs...)

    Mais je me dit que cela risque être très lourd pour la BDD dans la mesure ou on stock des informations qu'on efface peu après, et qu'en imaginant que 40 joueurs sont présents sur le site, et que 10 parties se lancent en même temps, on aura 40 requêtes sql pour insérer les données (une par joueur), 4 requête pour effacer le tour (une par partie), 4 requêtes pour enregistrer le gagnant dans la liste des derniers gagnants...

    Au final ça fait beaucoup de requêtes simultanées...


    Voilà j'espère avoir été clair sur ce que je cherche à faire, en gros faire circuler des informations entre plusieurs joueurs, en ayant des informations qui resteront temporairement mais visible de tous (le must serait que chaque visiteur puisse visualiser les dernier tours de carte des parties en cours), et des informations moins temporaire comme le gagnant des tours (la bdd fait l'affaire pour cela si il n'y a que ça).

    Ah également je cherchais le moyen de faire une mise à jour journalière pour par exemple déplacé la liste des gagnants des parties de cartes dans une autre table qui représenterai les gagnants de la veille, chaque jour à minuit en gros (cela me permettrai d'attribuer un nombre de point aux gagnants en fonction du nombre de partie gagné, nombre de points qui varie en fonction des "performances" des différents joueurs du jour donc pas possible de faire un nombre de points fixe par partie gagné et ainsi mettre à jour un classement des meilleurs joueurs).

    Maintenant ma solution me paraissant bancale j'imagine qu'il doit exister d'autres moyens d'arriver à ce résultat, d'ou mon post aujourd'hui pour vous demander de l'aide

    Merci d'avance à tout ceux qui répondront à mon message

  2. #2
    Membre averti Avatar de mdr_cedrick
    Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2008
    Messages
    374
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Janvier 2008
    Messages : 374
    Points : 336
    Points
    336
    Par défaut
    ah mon avis (pas forcément le meilleur) la BDD est inévitable
    du coup toutes les requêtes le sont également.

    Je pense qu'il faudrait avoir un petit ajax qui tourne en boucle derrière (par exemple toutes les secondes) et qui va afficher à l'écran ce qui a été fait

    par exemple joueur 1 pose une carte et pour tout le monde, 1 sec après, la carte apparaît (elle aura été enregistrée préalablement dans la BDD)

    Je ne sais pas si ça va beaucoup t'aider mais c'est une piste à explorer

    Bon courage pour la suite

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci d'avoir pris le temps de me répondre

    Oui ça pour l'actualisation d'une page ouverte j'ai trouvé des scripts ajax (bien que je ne soit pas très calé en ajax), et c'est aussi faisable en javascript d'ailleurs.

    Mais en ce qui concerne la BDD, il ne risque pas y avoir de problème si elle reçoit trop de requêtes en mêmes temps?

    Si d'autres personnes ont des idées

  4. #4
    Membre averti Avatar de mdr_cedrick
    Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2008
    Messages
    374
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Janvier 2008
    Messages : 374
    Points : 336
    Points
    336
    Par défaut
    de toute façon c'est inévitable de passer par là dans ton cas

    si la personne X sur le pc1 fait une action, le seul moyen pour la personne Y sur le pc2 de voir cette action c'est qu'elle soit enregistrée quelque part. Donc une BDD
    Ensuite à toi de voir le nombre de connexion simultanée sur ta BDD, d'ouvrir et fermer une connexion seulement quand il y a requête et non pas la laisser constamment ouverte.

Discussions similaires

  1. Aide pour concevoir un petit jeu en C
    Par samy100 dans le forum Projets
    Réponses: 11
    Dernier message: 30/10/2019, 11h22
  2. Petit jeu multijoueur en ligne (commençons simple lol)
    Par Archaoniro dans le forum Langage
    Réponses: 25
    Dernier message: 24/03/2006, 18h31
  3. Petit jeu en java
    Par Seth77 dans le forum 2D
    Réponses: 80
    Dernier message: 08/01/2006, 23h01
  4. Nombre aléatoire (petit jeu)
    Par niCo.nb dans le forum C
    Réponses: 7
    Dernier message: 14/10/2005, 19h55

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