Quando elaboriamo la matematica e risolviamo il Level
condizionale sull'esperienza XP
, otteniamo:
Level=1+1+8×XP÷50−−−−−−−−−−−−−√2
Ad esempio, qual è il livello del giocatore per ?XP=300
1+1+8×300÷50−−−−−−−−−−−−−√2=4
Come richiesto.
Oppure, qual è il livello per XP = 100000
?
1+1+8×100000÷50−−−−−−−−−−−−−−−−√2=63
Più in generale espresso, per una soglia iniziale arbitraria al livello 1:
Level=1+1+8×threshold÷50−−−−−−−−−−−−−−−−−−√2
Puoi anche fare il contrario e calcolare il XP
necessario per ogni dato livello risolvendo la formula sopra per XP.
XP=(Level2−Level)×threshold2
Si noti che la formula sopra funziona con le frazioni ma è necessario arrotondare per difetto al valore intero successivo. Ad esempio in C ++ / C # è possibile utilizzare il livello (int).
Per ottenere la formula sopra chiusa, ho usato equazioni di differenza, somma di Gauss e una formula quadratica.
Se sei interessato alla soluzione di questa formula passo dopo passo ...
Facciamo un algoritmo ricorsivo iniziando le nostre considerazioni che alla fine Experience(next_level) = Experience(current_level) + current_level*50
.
Ad esempio, per ottenere abbiamo:XPLevel3
XPLevel3=XPLevel2+2×50
Dove, 2*50
dalla richiesta del PO, l'esperienza necessaria per raggiungere il livello successivo è l'attuale livello * 50.
Adesso sostituiamo con la stessa logica nella formula. Questo è:XpLevel2
Sostituisci nella formula sopra:XPLevel2=XPLevel1+2×50
XpLevel3=XpLevel1+1×50+2×50
e è solo 50, che è il nostro punto di partenza. QuindiXpLevel1
XpLevel3=50+2×50=150
Possiamo riconoscere un modello per il calcolo ricorsivo di livelli più alti e una catena finita di sommazioni.
XpLevelN=50+2×50+3×50+...+(N−1)×50=∑i=0n−1i×50
Dove N è il livello da raggiungere. Per ottenere XP per il livello N, dobbiamo risolvere per N.
XpLevelN÷50=∑i=0n−1i
N×(N+1)÷2−N. Hence
XpLevelN÷50=N(N+1)÷2−N
or just
2∗(XpLevelN−50)÷50=N(N+1)−2N
Finally, putting everything on one side:
0=N2−N−2×XpLevelN÷50
This is now a quadratic formula yielding a negative and positive solution, of which only the positive is relevant as there are no negative levels. We now obtain:
N=1+1+4×2×XpLevelN50−−−−−−−−−−−√2
The current level conditional on XP and linear threshold is therefore:
Level=1+1+8×XP÷threshold−−−−−−−−−−−−−−−−−−−√2
Note Knowing these steps can be useful to solve for even more complex progressions. In the RPG realm you will see besides a linear progression as here, the actually more common fractional power or square relationship, e.g. Level=XP√5.0. However, for game implementation itself, I believe this solution to be less optimal as ideally you should know all your level progressions beforehand instead of calculating them at runtime. For my own engine, I use therefore pre-processed experience tables, which are more flexible and often faster. However, to write those tables first, or, to just merely ask yourself what XP
is needed to, let's say, obtain Level 100
, this formula provides the quickest way aimed at answering the OP's specific question.
Edit: This formula is fully working as it should and it outputs correctly the current level
conditional on XP
with a linear threshold progression as requested by the OP. (The previous formula outputted "level+1" by assuming the player started from Level 0, which was my erring--I had solved it on my lunch break by writing on a small tissue! :)