Я бы сказал, что это зависит, по крайней мере частично, от типа опыта, который вы хотите создать для игрока. Рассмотрим два примера, первый из которых - классическая пошаговая RPG, второй - Gradius III шутер типа , в котором вы хотите, чтобы сила игрока масштабировалась на основе прогресса с момента его смерти в списке, а не на бонусы (не сказать, что это хорошая система, просто пример).
В случае с RPG ваша система, вероятно, работает в предположении, что игрок никогда не теряет опыта. Точно так же он, вероятно, захочет действовать, исходя из предположения, что относительно легко получить некоторый уровень мастерства в чем-то, но трудно овладеть им (как и большинство вещей в реальном мире). В этом случае вы можете разработать формулу (например, предложенный кодрангером), которая в некоторых отношениях будет экспоненциальной. Где количество опыта, необходимое для достижения следующего уровня, каким-то образом экспоненциально зависит от вашего текущего уровня. Однако важно учитывать скорость, с которой ваш игрок будет получать опыт во время игры. Например, игрок, убивший Огненного Демона 63-го уровня, мог бы получить больше опыта за свое убийство, чем если бы он убил Леди Баг 2-го уровня. Так что при разработке вашей формулы, убедитесь, что вы принимаете во внимание вашу систему XP. Тем более, что если вы этого не сделаете, то убить божью коровку будет так же выгодно, как и убить более сильных врагов.
Пример 1 (скорее всего, вы не используете форму): XP_TO_LEVEL = ((CURRENT_LEVEL + 1) ^ SCALE) * XP_BASE
Пример 2: XP_TO_LEVEL = (XP_BASE * CURRENT_LEVEL) ^ SCALE
Где XP_TO_LEVEL - это XP, необходимая для достижения следующего уровня. CURRENT_LEVEL - текущий уровень игрока. XP_BASE - это произвольное число для определения того, сколько «стоит» каждый уровень в XP. SCALE - показатель, определяющий, как быстро масштабировать XP, необходимую для уровня. Если SCALE равен 1, то каждый уровень будет проходить опыт XP_BASE. Если SCALE меньше 1, то каждый уровень будет занимать меньше опыта, чем последний уровень. Если SCALE больше 1, то каждый уровень потребует больше опыта, чем последний уровень.
В следующей таблице предполагается, что SCALE равен 1.1, а XP_BASE - 100, как в примере 2.
Current Level XP Needed Increase from Last Level
1 158 0
2 339 181
3 530 191
4 728 198
5 930 202
...
10 1995 218
Пример 3: XP_TO_LEVEL = ((CURRENT_LEVEL * SCALE) ^ 1.5) * XP_BASE
Где SCALE все еще определяет, как быстро масштабировать XP_TO_LEVEL, но он работает немного по-другому.
В следующей таблице предполагается, что SCALE равен 22, а XP_BASE - 10, как в примере 3.
Current Level XP Needed Increase from Last Level
1 28 0
2 80 52
3 146 66
4 226 80
5 316 90
...
10 894 130
В случае клона Gradius, вы можете выбрать другую стратегию. Вы можете захотеть, чтобы игрок постоянно повышался, скажем, каждые две минуты. Кроме того, после того, как игра потеряла жизнь и, следовательно, потеряла все его приобретенные способности, вы можете помочь ему в этом, повышая его / ее уровень быстрее, пока он не достигнет соответствующего уровня для своего прогресса в игре. В этом случае ваша формула, скорее всего, будет более линейной, тем более что пользователь не видит, сколько опыта он получает за убийство. Примерно так, для выхода на новый уровень требуется 50 XP, а каждый враг стоит 1 XP. Это прекрасно работает, если вы снабжаете его относительно устойчивым потоком врагов. Но когда игрок умирает, он теряет все это! Чем вы сейчас занимаетесь? Каждый враг должен стоить больше 1 XP, чтобы достичь цели, чтобы догнать его, чтобы игра снова была честной.
Пример: XP_FROM_EACH_ENEMY = BASE_XP + (CURRENT_LEVEL - DESIRED_LEVEL) Где XP_FROM_EACH_ENEMY - это количество XP, которое враг получит, будучи убитым. BASE_XP - это сколько XP стоит врагу по умолчанию (может варьироваться в зависимости от типа врага). CURRENT_LEVEL - это уровень игрока. DESIRED_LEVEL - это уровень, на котором, по вашему мнению, должен находиться игрок.