Как сбалансировать прирост опыта в RPG

10

В настоящее время я занимаюсь разработкой RPG-игры с классическими очками опыта и механикой левелупа. Игрок убивает монстров, набирает очки опыта, повышается на уровне, когда они набирают достаточно и становятся сильнее.

Как мне сбалансировать количество очков опыта, необходимое для достижения каждого уровня, и количество опыта, присуждаемое каждым монстром на каждом уровне?

Philipp
источник
Связанные: gamedev.stackexchange.com/questions/10695/…
MichaelHouse
Спасибо за публикацию. Я думаю, что самостоятельно отвечать на вопросы, чтобы делиться информацией - это здорово. Тем не менее, я думаю, что вопрос должен быть в состоянии стоять самостоятельно. Если этот вопрос был опубликован без ответа, он, вероятно, будет закрыт как слишком широкий. Может быть, вы можете немного изменить вопрос, чтобы включить больше требований и указать точную проблему, с которой вы столкнулись? Вопрос очень широкий на данный момент, и ответ по сути «зависит от того, что вы хотите».
MichaelHouse

Ответы:

18

Лучший способ прийти к выводу в этом отношении - как и в большинстве случаев в разработке игр - сначала подумать о том, как вы хотите, чтобы игра играла , а затем придумать математику, которая приведет к игре, подобной этой.

Как долго вы хотите, чтобы игрок играл на каждом уровне?

В однопользовательской RPG, ориентированной на сюжет, вы, скорее всего, захотите сохранять уровни прокачки как постоянный поток вознаграждений и повышать уровень игрока каждые несколько минут в течение всей игры. Скорость levelups остается постоянной, поэтому функция минут на уровне постоянна ( time = c).

В более сфокусированной на достижениях игре, такой как MMORPG, вы обычно хотите, чтобы левелупы были частыми для новичков, но становятся все реже и реже по мере продвижения игрока. В этом случае ваша функция минут на уровне будет полиномиальной ( time = Level ^ c) или даже экспоненциальной ( time = c ^ Level). Однако, принимать число уровня как есть в экспоненциальной формуле слишком экстремально. Это может быть хорошей идеей разделить ее на константу, чтобы сделать увеличение намного медленнее, сохраняя при этом экспоненциальный характер ( time = c1 ^ (1 + Level / c2)).

Я бы порекомендовал вам использовать электронную таблицу для сокращения чисел. Создайте таблицу со столбцом с числами от 1 до ожидаемого максимального уровня и вторым столбцом с формулой уровня. Это легко позволяет вам экспериментировать с различными формулами, чтобы найти числа, которые вам нравятся. Может быть, вы получите лучшие результаты, когда вы объединяете многочлен с экспоненциальным компонентом?

Помните, что вы видите здесь сетевое время боя . В игровое время игрок активно набирает очки опыта. Он не считает время, которое игрок проводит за разговорами с неигровыми персонажами, сравнивая их экипировку и выполняя другие задачи, которые напрямую не вызывают прогресса.

В моей текущей игре (MMORPG) я придумал формулу seconds(level) = 10 ^ (1 + Level / 20). Первые несколько уровней занимают только секунды фактического боя (очень мгновенное удовлетворение во время фазы обучения), уровни 20 - 40 занимают минуты, в 50-х это становится часами за уровень, а когда приближается к максимальному уровню 100, это занимает целые недели, чтобы увидеть прогресс.

Насколько разным должно быть вознаграждение за каждого врага?

Даже если у ваших врагов нет явной (или значимой) характеристики уровня, вы захотите сделать их сбалансированными для определенного уровня персонажа. Но насколько больше опыта следует рекомендовать врагу для 40-го уровня, а не 30-му?

Ответ на этот вопрос тесно связан с тем, насколько мощнее персонаж получает за уровень и насколько далеко вы хотите позволить ему быть впереди или позади текущих врагов по уровню персонажа.

Некоторые игровые системы, такие как World of Warcraft, например, делают бессмысленным проведение любого боя с врагом чуть ниже или выше уровня персонажа игрока. Все, что находится на нескольких уровнях выше, уничтожит игрока, все, что находится на нескольких уровнях ниже, вообще не будет проблемой (и не будет вознаграждением).

Контрпримером была бы серия Disgaea. В этой игре вы можете легко побеждать врагов в несколько раз выше уровня ваших собственных персонажей, когда вы играете в нее умно.

Чем более ограничительным вы хотите быть в скобке уровня, которая является честной борьбой для игрока, тем больше вам нужно убедиться, что игрок не отстает или не опередит уровень врагов, с которыми он в настоящее время сражается. Когда игрок отстает от врагов, игра станет безнадежно сложной без помола. Когда игрок опередит монстров, игра станет слишком легкой и скучной.

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

Кривая полинома exp ( exp = Level ^ c) обычно работает хорошо. Чем больше значение c, тем больше вы заставляете игрока находиться в скобках текущего уровня монстров, с которыми он сражается.

Имейте в виду, что враги, для победы которых требуется больше времени, должны также давать пропорционально больший опыт. Битва, которая занимает 20 секунд, должна дать вдвое больше опыта, чем битва, которая занимает всего 10 секунд. Это расширяет вашу формулу до exp = (Level ^ c) * minutes_per_combat.

Окончательная формула exp-per-level

Окончательная формула теперь может быть получена из двух. experience per levelЯвляется time per level in minutesумноженным с experience gained per minute. Так что просто возьмите две формулы, которые вы придумали в последних двух разделах, и умножьте их. Вот оно: Ваша формула опыта на уровне.

С полиномиальным увеличением времени на уровень формула будет

exp(level) = (level ^ c1) * (level ^ c2)

где

  • c1 зависит от того, как долго вы хотите пройти каждый уровень
  • c2 зависит от того, насколько близко вы хотите удержать игрока до уровня врагов, с которыми он сражается

Что может пойти не так?

Даже самая продуманная концепция не может заменить правильное тестирование. Если в ходе вашего игрового тестирования выясняется, что среднестатистические игроки прогрессируют намного быстрее или медленнее, чем вы хотите, это, как правило, признак того, что вы переоценили или недооценили рекомендуемые уровни своих врагов и то, сколько времени средний игрок убивает их. Попробуйте вместе со своими игроками проанализировать, каких врагов сложно убить на каком уровне персонажа, и соответственно скорректируйте их значение опыта или характеристики.

Philipp
источник