Jan Dvorak aponta a função exponencial em um comentário. Eu vou explicar aqui.
Observe que as operações exponenciais (e trigonométricas) são consideravelmente mais caras em termos computacionais do que as operações de raiz quadrada, que são muito piores que a matemática básica, então você provavelmente estará melhor com a abordagem de Adam se fizer esses cálculos muitas vezes por segundo . Se você apenas calcula os valores quando o jogador nivela, troca de equipamento etc., a velocidade não é importante, então use o que lhe der a melhor curva.
Uma função exponencial é alguma base, B , a alguma potência, x , y=B^x
. Os matemáticos geralmente usam uma base de e , (~ = 2.718), mas não há razão para que você não possa usar 2 ou 10, se preferir.
y=e^x
se parece com isso:
Observe que o lado esquerdo está se movendo assintoticamente para 0. Portanto, podemos girar o eixo x fazendo y=e^(
-x)
, mas ele ainda está descendo de 1 a 0 e queremos que ele suba. Para que possamos rodar no eixo y com y=
-e^(-x)
. Agora está subindo de -1 a 0. Podemos adicionar 1 para obter y=
1- e^(-x)
e está subindo de 0 a 1.
A partir daqui, é apenas uma questão de dimensioná-lo vertical e horizontalmente. Podemos multiplicar a coisa toda por algum valor, vamos chamá-la de A , que define o limite assintótico. Então podemos multiplicar x por um valor de taxa de variação, k , para ajustar a rapidez com que ela se aproxima do limite.
Isso nos dá uma equação final de y=A*(1 - e^(-k*x))
. Usando valores de k=0.012
e A=0.5
, podemos definir o limite para 50% e deixá-lo bem próximo desse limite x=400
.
Agora, você pode fazer alguns ajustes nisso. Um ajuste que fiz foi mudar para A=0.5041
, portanto, se arredondarmos para uma porcentagem com 2 casas decimais (como 32,23%), y (399) = 49,99% e y (400) = 50,00%. A partir de y (347), existem vários locais em que são necessários dois pontos para obter uma variação de 0,01%. Mas esse último ponto possível ainda oferece um benefício (quase) tangível e chega a 50%.
Como alternativa, poderíamos ajustar o k
valor para ter um efeito semelhante. Em k=0.02305
, o valor é arredondado para 49,99% em y=399
e 50,00% em y=400
. No entanto, isso tem o problema de que o gráfico é muito raso no final - são necessários 48 pontos para obter o último centésimo de por cento (de y(352)=49.99%
para y(399)=49.99%
até y(400)=50.00%
) e a última chance de 1% de crítico leva 230 pontos (de y(170)=49.01%
para y(400)=50.00%
) o que provavelmente diminui demais os retornos.
Se você quiser, poderá ajustar A e k, para diminuir para um limite um pouco mais alto a uma taxa mais lenta, para fornecer algo entre decaimento linear e exponencial. Fazendo y=0.6*(1-e^(-0.00447*x))
, você acaba com isso:
Observe que a curva continua além de 50%, mas como existe um limite rígido de 400 pontos, o jogador não pode passar por esse ponto (e se conseguirem passar por ele, ainda há um limite rígido de 60% de crítico). Com esta equação, você pode usar 1 casa decimal e ainda ver ganhos a cada 2 a 3 pontos, com uma marca final de y(399)=49.9%
até y(400)=50.0%
.
Matematicamente, as equações anteriores podem parecer melhores, uma vez que estão se aproximando de 50%, mas pessoalmente acho que ganhos de 0,1% a cada par de pontos são melhores do que ganhos de 0,01%. Mesmo com A=0.05041
e k=0.012
, são necessários 102 pontos para passar de y(298)=49.00%
para y(400)=50.00%
. 25% dos seus pontos gastos em 2% do seu crítico provavelmente estão diminuídos demais. A equação de 60% leva apenas 20 pontos para o último percentual (que ainda é 5 vezes maior que os 4 pontos necessários para o primeiro percentual).
Com essas últimas equações, apenas as pluguei em uma planilha e ajustei manualmente os valores até que parecessem bons. Você teria que fazer algo semelhante se quisesse um limite diferente.