01-02-2014, 07:40 PM
Salut,
Oui, j'ai Et le mécanisme me semble cohérent.
Suite géométrique (tour par tour)
Avec Valeur(T+1) la valeur après regénération, et Valeur(T) la valeur avant. N est une constante arbitraire strictement supérieure à 1.
La formule est valide en tour par tour, et à calculer à chaque tour.
Exemple:
Pour N = 2 et Valeur(T=0) = 100.
Je ne touche pas la case pendant ce tour.
Valeur(T=1) = Valeur(T=0)*2 = 200 (écart: +100)
Je ne touche pas la case pendant ce tour.
Valeur(T=2) = Valeur(T=1)*2 = 400 (écart: +200)
Je ne touche pas la case pendant ce tour.
Valeur(T=3) = Valeur(T=2)*2 = 800 (écart: +400, plus la case est riche, plus elle régénère)
Je pompe 100 sur la case au début de ce tour.
Valeur(T=4) = (Valeur(T=3) - 100)*2 = 1400 (écart: +600)
Je pompe 800 sur la case au début de ce tour.
Valeur(T=5) = (Valeur(T=4) - 800)*2 = 1200 (écart: -100, la case perd des ressources si je l'exploite beaucoup)
On peut soit enlever les ressources exploitées avant de multiplier par N:
Soit après
Dans le premier cas, on considère que les ressources sont extraites trop tôt pour qu'elles participent à la regénération, dans le second, elles sont extraites après la regénération de la case. On peut aussi faire un compromis:
Exponentielle (continue)
Où "^" est l'opérateur "élévation à la puissance", et avec Valeur(T) la valeur à la date T, Valeur(T0) la valeur à une date quelconque (avant T), et N une constante arbitraire, supérieure à 1.
La formule peut alors être appliquée à tout instant T, sous condition que depuis T0, il n'y ai pas eu de changement (exploitation de ressource) sur la case.
Exemple:
Pour N = 2 et Valeur(T=0) = 100.
Tant que je ne touche à rien:
Valeur(T=0) = Valeur(T=0)*2^(0-0) = Valeur(T=0) (c'est cohérent!)
Valeur(T=1) = Valeur(T=0)*2^(1-0) = 200
Valeur(T=2) = Valeur(T=0)*2^(2-0) = 400
Valeur(T=3) = Valeur(T=0)*2^(3-0) = 800...
J'exploite la case à la date T=3, et donc, la valeur de la case est modifiée:
Valeur(T=3) = 800 avant exploitation
Valeur(T=3) = 500 après (j'ai pris 300 unités)
Valeur(T=4) = Valeur(T=3)*2^(4-3) = 1000
Cette méthode se passe du tour par tour. En effet, on peut très bien dire:
Valeur(T=0) = 100
Rien ne se passe pendant un moment...
Ah! quelqu'un vient de se connecter et exploite la case! On est à T=4:
Je calcule Valeur(T=4) = ValeurPrécédente * 2^TempsEcouléDepuisLaValeurPrécédente
Donc, Valeur(T=4) = 100 * 2^4 = 1600
J'exploite, disons, 500 unités, et je sauve la nouvelle valeur, avec sa date:
Valeur(T=4) = 1100
Cette seconde méthode évite d'avoir un "daemon" qui tourne en arrière-plan pour actualiser chaque tour.
Eléments supplémentaires sur N
La valeur de N suit les règles suivantes:
N < 0 : Incalculable
N = 0: La case sera toujours vide
0 < N < 1: La case perd peu à peu des ressources
N = 1: La case ne regénère pas du tout
N > 1: La case regénère peu à peu
Pour une valeur de N de la forme N=(1 + k/100), avec k > 0, la case gagnera k% de ressources à chaque unité de temps. Par exemple, N=1.10 signifie "+10% par unité de temps (ou par tour)".
Oui, j'ai Et le mécanisme me semble cohérent.
Suite géométrique (tour par tour)
Code :
Valeur(T+1) = Valeur(T)*N
Avec Valeur(T+1) la valeur après regénération, et Valeur(T) la valeur avant. N est une constante arbitraire strictement supérieure à 1.
La formule est valide en tour par tour, et à calculer à chaque tour.
Exemple:
Pour N = 2 et Valeur(T=0) = 100.
Je ne touche pas la case pendant ce tour.
Valeur(T=1) = Valeur(T=0)*2 = 200 (écart: +100)
Je ne touche pas la case pendant ce tour.
Valeur(T=2) = Valeur(T=1)*2 = 400 (écart: +200)
Je ne touche pas la case pendant ce tour.
Valeur(T=3) = Valeur(T=2)*2 = 800 (écart: +400, plus la case est riche, plus elle régénère)
Je pompe 100 sur la case au début de ce tour.
Valeur(T=4) = (Valeur(T=3) - 100)*2 = 1400 (écart: +600)
Je pompe 800 sur la case au début de ce tour.
Valeur(T=5) = (Valeur(T=4) - 800)*2 = 1200 (écart: -100, la case perd des ressources si je l'exploite beaucoup)
On peut soit enlever les ressources exploitées avant de multiplier par N:
Code :
Valeur(T) = (Valeur(T) - Exploitation(T))*N
Code :
Valeur(T) = Valeur(T)*N - Exploitation(T)
Code :
Valeur(T) = (Valeur(T) - Exploitation(T) / 2)*N - (Exploitation(T) / 2)
Exponentielle (continue)
Code :
Valeur(T) = Valeur(T0)*N^(T - T0)
Où "^" est l'opérateur "élévation à la puissance", et avec Valeur(T) la valeur à la date T, Valeur(T0) la valeur à une date quelconque (avant T), et N une constante arbitraire, supérieure à 1.
La formule peut alors être appliquée à tout instant T, sous condition que depuis T0, il n'y ai pas eu de changement (exploitation de ressource) sur la case.
Exemple:
Pour N = 2 et Valeur(T=0) = 100.
Tant que je ne touche à rien:
Valeur(T=0) = Valeur(T=0)*2^(0-0) = Valeur(T=0) (c'est cohérent!)
Valeur(T=1) = Valeur(T=0)*2^(1-0) = 200
Valeur(T=2) = Valeur(T=0)*2^(2-0) = 400
Valeur(T=3) = Valeur(T=0)*2^(3-0) = 800...
J'exploite la case à la date T=3, et donc, la valeur de la case est modifiée:
Valeur(T=3) = 800 avant exploitation
Valeur(T=3) = 500 après (j'ai pris 300 unités)
Valeur(T=4) = Valeur(T=3)*2^(4-3) = 1000
Cette méthode se passe du tour par tour. En effet, on peut très bien dire:
Valeur(T=0) = 100
Rien ne se passe pendant un moment...
Ah! quelqu'un vient de se connecter et exploite la case! On est à T=4:
Je calcule Valeur(T=4) = ValeurPrécédente * 2^TempsEcouléDepuisLaValeurPrécédente
Donc, Valeur(T=4) = 100 * 2^4 = 1600
J'exploite, disons, 500 unités, et je sauve la nouvelle valeur, avec sa date:
Valeur(T=4) = 1100
Cette seconde méthode évite d'avoir un "daemon" qui tourne en arrière-plan pour actualiser chaque tour.
Eléments supplémentaires sur N
La valeur de N suit les règles suivantes:
N < 0 : Incalculable
N = 0: La case sera toujours vide
0 < N < 1: La case perd peu à peu des ressources
N = 1: La case ne regénère pas du tout
N > 1: La case regénère peu à peu
Pour une valeur de N de la forme N=(1 + k/100), avec k > 0, la case gagnera k% de ressources à chaque unité de temps. Par exemple, N=1.10 signifie "+10% par unité de temps (ou par tour)".