JeuWeb - Crée ton jeu par navigateur
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)

Pages : 1 2 3


Exécuter la production sur une durée - morgan47 - 09-08-2012

Bonjour,

Je réfléchie à la création d'un jeux par navigateur.

Une question me turlupine, sur plusieurs jeux que j'ai observé, il est possible de créer ses unités en temps réel.

Je m'explique, j'aimerai faire un truc comme ceci :
Je lance la production de 3600 ouvrières, la production d'une ouvrières dure 1 seconde.
Les ouvrières sont automatiquement ajoutés à la récolte en cours.
Donc logiquement au bout de 30 minutes, 1800 ouvrières sont produites.

Mais si le joueurs ne se connecte pas après la création, il faut quand même que les ouvrières soit produite en temps réel pour récolter les ressources et non pas au bout d'une heure.

J'avoue que je sèche sur un moyen de faire.

Cordialement,
Morgan


RE: Exécuter la production sur une durée - Sephi-Chan - 09-08-2012

Ça doit être la question numéro 1 des créateurs débutant. Smile

En réalité, il n'y a le plus souvent pas de création à proprement parler : c'est juste une illusion. Un calcul de prorata qui fait qu'à ton retour sur le site, tu as l'impression qu'un ouvrier à été crée chaque minute et qu'il a commencé à récolter des ressources.


RE: Exécuter la production sur une durée - Thêta Tau Tau - 09-08-2012

Si une ouvrière produit 1 de ressources par seconde (pour simplifier) :
Durant tes 1600 secondes tu vas produire 0, puis 1, puis 2, puis 3.... et enfin 1599. Et après tu produit plus d'ouvrières donc c'est facile.
Donc soit tu fait une boucle for pour additionner tout ça, soit tu utilise la formule suivante :
1 + 2 + 3 + ... + n-1 + n = n*(n+1)/2

Dans ton cas ça fait 1599*1600/2


RE: Exécuter la production sur une durée - Plume - 09-08-2012

Là où ça peut devenir plus compliqué, c'est dans le cas où la production en temps réel de tes ouvriers impacte la production des ressources. Ça, ça dépendra de ton système.


RE: Exécuter la production sur une durée - morgan47 - 09-08-2012

Merci pour vos réponses j'y vois un peu plus claire

Dans ce qu'a j'ai trouvé ce topic, mais n'ai pas trop compris l'utilité :

http://www.jeuweb.org/showthread.php?tid=8097


RE: Exécuter la production sur une durée - php_addict - 09-08-2012

(09-08-2012, 06:19 PM)morgan47 a écrit : Merci pour vos réponses j'y vois un peu plus claire

Dans ce qu'a j'ai trouvé ce topic, mais n'ai pas trop compris l'utilité :

http://www.jeuweb.org/showthread.php?tid=8097

tu codes déjà pour le web? l’asynchrone n'est pas la plus simple des notions pour débuter...


RE: Exécuter la production sur une durée - morgan47 - 09-08-2012

Oui oui le couple PHP/MySQL je connais je pense assez bien.

Aprés pour les récoltes, je pense mettre en place une tache cron toutes les 15 minutes.


RE: Exécuter la production sur une durée - Thêta Tau Tau - 09-08-2012

Les cron pour les ressources c'est moche je trouve.

Je sais pas si tu as bien compris ce qu'on a voulu te dire.

Pour simplifier :
-Dans ta base de données tu stocke le nombre de ressource et la date de dernière mise à jour
-Quand t'as besoin de connaître le nombre de ressource tu calcule le temps écoulé, et tu calcule les ressources actuelles (= ressources db + production*temps écoulé).
-Quand tu dépenses des ressources tu écrit en base de donnée

Là dessus les variations de production (nouveaux bâtiments, ouvriers...) ou ajout/retrait de ressources (transport, attaques...) viennent compliquer un peu mais on peut quand même recalculer, du moins tant que le jeu reste relativement simple (après c'est à la fois casse tête et demande des requêtes trop grosses).

Les solutions décrites dans le topic que tu as cité peuvent être utiles mais ne sont pas indispensables.


RE: Exécuter la production sur une durée - php_addict - 09-08-2012

oui il s'agit d'une simple multiplication à l'affichage des ressources, un calcul bête et méchant en fait...après selon les besoins tu peut mettre à jour ta base de données lors de résolutions d'attaques par exemple (en n'oubliant pas de stocker le timestamp auquel tu as mis à jour tes données)...


RE: Exécuter la production sur une durée - Akira777 - 10-08-2012

Salut !

Une autre solution qu'on retrouve assez souvent.

Imaginons l'idée de cette façon là : Tu lances la création de 3600 ouvrière, une ouvrière se crée en une seconde. Tu enregistres la date de départ en timestamp UNIX. Tu enregistres la date de fin : timestamp de départ + (nombre d'ouvrière x temps de production à l'unité).

Tu n'as plus qu'à tourner ton gameplay de telle façon pour que le joueur doive récupérer manuellement sa production une fois que le timestamp de fin est dépassé. Comme ça, pas de calcul des productions à la volée.

Après je ne sais pas trop comment sera accès ton jeu, mais dans le cas des ressources imaginons que pour chaque ressource il y est une date de péremption. Imaginons ce même cas pour de la nourriture, si le joueur récupères sa production entre la date prévue de fin et la date prévue de fin + 2 heures, c'est bon. Mais s'il la récupères 2h après la date de fin la production a périmée.

Ce n'est pas forcément une solution adaptée pour ce besoin précis, mais ca peut toujours te donner des idées.