Що є альтернативою пошкодження подряпин для вирішення бойових тупиків?


37

Пошкодження подряпин - це ігровий механік, завдяки якому будь-яка успішна атака завжди завдає мінімальної кількості шкоди. Це часто використовується в системах віднімання бойових дій, де захист віднімається безпосередньо від шкоди, завданої нападнику. Тому ціль завжди матиме мінімальний збиток.

Мінусом такої системи, принаймні, для мене є те, що це хак. Він приймає просту формулу , як Damage = Attack - Defenseі перетворює його в (трохи) більш складний: Damage = max(Attack - Defense, 1).

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

Крім того, це заохочує використання більшої кількості для Hp та пошкоджень, так що пошкодження від подряпин є справді незначними. Зрештою, якщо мінімальний збиток становить 1, а у вас всього 10 к.с., це все одно становить 10% від вашого здоров’я. Навіть при 20 к.с., це 5%. І я вважаю за краще уникати таких великих чисел, якщо це абсолютно не потрібно.

Однак є одна дуже важлива сторона пошкодження подряпин: вона вирішує проблему з тупиком.

Тупик буває, коли жодна сторона не в змозі завдати шкоди іншій. Якщо ви вкладете всі свої ресурси в оборону, а мало в атаку, то ваш персонаж може не завдати шкоди, але вони теж не зможуть впоратися . Таким чином, ви можете зіткнутися зіткненням, коли жодна сторона не зможе завдати шкоди, тому бій триває назавжди. Це особливо, якщо у вас немає випадкової механіки, як критичні удари (що я також ненавиджу).

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

Тому мені подобається мати бойову систему, де завжди буде результат. Але мені не подобається мати пошкодження подряпин. Які мої альтернативи?

Альтернативи, які не передбачають прокрутки випадкових чисел; Я хочу, щоб боротьба була на 100% детермінованою. Якщо ведеться той самий бій, має відбутися точно такий же результат.

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


8
Не могли б ви зробити систему по броні, що погіршується (за кожну зустріч), щоб вирішити проблему з тупиком?
Тетрад

1
Я б запропонував вам поглянути на "Шаблони дизайну успішних рольових ігор": rpg-design-patterns.speedykitty.com/doku.php/start
Exilyth

3
Позиція захисника диявола: замість того, щоб змусити гравців грати у ваш безпечний спосіб, чому б не дати їм вирішити, чи хочуть вони використовувати дурні конструкції, які можуть зайти в глухий кут?
Патрік Х'юз

3
@PatrickHughes: Тому що я вважаю, що поганий дизайн гри дозволяє гравцеві поставити себе в погану позицію без належного попередження. І навіть з попередженням, вони повинні мати можливість вийти з нього, як тільки побачать, що це відбувається. Якщо їх вибір дизайну персонажів неможливо повернути, вони повинні знати наперед, що вони не назавжди викручуються, роблячи вибір, який здавався гарною ідеєю в той час.
Нікол Болас

1
Поєднання rpg-design-patterns.speedykitty.com/doku.php/… з rpg-design-patterns.speedykitty.com/doku.php/pattern:hit_points та відсутність рандомізації призводить до проблеми, описаної у питанні. Проблему можна усунути за допомогою rpg-design-patterns.speedykitty.com/doku.php/… або rpg-design-patterns.speedykitty.com/doku.php/… .
Вихід

Відповіді:


41

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


21

Це здається дуже відкритим питанням. Рішення (які вже не згадуються) для запобігання тупикам:

  • Дозволити для тупиків як життєздатний кінцевий результат. Це найменш очікуване або типове рішення. Наприклад, у грі на RTS це може бути непросто припинення вогню або напружений, але стриманий конфлікт у жорстокому балансі.
  • Допустиме обмеження в часі за допомогою зв'язків
  • Обмеження в часі, коли виграє перше потрапляння / оцінка / бал після ліміту (раптова смерть / понаднормовий час)
  • Випадкові небезпеки в системі (а-ля бомби в Super Smash Bros ). Це змінює фокус ситуації від правопорушення до оборони.
  • Будь-який зовнішній фактор для врівноваження системи (наприклад, третій агент із високим ушкодженням та низькою бронею, домовленість обох сторін про «дуель» без усієї цієї броні)
  • Захист як на% знижений (можливо, найпростіший варіант, якщо захист обмежений)
  • Навички або тактики, які змінюють динаміку ігрового процесу (вибір, який не призводить до шкоди, наприклад, навичка Плаття / Невидимості)
  • Засоби нанесення набагато більшої шкоди (класичні критичні удари, бойові удари за стелс, бонуси за висоту, бонуси за місцевість, здатність перетворювати випадкові ділянки землі в лаву)
  • Засоби пошкодження або зменшення броні або заподіяння шкоди, безпосередньо націленої на персонажів високої оборони (навик, який обертає броню в обчисленні, тому агенти з нижчою захистом отримують менший збиток)
  • Предмети або навички з обмеженим використанням (наприклад, бомби, потужні, але здатності зливати). Корисний лише в тому випадку, якщо існують довгострокові цілі поза тупиком, з якими можна збалансувати обмежене використання
  • Закінчити бій штучним шляхом (класичний варіант "Утік")

7

Як варіант, ви можете додати накопичення рани. Безумовно, гігантська мідна сокира не проникне у важкі сталеві обладунки, але це завдасть певного пошкодження та може навіть зламати кістки. Те саме стосується куль і жилетів.

Кожного разу, коли персонаж потрапляє, перетворюйте частину пронизуючої та нарізаної шкоди у тупий збиток, який накопичується. Після певного порогу (який, наприклад, залежить від витривалості), накопичена шкода буде перешкоджати бойовим навичкам персонажа. Деякі варіанти тут:

  • Броня може бути менш ефективною при ударах по одних частинах кузова.

  • Значні рани: періодичні пошкодження, слабкість через біль.

  • Важкі рани: короткочасна втрата свідомості (робить характер дуже вразливим).

  • Екстремальні рани: постійна статична втрата (якщо персонажу вдається вижити).

Пов'язане: Механіка пошкоджень у карликовій фортеці


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

5

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

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


4

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

Якщо ви хвилюєтесь щодо аспекту презентації, ви можете розбити HP на сердечки або здоров’я піпси EG 100 к.с. = 1 серце. Серця починають чорніти, коли персонаж втрачає HP, а потім повністю зникає. Таким чином гравцеві легше зрозуміти, ніж 129301239103123 к.с., але вам не доведеться турбуватися про балансування якогось магічного рівняння.

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


1
" Якщо ви хочете детерміновану, покрокову гру, де атаки не базуються на введенні гравців безпосередньо [...], статистика захисту також здається трохи безглуздою. " Оборона не базується на концепції "шанс на міс". Це більше схоже на зменшення шкоди D&D, а не на THAC0 (або як вони сьогодні називають це). Захист означає, що напад збитку в 40 може бути зменшений до 10 збитків, якщо у вас є 30 оборонних. Я не бачу, як це коли-небудь може бути "безглуздим"
Нікол Болас

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

Наявність віднімаючої статистики захисту дає вам щось більше, ніж просто Hp (на додаток до всього, що ви, крім, як-от спеціальні атаки чи модифікатори). Це створює стратифікацію між користувачами, що втрачають час від часу, і користувачами з великою шкодою. Персонаж, який атакує кілька разів, але з меншим ушкодженням, зіткнеться з високим захисним характером, тоді як повільніший персонаж з великою шкодою буде робити більше шкоди з часом. Окремі точки потрапляння не створюють цього розшарування.
Нікол Болас

4

Додайте зношувальний механік для захисту. Зробіть кожну атаку трохи зменшеною захист цілі.

Врешті-решт навіть слабкий напад зносить захисні цілі, достатні для заподіяння фактичної шкоди.


3

Якщо ви все в порядку, виходячи зі світу цілих чисел і готові пришвидшити систему віднімання, ви можете використовувати алгоритм зменшення шкоди від Warlords Battlecry III:

damage = attack

while DR > 0:
    usedDR = DR
    if DR > damage
        usedDR = damage
    damage = damage - usedDR * 0.5
    DR = (DR - usedDR) / 2

HP = HP - damage

Це функція, яка дуже схожа на вищевказаний псевдокод:

damage(attack, DR) = attack * 2 ^ -(DR/attack)

Коли DR менше, ніж атака (пошкодження, що надходить), вона поводиться як атака - k * DR, де k дорівнює 0,693 ( ln(2)якщо бути точним). Коли ДР близький або більший, то нанесений збиток зменшується вдвічі DR/attack. Наприклад, для DR = 30 та нападу = 10, збиток склав би 1,25 (атака вдвічі зменшилася вдвічі).

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


1

Використовуйте поплавці.

Навіть якщо ви представляєте цілому HP на плеєрі, використовуйте float для hp та float для пошкодження.

Зараз я використовую класи дробових обладунків, де броня 1,0 непереможна, а броня 0,0 означає «бере повний збиток». Пошкодження зменшуються як:

float hpReduction = hp - dmg*(1.f - armor) ;

Ця формула дозволяє створити «подвійний збиток», встановивши броні на -1.

Я також класифікував ушкодження за категоріями, див. Для прикладу стислий / вибуховий пошкодження Starcraft або приклад системи пошкодження Єви .

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


0

Графік навичок може ставити деякі навички нанесення шкоди як необхідні умови для оборонних навичок вищого рівня, щоб зменшити здатність гравця робити високосиметричні склади.

Критичні удари можуть отримати певний збиток, якщо захист не є абсурдно високим. Якщо ви робите їх періодичними, а не випадковими, у вас все ще є детермінований бій.

Після декількох невдалих ударів, ви можете автоматично зменшити швидкість атаки на користь більшого шансу та шкоди. Ваш надшвидкий подряпин робив десять атак за секунду; тепер, після п'ятнадцяти атак, що не завдають шкоди, він отримує три атаки в секунду зі швидкістю + 50% та + 200% шкоди. Це схоже на критичні хіти, але це швидше для подібної ситуації.

Ви можете використовувати зменшення шкоди від броні на основі відсотків, але, щоб зробити це цікавішим, ніж інший спосіб придушити свій максимальний HP, ви могли б понизити відсоток на більш слабкі удари. Наприклад, 90% зниження на 1-20 к.с. шкоди, 60% на 20-30 і 30% на все інше.

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


0

Ви кажете, що хочете, щоб завжди було рішення, але чи це має бути перемога?

Розглянемо підхід, який застосовують Домініони 50 років нападник автоматично рушить. На черзі 75 захисник автоматично рушить. (Маршрут не працює автоматично - деякі одиниці не захищені від маршрутизації, і навіть якщо нерухомий модуль розбивається, він фактично не може вийти.) На черзі 100 все, що залишилося, вбивається.

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

Що я б запропонував:

Подивіться на якусь міру сили кожної сторони. (Точки ударів є очевидною відправною точкою, але будьте обережні. У домініонів є проблема в цьому відношенні, коли враховуються "втрати", які не мають сенсу, - це змінюється форма, викликається і т.д., що призводить до маршруту армій через жертви, коли вони не робили Навіть не беруть жодного.) Слідкуйте за досягнутим мінімальним значенням та відзначте, скільки обертів пройшло за час встановлення нового мінімуму. Якщо пройде занадто довго, не встановлюючи нового мінімуму, у вас є якийсь тупик, і зловмисник повинен відступити.


0

Альтернативу, якої я ще не бачив, є те, що, оскільки ваше значення броні робить атаку негативною, ви можете додати трохи RNG для справжнього блоку:

const stratchDamage = 1;
var armour = 10; 
var blockCount = 0;

function registerAttack (incomingAttack)
{
    var incomingDamage = incomingAttack - armour;

    // Nothing unusual, deal damage
    if( incomingDamage > 0 ) 
    {
        dealDamage(incomingDamage);
    } 

    // Armour cancels out attack, deal scratch damage
    else if( incomingDamage == 0 ) 
    {
        dealDamage(scratchDamage);
    }

    // Armour over attack value, check if can block
    else
    {
        var trueBlockChance = armour - incomingDamage;

        // blockCount starts at 0, will always block first attack
        if( trueBlockChance  > blockCount ) 
        {
            // Can technically do nothing, or trigger block animations etc
            block();
            blockCount ++; // Increment block so they can't block forever
        }
        else
        {
            dealDamage(stratchDamage);
            blockCount = 0;
        }
    }
}

Чим більший дефіцит пошкодження після броні врахований, тим більше ударів персонаж може блокувати перед тим, як прийняти ще одну пошкодження подряпин.

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

Бійки можуть зайняти тривалий час, якщо ви будете складати статистику у захисті від образи, але вона зрештою потрапить.


Цитата з ОП: Я хочу, щоб боротьба була на 100% детермінованою. Це не дозволяє здійснювати 100% детермінований бій.
Шаранор

Тоді блок також може бути покроковим, для кожного рівня trueBlock над атакою противник повинен атакувати, що багато разів, щоб досягти пошкодження подряпин. Ця ж ідея може застосовуватися.
Том 'Блакитний' Піддок

@Charanor - коригував відповідь на 100% детерміновану.
Том «Блакитний» Піддок

-1

Багато 3D-бойових ігор уникають пошкоджень подряпин. Приклади - Tekken і Soul Calibur 2. Вони уникають цього, ускладнюючи ідеальну оборону. Деякі атаки просто занадто швидкі, щоб реагувати на них. Я думаю, що це досить вдале рішення.


-1

Я думаю, що зниження ефективності оборони не є вдалим варіантом. Знищення сили гравця призводить до поганого досвіду гри. Чому б не піти навпаки?

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

Деякі pnp rpgs реалізують "механізм натягу". Кожен виток напруги збільшується на одиницю. Всі рулони мають доданий модифікатор значення натягу, підштовхуючи битву до кінця.

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

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

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