JeuWeb - Crée ton jeu par navigateur
timestamp...quand tu nous fatigue... - 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 : timestamp...quand tu nous fatigue... (/showthread.php?tid=1630)



timestamp...quand tu nous fatigue... - Unenlagia - 23-08-2007

Bonjour tout le monde Smile

Je viens d'arriver sur le forum et j'ai une petite question a propos du php plus précisement par rapport au timestamp Confusediffle:

Je cherche a faire un jeu de startegie dans l'espace et...comment ??? sa s'apelle un ogame-like ??? euuuh...moi je compte ajoute mainte autre option que celle d'ogame :ange:

or je ne vois pas comment coder la production de ressource ...


alors euuuuh :heuu:

HELP ^^

historique des réponse que lon ma donné sur d'autre forum ( lisez sa pourrait vous éclairer :good: )
Citation :----------------------------------------
Parce que bon... pour l'instant tu travaille en local, mais à partir du moment où ce sera en environnement productif (en-ligne) il faut prendre en compte les temps de chargement....

ce que tu peux faire à la rigueur c'est de sauver quelquepart (BDD par exemple) un certain "budget" (on parle bien d'argent... ) et quand il à été actualisé la dernière fois, puis dans ton navigateur tu fais tourner le tout en JS, et au moment où tu à besoin d'argent tu laisse ton serveur (et qu'à ce moment là en PHP) calculer le "vrai" solde du "compte" en ajoutant la somme qui devrait s'y trouver en fonction du temps... bon programmé de façon basique ça implique qu'un joueur qui ne joue pas reçois quand mm de l'argen, donc à toi de éfléchire pour affinner la chose....

Sinon tu peux imaginer un système de sécurité avec AJAX par exemple...

Vala Wink




-----------------------



mémorise juste le timestamp de départ.

Par exemple il lance une construction, on mémorise le résultat de time() en base de données.
Quand il revient sur la page pour voir le temps qu'il lui reste, on se sert du timestamp mémorisé pour calculer et afficher le temps restant.

Si vous voulez que la construction soit validée sans que l'utilisateur ne se connecte (ou bien le salaire qui augmente ou je ne sais quoi d'autre), il faut un script qui s'exécute toutes les secondes (ou un peu plus si le serveur ne tient pas la route). Pour ça il faut éditer la crontab du serveur.



------------------------------------


Et ben tu prends le timestanp à un moment donné et tu l'enregistres ou bon te semble. Mettons qu'il vaille 155684426.

Ensuite, quand l'utilisateur/joueur reviens sur son compte, tu prends le timestamp actuel et tu fais la soustraction. Mettons qu'il vaille 155684996.

Fin - Début = 155684996 - 155684426 = 570
Tu n'as plus qu'a multiplier ce nombre par deux


---------------------------------------



l'utilisateur valide "je veux construire tel batiment".
La, tu fais $depart = time();
Tu mémorises $départ.

Au retour de l'utilisateur, tu fais time() - $depart. Ce résultat est un nombre de secondes à convertir, et il correspond au temps écoulé. Tu en fais ce que tu veux ^^


Pour le script automatique, pareil, il fait la différence entre time() et $depart. Si cette différence est égale à X heures (le temps de construction nécessaire), alors tu valides la construction.

Pour exécuter un script de manière périodique, il faut éditer un tableau du serveur, qui s'appelle "crontab". Je te laisse faire quelques recherches la dessus.

Si tu n'as pas la main sur le serveur, tu peux demander à ton hébergeur de le faire pour toi. Si c'est impossible, il existe toujours des sites externes à qui tu peux demander de t'exécuter périodiquement le script (suffit de leur donner l'url)



RE: timestamp...quand tu nous fatigue... - uriak - 23-08-2007

Salut ^^

Il faudrait tout d'abord nous dire comment tu envisages les choses d'un point de vue fonctionnel : c'est à dire comme ça se passe pour l'utilisateur, indépendemment de la manière dont c'est programmé.
Est-ce que les joueurs doivent avoir une "photographie" de l'état de leur ressources à chaque actions qu'ils entreprennent (ou connexion/rafraichissement de page) ou souhaite-tu qu'ils voient évoluer leurs ressources en "temps réel" ?


RE: timestamp...quand tu nous fatigue... - Unenlagia - 23-08-2007

en tmep réel car d'autre joueur pourront voler ses ressource(h)


RE: timestamp...quand tu nous fatigue... - uriak - 23-08-2007

mauvaise réponse ^^

Dans un système "non linéaire" et très complexe, éventuellement. Mais dans ton cas, les autres joueurs n'ont besoin des ressources d'une personne qu'à deux occasions : l'exploration/espionnage/recherche du magot d'un autre joueur, et le vol/pillage de ce dernier.
Dans tous les cas, tu n'as pas besoin que le montant réel des ressources préexiste. Il peut être calculé au moment de l'action qui en a besoin. Pour cela tu peux créer une fonction de mise à jour qui réalise deux choses :
->Elle lit le timestamp de la dernière mise à jour, ajoute la différente avec le timestamp actuel en fonction du taux de production (ou perte) puis renvoie la nouvelle somme au reste du script.
->Elle note dans la table de la ressource le timestamp de sa dernière intervention (celui utilisé pour le calcul de l'ajout)

De cette manière, dès qu'une ressource doit être connue ou employée, elle se retrouve à jour et seulement à ce moment là. De quoi économiser beaucoup de "ressources" serveur.

Le seul problème peut survenir si le taux de production d'une ressource est modifié. Si ce genre d'évènement est bien connu et concerne qu'un joueur à la fois, tu peux parfaitement, faire l'update de ressources à cet instant, puis appliquer le changement de taux.


RE: timestamp...quand tu nous fatigue... - joshua - 23-08-2007

C'est bizarre uriak, j'ai l'impression qu' on se repete en ce moment Smile
Je pense qu'il faudrait faire un tuto: Comment gerer proprement ses ressources :p


RE: timestamp...quand tu nous fatigue... - Unenlagia - 23-08-2007

joshua a écrit :C'est bizarre uriak, j'ai l'impression qu' on se repete en ce moment Smile
Je pense qu'il faudrait faire un tuto: Comment gerer proprement ses ressources :p

Sérieusement vu le nombre de tondu ( désoler...j'adore se mot a la noix ) qui tente de faire un ogame-like envisager cette éventualité :hahahaha:


RE: timestamp...quand tu nous fatigue... - pascal - 23-08-2007

joshua a écrit :C'est bizarre uriak, j'ai l'impression qu' on se repete en ce moment Smile
Je pense qu'il faudrait faire un tuto: Comment gerer proprement ses ressources :p

comment faire un ogame like en mieux Tongue

Wink

A+

Pascal


RE: timestamp...quand tu nous fatigue... - philodoxia - 23-08-2007

pascaltje a écrit :
joshua a écrit :C'est bizarre uriak, j'ai l'impression qu' on se repete en ce moment Smile
Je pense qu'il faudrait faire un tuto: Comment gerer proprement ses ressources :p

comment faire un ogame like en mieux Tongue

Wink

A+

Pascal

Comme E-Univers :nana: :

http://www.e-univers.org/login/?action=index

Un jeu de stratégie futuriste a toujours motivé nombre de développeurs, c'est un thème qui attire Smile

Bien à vous.


RE: timestamp...quand tu nous fatigue... - Unenlagia - 25-08-2007

Sinon...j'arrive toujours pas a coder ceci O_o


RE: timestamp...quand tu nous fatigue... - jo_link_noir - 26-08-2007

ceux qu'a dit uriak doit t'aidais non ?
uriak a écrit :->Elle lit le timestamp de la dernière mise à jour, ajoute la différente avec le timestamp actuel en fonction du taux de production (ou perte) puis renvoie la nouvelle somme au reste du script.
->Elle note dans la table de la ressource le timestamp de sa dernière intervention (celui utilisé pour le calcul de l'ajout)

1- à chaque action (sauf affichage) on enregistre le timestamp et les ressource actuel

2- pour calculer les ressources actuel il faut, prendre les ressources enregistrer et ajouter les ressource gagné depuis le dernier enregistrement. Pour cela il faut prendre la difference du timestamp enregistrer et du timestamp_actuel.
En gros ça donne : ressource_enregistre + (timestamp_enregistrer - timestamp_actuel)*gain_ressource

dès qu'il y a une action entre joueur tu répetes les étapes