Я розробляю просту гру з текстовою битвою і маю деякі проблеми з підрахунком того, скільки XP потрібно заробити після бою, є кілька факторів, які я хочу врахувати:
1) Звичайно, гравці повинні заробляти хороший XP, якщо вони б'ють когось одного рівня
2) Гравці повинні заробляти чудовий XP, якщо вони б'ють когось вищого рівня
3) Гравці повинні заробляти поганий XP, якщо вони переможуть когось нижчого рівня
4) Вищезазначене має добре масштабуватись, тобто якщо гравець A - рівень 10 та бореться з гравцем B, який має рівень 9 чи 11, різниця не повинна бути величезною (вони, звичайно, наберуть більше XP за перемогу над символом рівня 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, а потім з використанням якогось множника, але я не був вражений результатами.
Будь-яка допомога / вклад буде вдячний.