Расчет очков опыта, заработанных после битвы

9

Я занимаюсь разработкой простой текстовой батальной игры, и у меня возникают проблемы с подсчетом, сколько очков 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 и затем использовать какой-нибудь множитель, но результаты меня не впечатлили.

Любая помощь / вклад будет оценен.


источник
2
Я даже не читаю, просто зайдите туда -> gamebalanceconcepts.wordpress.com/2010/07/07/… <-
o0 '.
Во-первых, вы должны найти себе копию руководства для мастеров D & D из второго или третьего издания. Хорошие ресурсы для уже протестированных / сбалансированных систем награждения XP.
Ричард Фабиан

Ответы:

13

Два предложения:

Экспоненты! Рассчитайте «базовую награду XP» для каждого уровня. Тогда формула для убийства будет base_xp_reward * pow (1.1, target_level - player_level). Возможно, вы захотите ограничить усиление до максимума, чтобы несколько аннулировать эксплойты, и вам может потребоваться дать нулевое значение XP ниже определенной разницы, чтобы предотвратить фарм лоуби.

(Базовая награда XP также может быть простой экспоненциальной прогрессией, если вам нравится - constant_factor * pow (1.25, level), возможно. Тогда вы можете определить «exp to level» в терминах кратных базовой награде XP. так легче сбалансировать.)

В качестве альтернативы, давайте сделаем это действительно простым. Сделайте ту же самую вещь, основанную на XP-награде. Затем вручную составьте таблицу для получения желаемых бонусов от различий в уровнях. Сделайте это на основе соотношения, так что убийство кого-то на один уровень выше вас всегда дает, скажем, 10% бонуса XP к базовой награде. И теперь вам не нужно беспокоиться о формуле - вы можете просто заставить числа делать то, что вы хотите.

Формулы переоценены, иногда нужно просто вставить некоторые цифры и сыграть их на слух.

ZorbaTHut
источник
1
+1 заFormulas are overrated, sometimes you just need to jam some numbers in and play it by ear.
RCIX
2

Я бы сказал что-то вроде «получить хр за урон дельта / получен». Так что если уровень 10 с 100 л.с. борется с уровнем 15 с 200 л.с. Это кажется несправедливым, но если 10-й уровень сможет убить 15-й уровень, он получит вдвое больше опыта, чем если бы сражался с 10-м уровнем только с 100 л.с.

Кроме того, таким образом вам не нужно беспокоиться о вещах, как, если бы два человека сражались с одним и тем же врагом с разным снаряжением. Например, если уровень 8 и уровень 10 сражаются с уровнем 13. Если уровень 8 имеет лучшую экипировку / броню, он получит больше опыта, тогда уровень 10 просто потому, что он наносит больше урона уровню 13.

Но самое главное: установить правила, тестирование, установить правила, тестирование, установить правила, тестирование и т. Д., И т. Д ...

Даже лучшие MMO от лучших разработчиков корректируют свою систему распространения XP, пока игра живет.

Эспен
источник
0

Просто ИМХО, самая важная вещь, чтобы получить право - это масштабируемое количество XP, необходимое для повышения уровня. Мой друг использовал вариант Фибоначчи для своего браузера Rogue-like, например, 100XP, 100XP, 200XP, 300XP, 500XP, 800XP и т. Д. И т. Д.

Я также слышал о механике в некоторых играх, где уровень вычитается из опыта, заработанного каждой битвой. Например, если конкретная битва зарабатывает 50XP, и они находятся на уровне 20, то они получают только 30XP. Если бы они были на уровне 50 или выше, они бы ничего не заработали.

earok
источник