Я занимаюсь разработкой простой текстовой батальной игры, и у меня возникают проблемы с подсчетом, сколько очков XP нужно заработать после битвы, вот несколько факторов, которые я хочу рассмотреть:
1) Игроки, конечно, должны получать хорошую ХР, если бьют кого-то одного уровня
2) Игроки должны зарабатывать отличные XP, если они побеждают кого-то более высокого уровня
3) Игроки должны зарабатывать плохие XP, если они побеждают кого-то более низкого уровня.
4) Вышесказанное должно хорошо масштабироваться, т. Е. Если игрок A уровня 10 и сражается с игроком B, который находится на уровне 9 или 11, разница не должна быть огромной (они, конечно, получат больше опыта за победу над персонажем уровня 11, но мы не ожидал бы, что это будет огромно), но если он будет сражаться на уровне 5 или 15, эта разница должна быть огромной.
Просто из-за проблем с вычислением чего-то, что хорошо работает во всех сценариях, в настоящее время моя таблица XP выглядит следующим образом:
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
В PHP мой код выглядит так, как показано ниже для расчета необходимой XP:
$offset = 30;
$multiplier = 1.17;
$base = $prevXp * $multiplier;
$xp = $base + $offset;
Я пробовал несколько разных вещей, но ни одна из них меня не впечатлила, я хотел бы поработать с вычислением разницы в XP между двумя игроками и затем использовать какой-то множитель, но у меня нет До сих пор впечатлили результаты.
Буду признателен за любую помощь / вклад.