JeuWeb - Crée ton jeu par navigateur
[Résolu] Gérer les tours dans un jeu tour par tour - 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 : [Résolu] Gérer les tours dans un jeu tour par tour (/showthread.php?tid=418)



[Résolu] Gérer les tours dans un jeu tour par tour - emaia - 26-06-2008

Bonjour à tous,
Voila je suis en train de créer un jeu tour par tour intégralement en PHP (tout du moins pour la partie du gameplay) dans la lignée des AOE et je me heurte finalement à un problème de taille. Je ne sais pas comment gérer les tours, par exemple tout les 5 heures.
Je souhaiterais donc que la base soit réinitialisée et que les joueurs puissent effecruer leurs actions.
C'est pourquoi je m'en remet maintenant à vous, merci d'avance.


RE: Gérer les tours dans un jeu tour par tour - My Hotel - 26-06-2008

Ben c'est assez simple, t'as pour moi deux méthode :
1. A chacune de leurs connexions, tu vérifie que 5 heures se sont écoulées, et tu les autorise. Sinon, tu leur dit d'attendre
2. Ou alors tu créé un cron qui va s'occuper de ça toutes les 5 heures...

Voilà ce que j'en pense, mais y'a surement d'autres meilleures solutions...

Bye


RE: Gérer les tours dans un jeu tour par tour - emaia - 26-06-2008

Je te remercie de ta réponse.
Le problème de la solution n°1, c'est que la date du prochain tour ne pourra pas être automatiquement changée. Je m'explique :
Admettons je lance mon jeu à 0h00 le prochain tour se situera donc à 5h00, je rentre par exemple cette information dans la BDD pour qu'elle soit accessible à tous et à toutes, mais qu'est ce qui va faire qu'à 5h00 la BDD va être modifier pour indiquer 10h00 (heure du prochain tour) et ainsi de suite ?.
Je vais donc me pencher sur la question du "cron" et ne sachant pas du tout ce qu'il en est, je vais allez me renseigner.
Si vous avez d'autres suggestions...


RE: Gérer les tours dans un jeu tour par tour - saluki - 26-06-2008

pour faire rapide:

1) Le lien : http://wcron.nainwak.org/

2) La méthode : tu execute avec le cron un fichier php qui feras toutes les opérations nécessaire sur ta BDD Wink


RE: Gérer les tours dans un jeu tour par tour - emaia - 26-06-2008

Je te remercie, c'est tout à fait ce qu'il me fallait.


RE: Gérer les tours dans un jeu tour par tour - Eluox - 26-06-2008

En sachant que les cron gratuit ne sont pas super fiables bien sur :/


RE: Gérer les tours dans un jeu tour par tour - keke - 27-06-2008

La solution 1 me semble la meilleur.

Si arbitrairement tu passes de 5h à 6h ... tu n'as plus qu'une règle de gestion très simple ...

kéké qui n'aime pas les solutions Crontab quand il peut les éviter.


RE: Gérer les tours dans un jeu tour par tour - saluki - 27-06-2008

Le choix entre les deux solutions dépend surtout de ce qui se passe dans chaque tour.

Cas 1 : tous les tours, tout les monde ce tape dessus, de l'or et des points sont distribué -> Crontab

Cas 2 : Tout les tours, la réserve de ressources augmente de X points -> gestion timespan avec bdd.

Cas 3 : Tout les tours, la réserve de ressources augmente de X points mais si tu te fais attaquer entre temps on peut te piller tes ressources -> Crontab ou gestion timespan compliquée Smile

faut vraiment voir qu'elle est l'utilité du tour par tour et ce qui doit être fait. Ainsi que le nombre de calcul que tu devrais faire dans une et l'autre solution. Reprenons le cas 3 : s'il n'y a que de rare attaque de pillage entre chaque tour, le calcul avec timespan peut être bon. Maintenant, s'il y a un risque d'avoir des pillages toutes les 5 minutes, le crontab me semble meilleur Smile


RE: [RESOLU]Gerer les tours dans un jeu tour par tour - Argorate - 29-06-2008

Personnelement je ne te conseil pas du tout un cron, étre dépandant d'un autre site, si jamais se dernier plante ou quoi, ton jeu ne tournera plus non plus. Enfin personellement je préfere etre indépendant.

Pour la solution 1, il suffit de stocker en bdd le time() du dernier tour passé, tu as donc la date du dernier tour et tu connais la duré entre deux tours, partant de là c'est simple, il suffit de convertir le time_du_dernier_tour en heure et de faire +5, ensuite tu le compares avec un time() (convertir en heure aussi) au moment où le joueur charge la page, si + de 5h sont passé alors tu peux changé de tour, faire les modif qu'il faut, et mettre a jour le time_du_dernier_tour en BDD..


RE: [RESOLU]Gerer les tours dans un jeu tour par tour - emaia - 29-06-2008

Salut et merci pour toutes vos réponses,
Sachez que j'en prend note et qu'elles vont sûrement m'être utilie.
Cordialement, emaia.