Я занимаюсь разработкой простой текстовой батальной игры, и у меня возникают проблемы с подсчетом, сколько очков XP нужно заработать после битвы, вот несколько факторов, которые я хочу рассмотреть:
1) Игроки, конечно, должны зарабатывать хорошие XP, если они побеждают кого-то того же уровня
2) Игроки должны зарабатывать отличные XP, если они бьют кого-то более высокого уровня
3) Игроки должны зарабатывать плохой опыт, если они побеждают кого-то более низкого уровня
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 мой код выглядит следующим образом:
$offset = 30;
$multiplier = 1.17;
$base = $prevXp * $multiplier;
$xp = $base + $offset;
Я пробовал несколько разных вещей, но ни одна из них меня не впечатлила, я хотел бы поработать с вычислением разницы в XP и затем использовать какой-нибудь множитель, но результаты меня не впечатлили.
Любая помощь / вклад будет оценен.