Jan Dvorak señala la función exponencial en un comentario. Lo explicaré aquí.
Tenga en cuenta que las operaciones exponenciales (y trigonométricas) son considerablemente más costosas desde el punto de vista computacional que incluso las operaciones de raíz cuadrada, que son mucho peores que las matemáticas básicas, por lo que probablemente sea mejor con el enfoque de Adam si va a hacer estos cálculos muchas veces por segundo . Si solo calcula los valores cuando el jugador nivela, cambia de equipo, etc., la velocidad no es importante, así que use lo que le dé la mejor curva.
Una función exponencial es alguna base, B , a alguna potencia, x , y=B^x
. Los matemáticos usan comúnmente una base de e , (~ = 2.718), pero no hay razón para que no puedas usar 2 o 10 si lo prefieres.
y=e^x
Se ve como esto:
Observe que el lado izquierdo se mueve asintóticamente a 0. Entonces podemos voltear el eje x haciendo y=e^(
-x)
, pero todavía está descendiendo de 1 a 0 y queremos que ascienda. Entonces podemos voltearlo a través del eje y con y=
-e^(-x)
. Ahora está ascendiendo de -1 a 0. Podemos sumar 1 para obtener y=
1- e^(-x)
y está ascendiendo de 0 a 1.
A partir de aquí, solo es cuestión de escalarlo vertical y horizontalmente. Podemos multiplicar todo por algún valor, llamémoslo A , que establece el límite asintótico. Entonces podemos multiplicar x por un valor de tasa de cambio, k , para ajustar la rapidez con que se acerca al límite.
Esto nos da una ecuación final de y=A*(1 - e^(-k*x))
. Usando los valores de k=0.012
y A=0.5
, podemos establecer el límite al 50% y dejar que se acerque bastante a ese límite x=400
.
Ahora, puedes hacer algunos ajustes a esto. Un ajuste que hice estaba cambiando A=0.5041
, así que si redondeamos a un porcentaje con 2 decimales (como 32.23%), y (399) = 49.99% e y (400) = 50.00%. A partir de y (347), hay varios lugares donde se necesitan dos puntos para obtener un cambio de 0.01%. Pero ese último punto posible aún ofrece un beneficio (apenas) tangible y lo lleva a un 50%.
Alternativamente, podríamos ajustar el k
valor para tener un efecto similar. En k=0.02305
, el valor se redondea a 49.99% a y=399
y 50.00% a y=400
. Sin embargo, esto tiene el problema de que el gráfico es muy poco profunda en el extremo - se tarda 48 puntos para conseguir que la última centésima de un por ciento (de y(352)=49.99%
a y(399)=49.99%
a y(400)=50.00%
) y el último 1% de probabilidad crit toma la friolera de 230 puntos (de y(170)=49.01%
a y(400)=50.00%
) que probablemente disminuya demasiado en los retornos.
Si lo desea, puede ajustar tanto A como k para que disminuya a un límite algo más alto a una velocidad más lenta, para dar algo entre decadencia lineal y exponencial. Al hacerlo y=0.6*(1-e^(-0.00447*x))
, terminas con esto:
Tenga en cuenta que la curva continúa más allá del 50%, pero dado que hay un límite difícil de calificación de 400, el jugador no puede pasar ese punto (y si logran pasarlo, todavía hay un límite difícil de 60% crítico). Con esta ecuación, puede usar 1 lugar decimal y aún ver ganancias cada 2 a 3 puntos, con un tic final de y(399)=49.9%
a y(400)=50.0%
.
Matemáticamente, las ecuaciones anteriores pueden parecer mejores, ya que en realidad se están acercando al 50%, pero personalmente creo que las ganancias del 0.1% cada par de puntos se sienten mejor que las ganancias del 0.01%. Incluso con A=0.05041
y k=0.012
, se necesitan 102 puntos para pasar de y(298)=49.00%
a y(400)=50.00%
. El 25% de tus puntos gastados en el 2% de tu crítico probablemente esté demasiado disminuido. La ecuación del 60% solo toma 20 puntos para el último porcentaje (que sigue siendo 5 veces mayor que los 4 puntos necesarios para el primer porcentaje).
Con estas últimas ecuaciones, simplemente conecté las ecuaciones en una hoja de cálculo y ajusté manualmente los valores hasta que se veían bien. Tendrías que hacer algo similar si quisieras una gorra diferente.