En calculant et en résolvant pour le Level
conditionnel sur l'expérience XP
, on obtient:
Level=1+1+8×XP÷50−−−−−−−−−−−−−√2
Par exemple, quel est le niveau du joueur pour ?XP=300
1+1+8×300÷50−−−−−−−−−−−−−√2=4
Comme demandé.
Ou, à quoi sert le niveau XP = 100000
?
1+1+8×100000÷50−−−−−−−−−−−−−−−−√2=63
Plus généralement, pour un seuil de départ arbitraire au niveau 1:
Level=1+1+8×threshold÷50−−−−−−−−−−−−−−−−−−√2
Vous pouvez également faire l’inverse et calculer le XP
nécessaire pour n’importe quel niveau en résolvant la formule ci-dessus pour XP.
XP=(Level2−Level)×threshold2
Notez que la formule ci-dessus fonctionne avec des fractions, mais vous devez arrondir à la valeur entière suivante. Par exemple, en C ++ / C #, vous pouvez utiliser (int) Level.
Pour obtenir la formule ci-dessus, j'ai utilisé des équations aux différences, la sommation de Gauss et une formule quadratique.
Si vous êtes intéressé par la solution de cette formule étape par étape ...
Nous faisons un algorithme récursif en commençant nos considérations que finalement Experience(next_level) = Experience(current_level) + current_level*50
.
Par exemple, pour obtenir nous avons:XPLevel3
XPLevel3=XPLevel2+2×50
Où, 2*50
vient de la demande du PO que l'expérience nécessaire pour atteindre le niveau suivant est le niveau actuel * 50.
Maintenant, on remplace avec la même logique dans la formule. C'est:XpLevel2
Remplacez par la formule ci-dessus:XPLevel2=XPLevel1+2×50
XpLevel3=XpLevel1+1×50+2×50
et n’est que de 50, ce qui est notre point de départ. Par conséquentXpLevel1
XpLevel3=50+2×50=150
Nous pouvons reconnaître une régularité permettant de calculer récursivement des niveaux plus élevés et une chaîne finie de sommations.
XpLevelN=50+2×50+3×50+...+(N−1)×50=∑i=0n−1i×50
Où N est le niveau à atteindre. Pour obtenir l'XP du niveau N, il faut résoudre pour N.
XpLevelN÷50=∑i=0n−1i
Maintenant , le côté droit est tout simplement une somme de 1 à N-1, qui peut être exprimé par la fameuse sommation gaussienne . Par conséquentN×(N+1)÷2−N
XpLevelN÷50=N(N+1)÷2−N
ou juste
2∗(XpLevelN−50)÷50=N(N+1)−2N
Enfin, tout mettre de côté:
0=N2−N−2×XpLevelN÷50
Il s’agit maintenant d’une formule quadratique donnant une solution négative et positive, seule la réponse positive étant pertinente en l’absence de niveaux négatifs. Nous obtenons maintenant:
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! :)