17-01-2013, 07:25 PM
Salut,
Il faut voir ca en terme de maths. Tu cherches une fonction f, qui au niveau N associe un facteur k d'accélération des réparations. La fonction de calcul de la vitesse V de réparation est alors définie par V = V0 * k où V0 est la vitesse de base, et V la vitesse de réparation.
Dans l'idée, la fonction f respecte les conditions suivantes:
- f(0) = 1, de sorte que V0 soit la vitesse de réparation lorsque le joueur est de niveau 0
- f continue, pour qu'il n'y ai pas de fossé entre deux niveaux
- f croissante strictement, de sorte que le facteur k(N) > k(N+1), autrement dit, le facteur augmente quand le niveau augmente
Une condition supplémentaire envisageable est la suivante:
- f est bornée (par K)
Elle n'est pas nécessaire. En effet, si le niveau est très grand, alors k est très grand, donc la vitesse V aussi, et le temps T (T = L / V) tendra vers 0, ce qui n'est pas une abération (ca en serai une si on avait la possibilité d'un temps négatif par exemple). Mais si tu veux une vitesse maximale Vmax, il faudra borner f par K = Vmax/V0.
Partant de là, il existe des formules simples:
- f = exp(N) ou f = p^N où p est une valeur de base quelconque; attention: cette fonction "monte" de plus en plus vite
- f = 1+p*N, la plus simple, mais peut-être ennuyeuse pour les joueurs car trop "monotone"
- f = 1+log(N), sa croissance ralentie, donc plus on gagne en niveaux, moins cela impact la vitesse finale
- f = 1+N^p, suivant p, la croissance de f varie (si p>1, f croit de plus en plus vite, si p < 1, f croit de moins en moins vite)
Tu peux combiner ces fonctions (f=n²+n+1 par exemple).
C'est un choix à faire de ton coté, suivant les équilibres de ton jeu.
Pour ma part, je te conseille de déterminer, via un graphique, la progression de niveaux possible au cours du temps (aka, à l'inscription on est niveau 0, 1 mois après on peut être niveau 5, après 1 an on est niveau 40 environs, après 10 ans, on est niveau 300 etc). Connaissance la durée de vie de ton jeu, tu sauras quelle est le niveau "maximum" que les joueurs les plus agueris pourront atteindre. Tu pourras alors aisément fixer f pour que, une fois ce niveau atteind, le joueur n'ai pas des avantages trop importants.
Concernant la proposition T = (D/70)*(N/(N+1)*D), il y a une aberration:
T = D²/70*N/(N+1)
Si N=0, on a T = 0... Si ta fonction est f = N/(N+1), alors f(0) = 0 et f est croissante, donc plus on a un niveau élevé (N augmente), plus le temps est long? O.o
Si D est la durée des réparations, D² est en secondes au carré. f est un coefficient (pas d'unité), donc 70 doit être en secondes, sinon, on aurait un soucis d'unité (le temps T est en secondes, et il est égale au produit secondes²*pas d'unité*pas d'unité, donc secondes = secondes²? O.o)
Il faut voir ca en terme de maths. Tu cherches une fonction f, qui au niveau N associe un facteur k d'accélération des réparations. La fonction de calcul de la vitesse V de réparation est alors définie par V = V0 * k où V0 est la vitesse de base, et V la vitesse de réparation.
Dans l'idée, la fonction f respecte les conditions suivantes:
- f(0) = 1, de sorte que V0 soit la vitesse de réparation lorsque le joueur est de niveau 0
- f continue, pour qu'il n'y ai pas de fossé entre deux niveaux
- f croissante strictement, de sorte que le facteur k(N) > k(N+1), autrement dit, le facteur augmente quand le niveau augmente
Une condition supplémentaire envisageable est la suivante:
- f est bornée (par K)
Elle n'est pas nécessaire. En effet, si le niveau est très grand, alors k est très grand, donc la vitesse V aussi, et le temps T (T = L / V) tendra vers 0, ce qui n'est pas une abération (ca en serai une si on avait la possibilité d'un temps négatif par exemple). Mais si tu veux une vitesse maximale Vmax, il faudra borner f par K = Vmax/V0.
Partant de là, il existe des formules simples:
- f = exp(N) ou f = p^N où p est une valeur de base quelconque; attention: cette fonction "monte" de plus en plus vite
- f = 1+p*N, la plus simple, mais peut-être ennuyeuse pour les joueurs car trop "monotone"
- f = 1+log(N), sa croissance ralentie, donc plus on gagne en niveaux, moins cela impact la vitesse finale
- f = 1+N^p, suivant p, la croissance de f varie (si p>1, f croit de plus en plus vite, si p < 1, f croit de moins en moins vite)
Tu peux combiner ces fonctions (f=n²+n+1 par exemple).
C'est un choix à faire de ton coté, suivant les équilibres de ton jeu.
Pour ma part, je te conseille de déterminer, via un graphique, la progression de niveaux possible au cours du temps (aka, à l'inscription on est niveau 0, 1 mois après on peut être niveau 5, après 1 an on est niveau 40 environs, après 10 ans, on est niveau 300 etc). Connaissance la durée de vie de ton jeu, tu sauras quelle est le niveau "maximum" que les joueurs les plus agueris pourront atteindre. Tu pourras alors aisément fixer f pour que, une fois ce niveau atteind, le joueur n'ai pas des avantages trop importants.
Concernant la proposition T = (D/70)*(N/(N+1)*D), il y a une aberration:
T = D²/70*N/(N+1)
Si N=0, on a T = 0... Si ta fonction est f = N/(N+1), alors f(0) = 0 et f est croissante, donc plus on a un niveau élevé (N augmente), plus le temps est long? O.o
Si D est la durée des réparations, D² est en secondes au carré. f est un coefficient (pas d'unité), donc 70 doit être en secondes, sinon, on aurait un soucis d'unité (le temps T est en secondes, et il est égale au produit secondes²*pas d'unité*pas d'unité, donc secondes = secondes²? O.o)