Jan Dvorak sottolinea la funzione esponenziale in un commento. Lo spiego qui.
Si noti che le operazioni esponenziali (e di innesco) sono considerevolmente più costose dal punto di vista computazionale rispetto anche alle operazioni con radice quadrata, che sono esse stesse molto peggio della matematica di base, quindi probabilmente starai meglio con l'approccio di Adam se eseguirai questi calcoli molte volte al secondo . Se calcoli semplicemente i valori quando il giocatore passa di livello, cambia equipaggiamento, ecc., La velocità non è importante, quindi usa quello che ti dà la curva migliore.
Una funzione esponenziale è certa base, B , ad una potenza, x , y=B^x
. I matematici usano comunemente una base di e , (~ = 2.718), ma non c'è motivo per cui non puoi usare 2 o 10 se preferisci.
y=e^x
Somiglia a questo:
Si noti che il lato sinistro si sta spostando in modo asintotico a 0. Quindi possiamo invertire l'asse x facendo y=e^(
-x)
, ma sta ancora scendendo da 1 a 0 e vogliamo che ascenda. Quindi possiamo capovolgerlo sull'asse y con y=
-e^(-x)
. Ora sta ascendendo da -1 a 0. Possiamo aggiungere 1 per ottenere y=
1- e^(-x)
ed è crescente da 0 a 1.
Da qui, si tratta solo di ridimensionarlo in verticale e in orizzontale. Possiamo moltiplicare l'intera cosa per un valore, chiamiamolo A , che fissa il limite asintotico. Quindi possiamo moltiplicare x per un valore di rateo di variazione, k , per regolare la cui si avvicina al limite.
Questo ci dà un'equazione finale di y=A*(1 - e^(-k*x))
. Usando i valori di k=0.012
e A=0.5
, possiamo impostare il limite al 50% e lasciarlo avvicinarsi abbastanza a quel limite x=400
.
Ora, puoi apportare alcune modifiche a questo. Una modifica che ho apportato stava cambiando in A=0.5041
, quindi se arrotondiamo a una percentuale con 2 decimali (come 32,23%), y (399) = 49,99% e y (400) = 50,00%. Da y (347) in poi, ci sono diversi punti in cui sono necessari due punti per ottenere una variazione dello 0,01%. Ma quell'ultimo punto possibile offre ancora un vantaggio (a malapena) tangibile e lo porta ad un 50% pari.
In alternativa, potremmo modificare il k
valore per avere un effetto simile. A k=0.02305
, il valore viene arrotondato al 49,99% a y=399
e al 50,00% a y=400
. Tuttavia, questo ha il problema che il grafico è molto superficiale alla fine: ci vogliono 48 punti per ottenere l'ultimo centesimo del percento (da y(352)=49.99%
a y(399)=49.99%
a y(400)=50.00%
) e l'ultima probabilità critica dell'1% prende un enorme 230 punti (da y(170)=49.01%
ay(400)=50.00%
) che probabilmente è un po 'troppo decrescente sui rendimenti.
Se lo si desidera, è possibile regolare sia A che k in modo che diminuisca a un limite leggermente superiore a una velocità più lenta, per dare qualcosa tra decadimento lineare ed esponenziale. In questo modo y=0.6*(1-e^(-0.00447*x))
, si finisce con questo:
Nota che la curva continua oltre il 50%, ma poiché esiste un limite massimo di 400 rating, il giocatore non può superare quel punto (e se riescono a superarlo, c'è ancora un limite rigido del 60% crit). Con questa equazione, puoi usare 1 decimale e vedere ancora i guadagni ogni 2-3 punti, con un segno di spunta finale da y(399)=49.9%
ay(400)=50.0%
.
Matematicamente, le equazioni precedenti potrebbero sembrare migliori, dal momento che si stanno avvicinando al 50%, ma personalmente ritengo che un guadagno dello 0,1% ogni coppia di punti sia migliore di un guadagno dello 0,01%. Anche con A=0.05041
e k=0.012
, ci vogliono 102 punti per andare da y(298)=49.00%
a y(400)=50.00%
. Il 25% dei tuoi punti spesi per il 2% del tuo critico è probabilmente troppo diminuito. L'equazione del 60% prende solo 20 punti per l'ultima percentuale (che è ancora 5 volte superiore ai 4 punti necessari per la prima percentuale).
Con queste ultime diverse equazioni, ho appena inserito le equazioni in un foglio di calcolo e ho modificato manualmente i valori fino a quando non sembravano buoni. Dovresti fare qualcosa di simile se volessi un cappello diverso.