Я б сказав, що це залежить, принаймні частково, від типу досвіду, який ви хочете створити для гравця. Розглянемо два приклади, перший з яких - класичний покроковий 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, то кожен рівень забирає більше досвіду, ніж останній.
Наступна таблиця передбачає СКАЛЮ 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
У випадку з клоном Градіус ви можете скористатися іншою стратегією. Ви можете захотіти, щоб гравець послідовно піднімався, скажіть про кожні дві хвилини. Крім того, після того, як п'єса втратила життя і, отже, втратила всі свої здобуті сили, ви, можливо, захочете допомогти йому, швидше вирівнюючи його, доки він не досягне відповідного рівня для свого прогресу в грі. У цьому випадку ваша формула, ймовірно, буде більш лінійною, тим більше, що користувач не може зрозуміти, скільки досвіду він отримує за вбивство. Щось подібне, для досягнення нового рівня потрібно 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 - це рівень, на який ви думаєте, на якому гравцеві повинен бути.