Estou desenvolvendo um jogo de batalha de texto simples e tendo alguns problemas para calcular quanto XP deve ser ganho após uma batalha, há alguns fatores que quero considerar:
1) Obviamente, os jogadores devem ganhar um bom XP se vencerem alguém do mesmo nível
2) Os jogadores devem ganhar excelentes XP se vencerem alguém de nível superior
3) Os jogadores devem ganhar XP ruim se derrotarem alguém de nível mais baixo
4) As opções acima devem ser bem dimensionadas, ou seja, se o jogador A for o nível 10 e enfrentar o jogador B com nível 9 ou 11, a diferença não deve ser grande (eles obviamente ganhariam mais XP por derrotar o personagem do nível 11, mas não esperar que isso seja enorme), mas se ele batalhar um nível 5 ou 15, essa diferença deve ser enorme.
Apenas com problemas para calcular algo que funciona bem em todos os cenários, atualmente minha tabela XP se parece com a abaixo:
Current Level XP Needed Increase from Last Level
1 30 0
2 65 35
3 106 41
4 154 48
5 210 56
...
10 672 123
No PHP, meu código se parece com o abaixo para calcular o XP necessário:
$offset = 30;
$multiplier = 1.17;
$base = $prevXp * $multiplier;
$xp = $base + $offset;
Eu tentei algumas coisas diferentes, mas não fiquei impressionado com nenhuma delas, gostaria de trabalhar com o cálculo da diferença no XP e depois usar algum tipo de multiplicador, mas não fiquei impressionado com os resultados.
Qualquer ajuda / entrada seria apreciada.