Exécuter la production sur une durée - 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 : Exécuter la production sur une durée (/showthread.php?tid=6293) |
RE: Exécuter la production sur une durée - niahoo - 10-08-2012 (09-08-2012, 05:49 PM)Thêta Tau Tau a écrit : Si une ouvrière produit 1 de ressources par seconde (pour simplifier) : Tout est là en fait hein … RE: Exécuter la production sur une durée - morgan47 - 10-08-2012 Merci pour vos réponses. Le mieux est en fait d'avoir une table avec un timestamp de mise a jours et de calculer lors de l'affichage de la page la production depuis le timestamp de mise a jours au timestamp de maintenant. RE: Exécuter la production sur une durée - php_addict - 10-08-2012 (10-08-2012, 10:07 PM)morgan47 a écrit : Merci pour vos réponses. oui voilà après à toi de définir quand tu met réellement à jour ta base de donné, et c'est là qu'il ne faut pas merder RE: Exécuter la production sur une durée - xviniette - 10-08-2012 A chaque visite de la page concernée non ? RE: Exécuter la production sur une durée - php_addict - 10-08-2012 et bien non ! pas forcément: si tu veut afficher les ressources, tu les calcules avec le timestamp, bla bla bla...et tu affiche ton calcul pour le joueur, on s'en fout que cette donnée soit mise à jour dans la bdd exemple, dans ta base de donnée tu as Ressources = 1000 , tu calcul pour l'affichage et ca te donne par exemple 1033,351 , tu affiches alors 1033,351 mais tu n'es pas obligée de faire un UPDATE de ta base de donnée là ou tu peut/doit faire un UPDATE des ressources c'est à toi de le définir, je ne connais pas ton jeu, mais si un bâtiment ressource est upgradé, alors oui là il faut mettre à jour UPDATE ta base de donnée car ta production horaire à été modifiée, et il faut bien penser à UPDATE le timestamp de cette mise à jour pour tes futurs calculs de tes ressources comprendo amigo? RE: Exécuter la production sur une durée - xviniette - 11-08-2012 Yep, bien vu :-) ! Non, sur mon jeu il n'y a pas tel système. RE: Exécuter la production sur une durée - niahoo - 22-02-2016 Je me permets de remonter ce très vieux topic car j'ai un peu de mal à mettre en place certains calculs. Je prends un exemple : Mettons que j'ai des robots fabricant des drones à raison de 2 par seconde. Les drones produisent du minerai à raison de 6 par seconde. Mettons que à midi j'ai 15 robots, 120 drones et 900 minerai, comment puis-je calculer combien j'aurai de chaque ressource une heure après ? Selon ce topic, il faudrait que je calcule Code : robots = 15 Déjà, est-ce que c'est correct pour le calcul du minerai ? Ensuite, est-ce que c'est correct vis à vis du fait qu'on ne compte pas de seconde zéro, on parle de 3600 secondes révolues. Ensuite, si maintenant j'ai 5 usines qui produisent 3 robots par secondes. Comment je fais ? Est-ce qu'il me suffit de faire un calcul similaire pour les robots et les drones en calculant les robots en premier ? Est-ce qu'il y a une façon de dériver ça sur n niveaux ? Code : usines = 5 Enfin, si le minerai peut être un nombre décimal, 0.3 drone ne peut pas réculter de minerai. Du coup, quand je fais mes calculs, je dois 1. Calculer le nombre réel de robots (nombre flottant) 2. Arrondir à l'entier inférieur (fonction floor) pour calculer la production robots -> drones 3. Augmenter mes robots pour le coup suivant en gardant le nombre flottant. Code : usines = 5 Du coup, comme je stocke des nombres flottants à chaque fois que je calcule, est-ce que ça peut avoir des résultats différents selon la fréquence d'actualisation ? Par exemple, j'ai 100 usines plus lentes qui produisent 1 robot par heure chacune. Au bout de 51 minutes, soit 0.85 heures, ce mode de calcul va me dire que j'ai construit 85 robots. Si je regarde 8 minutes après, soit à 59 minutes par rapport à mon temps de retard, ces robots auront déja produit des drones, et donc du minerai. Or, il faut bien une heure complète pour produire un robot, donc à 59 minutes, je dois avoir 0 robots, 0 drones et 0 minerai gagnés grâce à ces 100 usines, et à 60 minutes je dois avoir d'un coup 100 robots. Du coup je suis un peu paumé, ça m'a l'air bien plus compliqué qu'une relation simple type drone/minerai avec des nombres décimaux. Je suis en train de chercher du code pour ça mais peut être connaissez-vous un moyen simple d'écrire tous ces calculs ? RE: Exécuter la production sur une durée - Thêta Tau Tau - 22-02-2016 Tes calculs m'ont l'air faux, désolé. La formule que j'avais posté au dessus : 1 + 2 + 3 + ... + n-1 + n = n*(n+1)/2, elle est difficilement utilisable dans ton cas car tu as plusieurs niveaux de trucs qui produisent des machins qui produisent des bidules. Le plus simple c'est d'utiliser des intégrales : Code : usines = 5 Après pour faire en sorte que 0.3 drones ne récoltent pas de minerais, c'est pas faisable avec le calcul ci-dessus, ces intégrales ne fonctionnant que sur des fonctions continues. Mais je ne pense pas que ça change grand chose au gameplay de toute façon, vu les chiffres que tu as fournis, le joueur se retrouve rapidement avec des valeurs de robots, drones et minerais de plusieurs milliers, donc de compter 10000 drones ou 10000.3 on s'en tamponne pas mal, donc autant rester sur les intégrales. RE: Exécuter la production sur une durée - niahoo - 22-02-2016 Ah oui dans n * (n+1) / 2 le premier n représentait la production de chaque fourmi en fait ? (dans ton message que je cite).Alors justement, si au bout de la chaine tu peux avoir beaucoup d'unités, en début de chaine il y en aura peu, il faut donc des calculs discrets. C'est justement la longueur de la chaine qui crée les grands nombres. Merci de ta réponse. RE: Exécuter la production sur une durée - Xenos - 22-02-2016 |