Estoy desarrollando un juego de batalla de texto simple y tengo algunos problemas para calcular cuánto XP se debe ganar después de una batalla, hay algunos factores que quiero considerar:
1) Los jugadores, por supuesto, deben ganar buenos XP si vencen a alguien del mismo nivel
2) Los jugadores deberían obtener una gran XP si vencen a alguien de un nivel superior
3) Los jugadores deberían ganar XP pobre si derrotan a alguien de un nivel inferior
4) Lo anterior debería escalar bien, es decir, si el jugador A es de nivel 10 y lucha contra el jugador B de nivel 9 u 11, la diferencia no debería ser enorme (por supuesto, obtendrían más XP por derrotar al personaje de nivel 11, pero no lo haríamos) esperar que esto sea enorme), pero si él luchara contra un nivel 5 o 15, esta diferencia debería ser enorme.
Solo teniendo problemas para calcular algo que funciona bien en todos los escenarios, actualmente mi tabla de XP se parece a la siguiente:
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
En PHP mi código se ve a continuación para calcular el XP necesario:
$offset = 30;
$multiplier = 1.17;
$base = $prevXp * $multiplier;
$xp = $base + $offset;
He intentado algunas cosas diferentes, pero no me han impresionado, me gustaría trabajar calculando la diferencia en XP y luego usando algún tipo de multiplicador, pero no me han impresionado los resultados.
Cualquier ayuda / aportación sería apreciada.