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

Pages : 1 2


systeme de tour - lecodeur - 09-11-2007

Bonsoir, voila je vais exposer mes questions succesivement le plus clairement possible.

je voudrais que toutes les heures via timestamp (sa c ok pour les if,elseif...) le serveur sql verifie pour chaque membre via les id le nombres de chaque bats et qu'il attribue a chaque membre sont nombre de ressources par rapport a son nombre de bats.
ex: si il as 2 carriere, 3 zone de bucherons et 2 mines d'or qu'il gagne: 48 de pierre, 144 de boiset 96 d'or, mais seulement ce joueur.

le serveur devrais realiser cette opperation de verif pour chaque membre et attribuer a ceux ci leurs ressources.

Une MAJ serai fais tte les 4hs ou en plus des calculs de ressources il si ajoutera le deplacment des points en attente de chaque membre vers son capital de point perso.

Comment effectuer ces verif rapidement tout en evitant un mal de tete au serveur sql ?

Merci d'avence, Tym.


RE: systeme de tour - V1nc3 - 09-11-2007

Avec une boucle qui passe en vue toute ta base de données.
while ( un_membre)
{
je verif carriere et je donne ressource
je verif bucherons et je donne les boiset
etc...
}//et je passe au membre suivant


RE: systeme de tour - Loetheri - 09-11-2007

Pourquoi ne pas attendre que le joueur se connecte ? -_-'


RE: systeme de tour - phenix - 09-11-2007

Citation :Pourquoi ne pas attendre que le joueur se connecte ? -_-'

Imaginons qu'il crée un système de "pillage" ? Les ressources doivent être update en temps réel dans ce cas la.

Phenix


RE: systeme de tour - Loetheri - 09-11-2007

Euh ... Tu mets à jour les ressources avant de calculer le pillage.

Ah ah !


RE: systeme de tour - Kheldar - 09-11-2007

alors de ce que je comprend, il y a plusieurs choses à étudier :

- une tache (qui pourrait être de type "cron") mettant à jour tous les joueurs toutes les 4 heures
- différentes actions qui obligerait ce recalcul.

Je suis d'accord avec Loetheri, quand il dit que les ressources doivent être recalculées au debut de l'attaque (au moment ou l'impact a eu lieu).

La soluce de V1nc3 répond un peu plus à la demande, mais il faudrait l'améliorer (c'est mon avis).

Première question :
- Toutes les 4h, tu souhaites rafraichir toutes les ressources de tous les joueurs, ou seulement ceux qui n'ont pas été rafraichient depuis 4h ?

En effet, supposons 200 ou 300 joueurs. A bout de 4h, toutes les ressources sont recalculées (donc pour 200 ou 300 personnes). si ton calcul de ressources n'est pas trop complexe (ne prenant pas en compte les saisons, et autres facteurs), ca peut-être jouable, sinon cela risque demander beaucoup de ressources au serveur et donc de ramener un peu plus.

J'ai utilisé un système de calcul de ressources. Je l'appelle au bout d'un certain delai.
Pour ce faire, j'ai créer un champ dans ma table ressources qui s'appelle lastupdate (dernière mise à jour des ressources).

Dans la page listant l'ensemble des royaumes, c'est un script qui ressemble à cela :
$requete = mysql_query('select * from ressource where lastupdate < '.time().' - 15200);
$num = mysql_numrows($requete);
for ($i = 0; $i < $num ; $i ++)
{
calcul_ressources($royaume_concerne);
}

De ce fait, je n'ai qu'une partie des personnes qui est rafraichit (donc moins de ressources consommés). La page étant visualisé assez régulierement, l'ensemble des joueurs est rafraichit assez régulièrement.


RE: systeme de tour - Loetheri - 09-11-2007

Euh ... Si je tiens à faire comprendre que l'utilisation du cron n'est pas obligatoire, c'est pour éviter au maximum les ennuis dus à la surcharge (que ce soit à 4 heures du matin ou non). Mais également pour éviter quelques problèmes au niveau de la sécurité (car faire appel à un service externe, c'est toujours donné la possibilité qu'une personne extérieur accède à la page).

Cela dit, cette question a déjà et déjà et déjà été discutée (et rediscuté et rediscuté) ^^


RE: systeme de tour - V1nc3 - 09-11-2007

Hmmm, j'ai un peu l'impression que tu as pas lu les messages -_-


RE: systeme de tour - lecodeur - 09-11-2007

enfait, tous les joueurs (pour le moment 45) connectés ou pas devrons etre mis a jour en meme temps toutes les heures, puis toutes les quatre heures ils doit y avoir un maj et une MAJ(la MAJ etant le calcul des ressources et des points comme exposer dans le sujet. je voudrais comment faire ma requete de while ? comme ce ci ?:
Code PHP :
<?php 
$req
= mysql_query('SELECT * FROM member WHERE id_mem');
$req2 = mysql_fetch_array($req);

while(
$req2)
{
// mes calculs
}
comment le serveur va selectionner les differents membre selon leur id ?


RE: systeme de tour - Loetheri - 09-11-2007

Est-ce obligatoire que tes comptes soient mises à jour ? Est-ce que cela change tout dans ton jeu ? Est-ce que le jeu perd toute son importance sans cela ?

Si tu me dis "oui" à tout avec une conviction plus grande que n'importe quelle croyance, alors oui dirige toi vers un cron.
Si tu me réponds ne fuse que non à une seule question, passe par un système moins complexe et plus sûr.

Sinon tu fais ta requête et puis tu spécifies dans le WHERE les données que tu as récolté dans ta requête $req.

Edit : Comme ça, Lex est content :p