JeuWeb - Crée ton jeu par navigateur
Méthode de 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 : Méthode de tour par tour (/showthread.php?tid=3420)

Pages : 1 2


Méthode de tour par tour - infradmin - 12-12-2008

Bonjour à tous,

Dans un jeu qui fonctionne en tours par tours, je réfléchie à une methode pour par exemple redonner tout les PA à intervalles regulier (toutes les 12 heures par exemple), la seule méthode valide que j'ai trouvé consiste à faire une tache cron sur mon serveur qui execute un script PHP afin de mettre chaques utilisateur à jour et lui redonner sa valeur maximum en PA.

Je trouve cette solution lourde et pas super fiable... Connaissez vous d'autres méthodes?

Nicolas


RE: Methode de tours par tours - Findel - 12-12-2008

Tu peux trouver des éléments de réponses dans ce sujet : Comment exécuter des tâches journalières.

Mais peut-être que dans ton cas, tu pourrais aussi imaginer de donner les PAs à tes joueurs lors de leur connexion ou lors d'une visite d'une page ?


RE: Methode de tours par tours - infradmin - 12-12-2008

Merci de ta réponse je vais étudier ca de prés!

Bonne continuation,

Nico


RE: Méthode de tour par tour - SeigneurMartin - 13-12-2008

La tâche CRON est la meilleure solution !

En effet, si la mise à jour se réalise lors de la connexion d'un joueur, tu as deux solutions :
- La mise à jour se réalise pour tous les joueurs. A ce moment, le pauvre joueur qui se sera connecté va attendre très longtemps pour voir sa page (une mise à jur de 2000 joueurs met du temps...). De plus, il risque d'être tenté de réactualiser en se disant "ça met bien longtemps aujourd'hui à charger !", créant alors une interruption dans la mise à jour, soit des problèmes à gogo (fausses valeurs, pas de mise à jour du tout)...
- La mise à jour juste pour le joueur qui se connecte. Cependant, si le profil des autres joueurs ne sera pas à jour : le joueur provoque un duel avec un autre joueur dont les PV n'ont pas été remit au max parce qu'il ne s'est pas encore connecté aujourd'hui...

Bref, l'avantage de la tâche CRON, c'est l'automatisme. Certes, ça peut être lourd (pas plus que la mise à jour de tous les joueurs lors de la connexion) mais tu peux la lancer à des heures de faible fréquentation.
De plus, tu ne peux pas avoir d'autres problèmes que les erreurs qu'il y a das ton script. J'insiste sur ce point, car donner la "possibilité" à un joueur de remettre à jour lorsqu'il se connecte est une faille (il suffit d'appuyer plusieurs fois sur le lien mennant à la page qui contient le script de mise à jour et vive le résultat !).


RE: Méthode de tour par tour - infradmin - 13-12-2008

Bonjour,

Oui effectivement je suis de ton avis Seigneur Martin de plus sans cron ca oblige à effectuer une énième verification/requete à l'affichage d'une page... Je reste sur cette solution du cron avec un wget pour le lancer.

A votre avis sur un serveur dédié type Dedibox avec donc une bonne bande passante (90/100mbits up and down) combien de joueur peuvent jouer au maximum sachant que mon jeu stocke uniquement du varchar et des int (120go de stockage).

Nicolas


RE: Méthode de tour par tour - blaster59 - 13-12-2008

j'ai une autre solution si tu veux pas passez par Cron :

tu fais un script qui calcule la différence que tu lui dois :

ex : il gagne 6 pa / heure .

il s'est déco 2 heure , tu lui donne 12 pa (ok pour le moment rien de sorcier)

MAIS SI QUELQU UN VA SUR SON PROFIL C EST PAS A JOUR ?

Si : quand il va sur sa page , tu fais le meme script que si il s'etait co , sauf que tu actualise pas dans ta table ^^

De même si un duel est lancé contre un joueur tu simule une connection du joueur attaqué (si j'ai pas été clair je dévelloppe)

j'attaque toto :
toto s'est pas connecté depuis 2h , et il dois regagner 4 pdv / heure

et ben quand j'attaque toto , tu lui rend 8 pdv , et tu met a jour à l'heure actuelle la derniere connexion de toto


Voila CQFF :hahahaha: en espérant t'avoir aider


RE: Méthode de tour par tour - infradmin - 13-12-2008

@blaster59

Salut,

Je ne suis vraiment pas contre l'utilisation ayant fais pas mal d'admin systeme dans la dernière boite ou j'ai bossé, je connais plutot pas mal ca, j'étais un peu dubitatif quand à l'éxécution d'un script php comme ca mais en faisant un wget avec l'option pour ne pas telecharger 20000 fois le script mais juste l'écraser ca me va.

Cependant je me demande vraiment jusqu'a combien de user mon serveur tiendra la charge...

Bonne journée,

Nicolas


RE: Méthode de tour par tour - Holy - 13-12-2008

Bête question, en quoi le crontab est un système lourd ?
:/

Je trouve que c'est justement un moyen d'alléger le code, de dispatcher des tâches bien précises en un seul point, plutôt que répartir cette même charge sur le nombre de joueurs qui jouent puisque sans crontab, le seul moyen est de checker en début de page si il faut faire une mise à jour éventuelle.


RE: Méthode de tour par tour - infradmin - 13-12-2008

(13-12-2008, 04:00 PM)Holy a écrit : Bête question, en quoi le crontab est un système lourd ?
:/

Je trouve que c'est justement un moyen d'alléger le code, de dispatcher des tâches bien précises en un seul point, plutôt que répartir cette même charge sur le nombre de joueurs qui jouent puisque sans crontab, le seul moyen est de checker en début de page si il faut faire une mise à jour éventuelle.

C'est pas le cron qui est lourd mais la taches qu'il aura à executé.

Nicolas


RE: Méthode de tour par tour - Holy - 13-12-2008

(13-12-2008, 04:13 PM)infradmin a écrit :
(13-12-2008, 04:00 PM)Holy a écrit : Bête question, en quoi le crontab est un système lourd ?
:/

Je trouve que c'est justement un moyen d'alléger le code, de dispatcher des tâches bien précises en un seul point, plutôt que répartir cette même charge sur le nombre de joueurs qui jouent puisque sans crontab, le seul moyen est de checker en début de page si il faut faire une mise à jour éventuelle.

C'est pas le cron qui est lourd mais la taches qu'il aura à executé.

Nicolas
Bah oui, mais ça ça ne change pas que tu utilises le cron ou pas.

Cette tâche, que tu la déclenches via le crontab ou en "simili" crontab, à priori, elle reste là même ^^

Le mieux, éventuellement, si tu as peur d'un engorgement (il faut déjà y aller pour engorger un cpu), tu répartis tes tâches sur plusieurs crons successifs.

Si y a qu'une requête à faire, c'est vraiment pas un problème. Personnellement, lors de mes crons, je fais:
- Requête d'update pour les pa
- Update des signatures dynamiques de tous mes membres
- Suppression de fichiers désuets
- Update des déplacements de bataillons + insertion dans une table si déplacement effectué.
- Écriture de fichiers cache après les updates
- Et pour finir écriture de statistiques ^^

Et jusqu'à présent, j'ai jamais eu de soucis Big Grin