Ao elaborar as matemáticas e resolver as Level
condições condicionadas à experiência XP
, obtemos:
L e v e l = 1 + 1 + 8 × XP÷ 50-------------√2
Por exemplo, qual é o nível do jogador para ?XP=300
1+1+8×300÷50−−−−−−−−−−−−−√2=4
Como pedido.
Ou, qual é o nível XP = 100000
?
1+1+8×100000÷50−−−−−−−−−−−−−−−−√2=63
Mais geralmente expresso, para um limite inicial arbitrário no nível 1:
Level=1+1+8×threshold÷50−−−−−−−−−−−−−−−−−−√2
Você também pode fazer o inverso e calcular o XP
necessário para qualquer nível, resolvendo a fórmula acima para XP.
XP=(Level2- L e v e l ) × t h r e s h o l d2
Observe que a fórmula acima funciona com frações, mas você precisa arredondar para o próximo valor inteiro. Por exemplo, em C ++ / C #, você poderia usar o nível (int).
Para obter a fórmula de forma fechada acima, usei equações de diferença, soma de Gauss e uma fórmula quadrática.
Se você está interessado na solução desta fórmula passo a passo ...
Nós fazemos um algoritmo recursivo, iniciando nossas considerações Experience(next_level) = Experience(current_level) + current_level*50
.
Por exemplo, para obter , temos:XPL e v e l 3
XPL e v e l 3= XPL e v e l 2+ 2 × 50
De onde 2*50
vem a solicitação do OP de que a experiência necessária para alcançar o próximo nível é o nível atual * 50.
Agora, substituímos pela mesma lógica na fórmula. Isso é:XpL e v e l 2
Substitua na fórmula acima:XPLevel2=XPLevel1+2×50
XpLevel3=XpLevel1+1×50+2×50
e são apenas 50, que é o nosso ponto de partida. ConseqüentementeXpL e v e l 1
XpL e v e l 3= 50 + 2 × 50 = 150
Podemos reconhecer um padrão para calcular recursivamente níveis mais altos e uma cadeia finita de somatórios.
XpL e v e l N= 50 + 2 × 50 + 3 × 50 + . . . + ( N- 1 ) x 50 = Σi = 0n - 1i × 50
Onde N é o nível a ser alcançado. Para obter o XP para o nível N, precisamos resolver para N.
XpL e v e l N÷ 50 = ∑i = 0n - 1Eu
Agora, o lado direito é simplesmente um somatório de 1 a N-1, que pode ser expresso pela soma de Gauss famoso . ConseqüentementeN× ( N+ 1 ) ÷ 2 - N
XpL e v e l N÷ 50 = N( N+ 1 ) ÷ 2 - N
ou apenas
2 ∗ ( XpL e v e l N- 50 ) ÷ 50 = N( N+ 1 ) - 2 N
Por fim, colocando tudo de um lado:
0 = N2- N- 2 × XpL e v e l N÷ 50
Esta é agora uma fórmula quadrática que produz uma solução negativa e positiva, da qual apenas o positivo é relevante, pois não há níveis negativos. Agora obtemos:
N= 1 + 1 + 4 × 2 × XpL e v e l N50.-----------√2
O nível atual condicional no XP e no limite linear é, portanto:
L e v e l = 1 + 1 + 8 × XP÷ t h r e s h o l d-------------------√2
L e v e l = XP√5.0XP
Level 100
Editar : esta fórmula está funcionando como deveria e gera corretamente a level
condição atual XP
com uma progressão de limite linear, conforme solicitado pelo OP. (A fórmula anterior produziu "nível + 1" assumindo que o jogador partiu do nível 0, que foi o meu erro - eu havia resolvido isso no meu horário de almoço escrevendo em um pequeno lenço de papel! :)