Яка функція оцінки / рівня часто використовується?


9

У багатьох іграх ви підвищуєте рівень, коли досягаєте певного балу, а пізніші рівні досягти важче, ніж на початку.

Я підозрюю, що це якась експоненціальна функція, яка використовується, наприклад, WoW.

Хтось знає про добру експоненціальну функцію для цієї мети?



Відповіді:


11

Немає ніяких стандартів, а також насправді немає причин для цього. Людям, здається, подобається експоненціальний ріст, оскільки він змушує їх відчувати, що вони стають все сильнішими і щоразу стикаються з пропорційно більшими викликами, але насправді це справедливо лише в тому випадку, коли спосіб набору очок також не змінюється пропорційно. . Якщо досвід на перемогу зростає з тією ж швидкістю, що і за рівнем досвіду за рівнем, то й підйомів мало, або вони можуть просто залишатися постійними.

Крім того, наслідком є ​​те, що ви не можете просто вибрати функцію того, як ви хочете, щоб пройшла крива вашого досвіду, не знаючи, як ви хочете, щоб пройшло нарахування вашої роботи. І це рішення дизайну ігор на основі типу досвіду, який ви хочете, а не того, який ми можемо надати вам.

Все ж, щоб відповісти на ваше запитання: тип функції, яку ви бачили в іншому місці, - це щось подібне, тривіальний поліном з коефіцієнтом масштабу:

поріг_для_наступного рівня = х * поточний_уровень у

Типові значення можуть бути x = 1000, y = 1,5. наприклад:

level 1 = 1000
level 2 = 2828
level 3 = 5196
...
level 10 = 31623
etc.

Якщо ви хочете, щоб нахил був крутішим, ви збільшуєте y. Якщо ви хочете, щоб цифри були більшими, ви збільшуєте х.

Можливо, ви хочете мати номери більш круглих, в цьому випадку просто заокруглюйте кінцевий результат до 2 або 3 значущих цифр або найближчої тисячі, що завгодно.

Просто пам’ятайте, що ці значення є безглуздими ізольовано. Якщо для переходу від рівня 15 до рівня 16 потрібно 15000 досвіду, то ви повинні переконатися, що ваш дизайн гри робить практичним для персонажа рівня 15 набрати 15000 очок досвіду під час звичайної гри. Немає сенсу просто налаштовувати криву після тестування, тому що це, як правило, занадто трудомістко - ви повинні почати з кривої, яка відповідає нагородам, яку видає ваша гра таким чином, що відповідає вашому наміченому дизайну.


4

Морія / Ангбанд (і всі їхні спинофи, в тому числі - дискусійно - Diablo) базують свої системи на відповідності рівня монстра до рівня гравця, щоб побачити, що ви заробляєте, підвищуючи вимоги XP на рівень понад це.

У Діабло є оптимальні рівні монстрів, яких можна вбити, в межах 5 рівнів від вас у позитивному та негативному. Це виглядає приблизно так (вибачте, якщо це не точно, фанати Diablo):

XP Gain = monsterBaseXP * (5-|(characterLevel-monsterLevel)|) / 5
(where result cannot drop below 0)

Приклади для персонажа Рівень 16: Рівень Monster A: 16. Отримайте 100% бази монстрів XP. Рівень Monster B: 13. Отримайте 40% бази монстрів XP. Рівень Monster C: 20. Отримайте 20% бази монстрів XP. Рівень Monster D: 23. Отримайте 0% бази монстрів XP.

У Angband (модель, яку я віддаю перевагу) це щось подібне:

XP Gain = monsterBaseXP * monsterLevel / characterLevel.

Отже, якщо ви вбили монстра 50 рівня, коли ви були на рівні 5, ви отримаєте 10x XP, який отримає персонаж рівня 50, який убив би того самого монстра. Мені це подобається, це високий ризик, висока винагорода. Я втратив тисячі і тисячі персонажів в Ангбанді до цього. Але ті, хто це встигає, ну вони легендарні. Я думаю, що я одного разу потрапив на рівень 29 миттєво з рівня 1;) Так само, персонаж рівня 50, що вбиває монстра рівня 5, отримав би 1/10 числа XP, який отримав би один персонаж за вбивство цього монстра. Крім того, оскільки базові XP також зростають, це означає, що вбивство монстра низького рівня все одно може принести вам якусь винагороду, але вийти занадто далеко вниз і стає абсолютно безглуздим.

В обох іграх вони додатково використовують мультиплікатори на необхідних XP (у зростаючому масштабі), і співвідношення між цим монстром і оптимальним рівнем рівня стає поступово крутішим.

Найпростіша форма цієї ідеї - зробити наступне. Вирішіть, скільки монстрів рівного вам рівня, ви повинні вбити кожен рівень для оцінки (ігноруючи винагороду квесту тощо). Скажімо, 100 - незалежно від вашого рівня. Скажіть, що якщо гравець вбиває монстра рівного собі, вона отримує 1XP.

Використовуючи формулу, схожу на Angband, для винагородження збільшення та зменшення відповідно до рівня монстра, ваша таблиця вирівнювання лінійна:

1: 100xp
2: 200xp
3: 300xp

...І так далі. Я вважаю, що це є найпростішим стрибком з точки зору - налаштувати, якщо це доречно, включити до монстра базу монстрів, рівні відсічки тощо тощо.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.