Eu diria que depende, pelo menos parcialmente, do tipo de experiência que você deseja criar para o jogador. Considere dois exemplos, o primeiro dos quais é um RPG clássico baseado em turnos, o segundo é um shooter do tipo Gradius III , no qual você deseja que o poder do jogador seja escalado com base no progresso desde a morte de sua lista, não nos powerups (não dizer que é um bom sistema, apenas um exemplo).
No caso do RPG, seu sistema provavelmente opera com a premissa de que um jogador nunca perde experiência. Da mesma forma, provavelmente desejará agir com base no pressuposto de que é relativamente fácil obter algum nível de proficiência em alguma coisa, mas difícil de dominar (como a maioria das coisas no mundo real). Nesse caso, você pode querer desenvolver uma fórmula (como sugerida pela coderanger) que é exponencial em alguns aspectos. Onde a quantidade de experiência necessária para atingir o próximo nível é, de alguma forma, exponencialmente baseada no seu nível atual. Importante considerar, no entanto, a taxa com que seu jogador estará recebendo experiência enquanto estiver jogando. Por exemplo, um jogador que mata um Demônio de Fogo nível 63 esperaria receber mais experiência por sua morte do que se tivesse matado uma Lady Bug de nível 2. Então, ao projetar sua fórmula, certifique-se de levar em consideração o seu sistema XP. Principalmente porque, se não o fizer, matar a joaninha será tão lucrativo quanto matar inimigos mais difíceis.
Exemplo 1 (provavelmente não é um formulário que você usaria): XP_TO_LEVEL = ((CURRENT_LEVEL + 1) ^ SCALE) * XP_BASE
Exemplo 2: XP_TO_LEVEL = (XP_BASE * CURRENT_LEVEL) ^ SCALE
Onde XP_TO_LEVEL é o XP necessário para alcançar o próximo nível. CURRENT_LEVEL é o nível atual do jogador. XP_BASE é um número arbitrário para decidir quanto cada nível "vale" no XP. SCALE é o expoente que determina com que rapidez escalar o XP necessário para nivelar. Se SCALE for 1, cada nível terá experiência com XP_BASE. Se a ESCALA for menor que 1, cada nível terá menos experiência que o último. Se a ESCALA for maior que 1, cada nível terá mais experiência que o último.
A tabela a seguir assume uma ESCALA de 1.1 e uma XP_BASE de 100 usando o exemplo 2.
Current Level XP Needed Increase from Last Level
1 158 0
2 339 181
3 530 191
4 728 198
5 930 202
...
10 1995 218
Exemplo 3: XP_TO_LEVEL = ((CURRENT_LEVEL * SCALE) ^ 1,5) * XP_BASE
Onde SCALE ainda está determinando a rapidez com que escalar o XP_TO_LEVEL, mas funciona de maneira um pouco diferente.
A tabela a seguir assume uma ESCALA de 22 e um XP_BASE de 10 usando o exemplo 3.
Current Level XP Needed Increase from Last Level
1 28 0
2 80 52
3 146 66
4 226 80
5 316 90
...
10 894 130
No caso do clone Gradius, você pode adotar uma estratégia diferente. Você pode querer que o jogador suba de nível de maneira consistente, digamos a cada dois minutos. Além disso, depois que uma peça perde uma vida e, consequentemente, perde todos os seus poderes adquiridos, você pode ajudá-lo, elevando-a mais rapidamente até que ele atinja um nível apropriado para seu progresso no jogo. Nesse caso, sua fórmula provavelmente será mais linear, principalmente porque o usuário não consegue ver quanta experiência está ganhando por morte. Algo como, são necessários 50 XP para atingir um novo nível e cada inimigo vale 1 XP. Isso funciona muito bem, desde que você esteja fornecendo a ele um fluxo relativamente constante de inimigos. Mas, quando o jogador morre, ele perde tudo! O que você faz agora? Cada inimigo deve valer mais de 1 XP para atingir seu objetivo de alcançá-lo, para que o jogo seja justo novamente.
Exemplo: XP_FROM_EACH_ENEMY = BASE_XP + (CURRENT_LEVEL - DESIRED_LEVEL) Onde XP_FROM_EACH_ENEMY é quanto XP um inimigo concederia quando morto. BASE_XP é quanto XP um inimigo vale por padrão (pode variar por tipo de inimigo). CURRENT_LEVEL é o nível do jogador DESIRED_LEVEL é o nível em que você acha que o jogador deve estar.