Розрахунок очок за досвід, зароблений після бою


9

Я розробляю просту гру з текстовою битвою і маю деякі проблеми з підрахунком того, скільки XP потрібно заробити після бою, є кілька факторів, які я хочу врахувати:

1) Звичайно, гравці повинні заробляти хороший XP, якщо вони б'ють когось одного рівня

2) Гравці повинні заробляти чудовий XP, якщо вони б'ють когось вищого рівня

3) Гравці повинні заробляти поганий XP, якщо вони переможуть когось нижчого рівня

4) Вищезазначене має добре масштабуватись, тобто якщо гравець A - рівень 10 та бореться з гравцем B, який має рівень 9 чи 11, різниця не повинна бути величезною (вони, звичайно, наберуть більше XP за перемогу над символом рівня 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 мій код виглядає наступним чином для обчислення необхідного XP:

$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, рівень), можливо. Тоді ви можете визначити "exp to level" з точки зору кратного винагороди за базовий XP. легше балансувати таким чином.)

Як варіант, давайте зробимо це справді просто. Зробіть те саме, що базує XP-нагороду. Потім складіть таблицю вручну для бажаних бонусів від різного рівня. Зробіть це на основі співвідношення, так що вбивство когось на один рівень вище вас завжди дає, скажімо, 10% бонус XP над базовою винагородою. А тепер вам зовсім не потрібно хвилюватися про формулу - ви можете просто змусити числа робити те, що вам потрібно.

Формули завищені, іноді потрібно просто забити деякі цифри і відтворити їх на слух.


1
+1 дляFormulas are overrated, sometimes you just need to jam some numbers in and play it by ear.
RCIX

2

Я б сказав щось на кшталт "отримати xp шляхом дельта / пошкодження шкоди". Тож якщо рівень 10 зі 100 к.с. бореться за рівень 15 з 200 к.с. Це здається несправедливим, але якби рівень 10 зміг би вбити рівень 15, він отримав би вдвічі більше, ніж він отримав, якщо битися з рівнем 10 лише 100 к.с.

Також таким чином вам не доведеться турбуватися про речі, якби двоє людей билися з одним ворогом різною технікою. Наприклад, якщо рівень 8 і рівень 10 борються з рівнем 13. Якщо рівень 8 має кращу екіпіровку / броню, то він отримає більше xp, тоді рівень 10 просто передбачає, що він наніс більше шкоди рівню 13.

Але найважливіше: встановити правила, playtest, встановити правила, playtest, встановити правила, plasytest тощо, тощо, тощо ...

Навіть найкращі MMO від кращих розробників налаштовують свою систему розподілу xp, поки гра живе.


0

Просто IMHO, найважливіше, щоб виправитись - це масштабування кількості XP, необхідного для рівня. Мій друг використав варіацію вольового рівня для свого браузера, подібного до розбіжника, наприклад 100XP, 100XP, 200XP, 300XP, 500XP, 800XP тощо тощо.

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

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