JeuWeb - Crée ton jeu par navigateur
Aide pour un système de salles pvp - 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 : Aide pour un système de salles pvp (/showthread.php?tid=6206)



Aide pour un système de salles pvp - Hirokoshi - 15-06-2012

Bonsoir,

J'étais entrain de réfléchir au fonctionnement du PvP de mon jeu. Sur mon jeu, le PvP consiste à combattre à 5vs5 dans des salles. Une salle sera créée toutes les dix minutes (grâce à une tâche cron) et chaque salle pourra accueillir 5 joueurs maximum.

J'ai déjà eu l'idée de recenser chaque salle dans une table SQL. Mais comment faire en sorte que le joueur est dans une salle entrain de combattre ? comment savoir lorsqu'il est mort ou lorsqu'il a gagné le round ? J'ai déjà pensé à créer une table qui ressemblerait à ceci :

- idPlayer => correspond à l'identifiant du joueur
- idSalle => correspond à l'identifiant de la salle
- life => le nombre de points de vies
- lastAction => la dernière action du joueur
- died => booléen pour vérifier s'il est mort
- win => booléen pour vérifier s'il est en vie

Vous pouvez m'aider à améliorer ce système en proposant vos idées ? Merci d'avance Smile


RE: Aide pour un système de salles pvp - Klhz - 15-06-2012

À mon sens une salle dans ta BDD doit être décrite genre un numéro de salle, taille, type, etc..

Et à coté de cela, que chaque joueur doit avoir un statut:
-en jeu si il y a le numéro de salle
-mort avec le numéro de salle
-inactif
Si il est en salle mais qu'il est le seul il est définit comme gagnant?

voila j'espère que cela t'aidera?


RE: Aide pour un système de salles pvp - Hirokoshi - 15-06-2012

Salut et merci d'avoir répondu !

Donc pour la table qui contient les salles, j'ai opté pour quelque chose du genre :

- id => le numéro de la salle
- taille => le nombre de joueurs actuellement dans la salle

Après pour le type de salle je ne trouve pas que cela soit nécessaire pour l'instant. Ensuite pour le statut des joueurs, je dois les ajouter dans la table qui contient les membres ? (là ou il y a le pseudo, l'email, password) ou dans une nouvelle table ? (ce que j'ai fait dans mon premier post)

Et pour finir, quand un joueur est seul dans une salle, le round est annulé !

Donc ma façon de faire est quand même bonne ?

PS : pense a voir tes mp sur le forum


RE: Aide pour un système de salles pvp - Sephi-Chan - 15-06-2012

Est-ce qu'un joueur doit pouvoir jouer dans plusieurs parties en même temps ? Si oui, tu as besoin d'une table de relation (entre une partie et un joueur) qui va stocker les informations du joueur pour cette partie. Si non, tu peux directement stocker les informations dans la table des joueurs.


RE: Aide pour un système de salles pvp - Hirokoshi - 15-06-2012

Ah non, le joueur pourra participer à une partie à la fois. Je vais pouvoir stocker les informations dans la table des membres. Sinon vous n'avez rien d'autre à dire concernant cette méthode ? tout va bien ?


RE: Aide pour un système de salles pvp - Klhz - 15-06-2012

Ta façon de faire est bonne oui! J'espère ne pas t'avoir embrouillé j'ai pas été très clair..

Disons que tu as une table Membres et une table Salle

Salle
- id => le numéro de la salle
- taille => le nombre de joueurs actuellement dans la salle

Membres
- idPlayer => correspond à l'identifiant du joueur
- idSalle => correspond à l'identifiant de la salle
- life => le nombre de points de vies
- lastAction => la dernière action du joueur
- statut: booléen 0 pour mort et 1 pour vivant
Si idSalle existe on regarde le statut: mort ou vivant
Si idSalle est inexistant, on ne fait pas attention au statut


Tu pourrait même faire:
- idPlayer => correspond à l'identifiant du joueur
- idSalle => correspond à l'identifiant de la salle
- life => le nombre de points de vies
- lastAction => la dernière action du joueur
Si idSalle existe on regarde life: positif = vivant et 0 = mort
Si idSalle est inexistant, on ne fait pas attention au statut


Par contre, de cette façon tu va devoir parcourir tout tes membres et réunir ceux de la même idSalle pour ensuite voir qui est mort et qui ne l'est pas... Tu ferais peut être mieux de faire le contraire?

Salle
- id => le numéro de la salle
(- taille => le nombre de joueurs actuellement dans la salle) deviens facultatif
- id_membres => les id's des membres en salle

Membres:
- idPlayer => correspond à l'identifiant du joueur
- life => le nombre de points de vies
- lastAction => la dernière action du joueur

Quand un joueur a sa vie qui arrive à 0 on le retire de la table Salle


RE: Aide pour un système de salles pvp - Hirokoshi - 15-06-2012

Personnellement je préfère la toute première méthode. Merci beaucoup pour votre aide !


RE: Aide pour un système de salles pvp - Ter Rowan - 16-06-2012

A mon sens il faut trois tables (voire 5)

Perso pour le personnage (aucune info sur la salle)
Salle pour la salle (aucune info sur les perso)

Et enfin perso_salle qui contient
Id salle
Id perso
Id equipe
Etat du perso
Derniere action (si c est uniquement la derniere action qui,compte, sinon une autre table)
(position, si il y a un sujet de position dans la salle)

La quatrième table serait une table décrivant es équipes (si on veut un nom, si on veut historiser , créer des scores, etc) sinon id equipe sert juste a savoir qui et avec qui, qui est contre qui

La cinquième table serait une table d historique des actions dans la salle : id salle, id perso, round, action
Cette table permet de faire des rapports, des calculs (ex combo) etc.. Elle n est pas forcement utile

Maintenant pourquoi trois tables et pas deux :

Ça permet d historiser, de faire des stats genre qui a combattu avec qui, combien de fois un perso a combattu, etc..
Ça sépare le combat du personnage (meme si on pourrait normaliser avec uniquement une table salle et une table perso, puisque un perso n est a un moment donné qu a un endroit)
Ça permet une meilleure evolutivite du jeu : a un moment ou un autre tu voudras plus d info, créer plus d info (genre pouvoir premium ubiquité qui permet d être dans plusieurs salles a la fois, etc..)
J arrive pas a corriger avec mon navigateur/iPad le dernier info doit être lu fonctionnalités


RE: Aide pour un système de salles pvp - Hirokoshi - 16-06-2012

Ah merci beaucoup pour ta contribution ! C'est vrai que séparer les tables facilitera le travail. Je pense que je vais faire comme ça Smile