JeuWeb - Crée ton jeu par navigateur
[reglé]Comment faire un temps de construction ? - 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 : [reglé]Comment faire un temps de construction ? (/showthread.php?tid=1755)



[reglé]Comment faire un temps de construction ? - Seals - 14-09-2007

Bonjour,

voilà je cherche depuis un moment comment faire pour créer des temps de construction, c'est à dire par exemple je demande la construction d'un batimement, et celui-ci est construie une demie heure plus tard.

Quelqu'un pourrais m'éclairer s'il vous plait ? ^^


Merci d'avance. Smile


RE: Comment faire un temps de construction ? - joshua - 14-09-2007

euuuuuuuuuuh facile.
Tu définis un timestamp dans une table "batiment en cours" dans ta base de données qui définit l'heure a laquelle il est fini d'etre construit.
Quand le gars lance la construction, le timestamp est mis en place. Quand il se connecte dans la section qui affiche les batiments, le serveur regarde ou ca en est, et si c'est bon, il dit que le batiment est construit ^^


RE: Comment faire un temps de construction ? - Seals - 14-09-2007

Merci ^^

J'avais pensé au timetamp,
mais ça pose un problème.

Car imaginons que le batiment est par exemple une usine que l'on monte au niveau 2 et qui est sensé produire des ressources toutes les heures,
Si le joueur lance la construction (10min par exemple) et qu'il se déconnecte avant la fin, s'il revient seulement le landemain, son usine aura produit durant son absence comme s'elle était toujours au niveau 1. :/


Après j'ai pensé faire quelque chose du genre sur toutes les pages :
mysql_query('UPDATE batiments SET bat_existe="1" WHERE time< "' . time() . '"');

Comme ça n'importe qui, invité ou membre qui afficherais la page mettrais à jour les batiments.

Mais le problème de tout à l'heure se pose, s'il n'y a personnes sur le site durant la nuit et que le dernier membre en ligne à lancé une construction avant de se coucher, celle ci ne prendra fin que plusieurs heures après ... enfin dès que quelqu'un viendra sur le site quoi ^^


RE: Comment faire un temps de construction ? - joshua - 14-09-2007

euuuuuuh. Je vais le dire:

MAIS TU ES FOU?!?

2000 joueurs qui se connectent en meme temps et qui clique, tu veux exploser ton serveur? ca fait 2000 requetes instantannément.....
a toi de faire en sorte que ton calcul de ressource prenne en compte la future evolution d'un batiment.
en gros quand le gars fixe son timestamp, le calcul des ressources est deja prévu, genre tu mets une colonne production, timestamp-futur et future-production qui te permet de faire une simple addition pour trouver la production de ressources!


RE: Comment faire un temps de construction ? - Harparine - 14-09-2007

Salut !

Visiblement, tu mets à jour les ressources à chaque fois que le joueur (ou un autre joueur qui le "sonde") se connecte. Pour tenir compte d'un upgrade ayant eu lieu depuis la dernière connexion du joueur, il suffit de récupérer le timestamp de fin d'upgrade (celui dont parlait joshua) et d'additionner le bonus de ressources avant l'upgrade avec le bonus de ressources après upgrade.

Exemple :

22h - Le joueur lance un upgrade sur un bâtiment de niveau 1 puis déconnecte.
5h - Fin théorique de l'upgrade. Le bâtiment est maintenant de niveau 2.
10h - Connexion du joueur (ou de toute personne qui accède à ses valeurs de ressources), on calcule le bonus de ressources depuis la dernière connexion :

de 22h à 5h, le bâtiment a produit des ressources au niveau 1 (10 unités par heure) => +70 unités.
de 5h à 10h, le bâtiment a produit des ressources au niveau 2 (20 unités par heure) => +100 unités.

On ajoute +170 unités au stock de ressources du joueur.


RE: Comment faire un temps de construction ? - joshua - 14-09-2007

J'vais finir par croire que je parle turc.
C'est exactement ce que 'jai ecrit mais en plus détaillé Sad
Ne serais-je pas clair?


RE: Comment faire un temps de construction ? - Harparine - 14-09-2007

Si, mais tu as posté avant la fin de mon message que j'ai quand même rajouté pour ne pas avoir écrit ça pour rien Smile


RE: Comment faire un temps de construction ? - Seals - 14-09-2007

Oki, merci à vous deux Smile


Citation :MAIS TU ES FOU?!?

Arf j'y avais pas songé !^_^
Tu viens de sauver un serveur ! :wowowow::wowowow:


RE: [reglé]Comment faire un temps de construction ? - denisc - 14-09-2007

C'est parti pour les 48 heures du Serveurthon Tongue