Jan Dvorak souligne la fonction exponentielle dans un commentaire. Je vais l'expliquer ici.
Notez que les opérations exponentielles (et trigonométriques) sont considérablement plus coûteuses en termes de calcul que même les opérations de racine carrée, qui sont elles-mêmes bien pires que les mathématiques de base, donc vous êtes probablement mieux avec l'approche d'Adam si vous effectuez ces calculs plusieurs fois par seconde . Si vous calculez simplement les valeurs lorsque le niveau du joueur, change d'équipement, etc., la vitesse n'est pas importante, alors utilisez ce qui vous donne la meilleure courbe.
Une fonction exponentielle est une certaine base B , dans une certaine puissance, x , y=B^x
. Les mathématiciens utilisent généralement une base de e , (~ = 2,718), mais il n'y a aucune raison que vous ne puissiez pas utiliser 2 ou 10 si vous préférez.
y=e^x
ressemble à ça:
Remarquez que le côté gauche se déplace de manière asympotique vers 0. Nous pouvons donc inverser l'axe des x en faisant y=e^(
-x)
, mais il descend toujours de 1 à 0 et nous voulons qu'il monte. Nous pouvons donc le retourner sur l'axe des y avec y=
-e^(-x)
. Maintenant, il monte de -1 à 0. Nous pouvons ajouter 1 pour obteniry=
1- e^(-x)
et il monte de 0 à 1.
À partir d'ici, il suffit de le mettre à l'échelle verticalement et horizontalement. Nous pouvons multiplier le tout par une valeur, appelons-la A , qui définit la limite asymptotique. Ensuite, nous pouvons multiplier x par une valeur de taux de changement, k , pour ajuster la vitesse à laquelle il se rapproche de la limite.
Cela nous donne une équation finale de y=A*(1 - e^(-k*x))
. En utilisant les valeurs de k=0.012
et A=0.5
, nous pouvons définir la limite à 50% et la laisser se rapprocher de cette limite x=400
.
Maintenant, vous pouvez apporter quelques modifications à cela. Un ajustement que j'ai fait était en train de changer A=0.5041
, donc si nous arrondissons à un pourcentage avec 2 décimales (comme 32,23%), y (399) = 49,99% et y (400) = 50,00%. À partir de y (347), il y a plusieurs endroits où il faut deux points pour obtenir un changement de 0,01%. Mais ce dernier point possible donne toujours un avantage (à peine) tangible, et le porte à 50%.
Alternativement, nous pourrions ajuster la k
valeur pour avoir un effet similaire. À k=0.02305
, la valeur arrondit à 49,99% à y=399
et 50,00% à y=400
. Cependant, cela a le problème que le graphique est très peu profond à la fin - il faut 48 points pour obtenir ce dernier centième de pour cent (de y(352)=49.99%
ày(399)=49.99%
à y(400)=50.00%
) et la dernière chance de critique de 1% prend 230 points (de y(170)=49.01%
à y(400)=50.00%
) ce qui diminue probablement un peu trop les rendements.
Si vous le souhaitez, vous pouvez ajuster à la fois A et k afin qu'il diminue à une limite un peu plus élevée à un rythme plus lent, pour donner quelque chose entre la décroissance linéaire et exponentielle. Fairey=0.6*(1-e^(-0.00447*x))
, vous vous retrouvez avec ceci:
Notez que la courbe continue au-delà de 50%, mais comme il y a une limite dure de 400, le joueur ne peut pas passer ce point (et s'il parvient à le passer, il y a toujours une limite dure de 60% critique). Avec cette équation, vous pouvez utiliser 1 décimale et toujours voir des gains tous les 2 à 3 points, avec un dernier tick de y(399)=49.9%
ày(400)=50.0%
.
Mathématiquement, les équations précédentes peuvent sembler meilleures, car elles approchent en fait de 50%, mais je pense personnellement que des gains de 0,1% tous les points se sentent mieux que des gains de 0,01%. Même avec A=0.05041
et k=0.012
, il faut 102 points pour aller de y(298)=49.00%
à y(400)=50.00%
. 25% de vos points dépensés sur 2% de vos critiques sont probablement trop diminués. L'équation de 60% ne prend que 20 points pour le dernier pour cent (ce qui est toujours 5 fois plus élevé que les 4 points nécessaires pour le premier pour cent).
Avec ces dernières équations, j'ai simplement branché les équations dans une feuille de calcul et modifié manuellement les valeurs jusqu'à ce qu'elles semblent bonnes. Il faudrait faire quelque chose de similaire si vous vouliez un plafond différent.