Что является альтернативой царапинам, чтобы решить боевой тупик?


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
Позиция Devil's Advocate: вместо того, чтобы заставлять игроков действовать безопасным образом, почему бы не позволить им решить, хотят ли они использовать глупые сборки, которые могут завести тупик?
Патрик Хьюз

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/… .
Exilyth

Ответы:


41

Вы могли бы реализовать систему усталости / выносливости. По мере того, как все больше и больше атак выполняется, игрок становится все более утомленным, и это означает, что он не может поддерживать такую ​​хорошую защиту (когда рука щита внезапно начинает чувствовать себя действительно тяжелой после 50-кратного удара мечом), когда усталость увеличивается, защита падает. Это означает, что игрок, который развил хорошего персонажа, не получит урона в быстрых схватках, но более длительный бой приведет к увеличению урона, предотвращая тупик.


21

Это кажется очень открытым вопросом. Решения (которые еще не упомянуты) для предотвращения тупиков:

  • Разрешить тупики в качестве жизнеспособного конечного результата. Это наименее ожидаемое или типичное решение. Например, в игре RTS это может быть непростое перемирие или напряженный, но сдержанный конфликт с жестоким балансом.
  • Ограничение по времени с допустимыми связями
  • Ограничение по времени, в течение которого выигрывает первый удар / оценка / очко после ограничения (внезапная смерть / сверхурочные)
  • Случайные опасности в системе (а-ля бомбы в Super Smash Bros ). Это меняет фокус ситуации с нападения на защиту.
  • Любой внешний фактор для дисбаланса системы (например, третий агент с высоким уроном и низкой броней, соглашение обеих сторон "дуэли" без всей этой брони)
  • Защита на% снижена (возможно, самое простое решение, если защита ограничена)
  • Навыки или тактика, которые изменяют динамику игрового процесса (варианты, которые не приводят к повреждению, такие как навык Плащ / Невидимость)
  • Способ нанесения гораздо более высокого урона (классические критические удары, бонусы скрытности, бонусы высоты, бонусы ландшафта, способность, которая превращает случайные участки земли в лаву)
  • Средства повреждения или понижения брони или нанесения урона, непосредственно нацеленного на персонажей с высокой защитой (навык, который инвертирует броню в расчете, поэтому агенты с более низкой защитой получают меньше урона)
  • Предметы или навыки ограниченного использования (например, бомбы, мощные, но дренирующие способности). Полезно только в том случае, если есть долгосрочные цели за пределами тупика, с которыми можно сбалансировать ограниченное использование
  • Завершить бой искусственно (классический вариант «Беги»)

7

Как вариант, вы можете добавить накопление раны. Конечно, гигантский медный топор не проникает сквозь тяжелую стальную броню, но наносит тупой урон и может даже сломать кости. То же самое верно для пуль и жилетов.

Каждый раз, когда персонаж поражен, превращайте часть пронзительного и рубящего урона в тупой урон, который накапливается. После определенного порога (который зависит, например, от выносливости) накопленный урон будет влиять на боевые навыки персонажа. Некоторые варианты здесь:

  • Броня может быть менее эффективной при попадании в те же части тела.

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

  • Тяжелые раны: кратковременная потеря сознания (делая персонажа очень уязвимым).

  • Экстремальные раны: постоянная потеря характеристик (если персонажу удается выжить).

Связанный: Механика повреждения в Крепости Гномов


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

5

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

Пользователи могут накладывать свои доспехи для защиты от всех типов повреждений, но они не могут защитить от всех типов повреждений одновременно. Это также реализует некоторую стратегию в сражениях, где игрокам приходится переключать типы урона, чтобы пройти через различные уровни брони.


4

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

Если вас беспокоит аспект презентации, вы можете разбить HP на пункты Hearts или Health, например, 100 л.с. = 1 сердце. Сердца начинают чернеть, когда персонаж теряет здоровье, а затем полностью исчезают. Таким образом, игроку легче понять, чем 129301239103123hp, но вам не нужно беспокоиться о балансировке какого-то магического уравнения.

Если вы беспокоитесь о реализме, вы всегда можете оживить его, чтобы он выглядел так, как будто цель атаки успешно блокирует, или только слегка царапается до смертельного удара.


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

1
Я знаю, что математика немного отличается, но на самом деле не существует огромной разницы с точки зрения игрового процесса между простым предоставлением персонажу пропорционального количества здоровья вместо этого и уменьшением урона на определенную величину. Нет, если всегда должен быть какой-то способ нанести урон цели. РЕДАКТИРОВАТЬ: Это при условии, что нет никаких специальных атак, которые игнорируют защиту, или другие модификаторы игрового процесса.
Льюис Уэйкфорд

Субтрактивная защита дает вам нечто большее, чем просто 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 близок или больше, тогда входящий урон, чем урон, уменьшается вдвое 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 в конечном итоге Cherry Tap вас до смерти, но атаки, как представляется, не наносят урон игроку (он останется на 1 л.с. при переходе с 1.15 л.с. до 1.1499 л.с. следующая атака ..)


0

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

Критические удары могут нанести некоторый урон, если защита не слишком высока. Если вы сделаете их периодическими, а не случайными, у вас все равно будет детерминированный бой.

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

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

Наконец, не беспокойтесь о больших количествах. Они дают вам гораздо более высокую степень контроля, чем маленькие. Если персонаж первого уровня начинается с 100 очков жизни, это значит, что вы можете убить его за семь попаданий, но не за пять. Это означает, что вы можете получить урон от яда и другие эффекты с течением времени, которые не будут ужасно разрушительными (а также те, которые, если хотите). Если вам не нравится отображать большие числа, найдите способ не отображать их.


0

Вы говорите, что хотите, чтобы всегда было решение, но должно ли это быть победой?

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

Хотя я не согласен с тем, как именно он функционирует (есть ситуации, когда просто требуется слишком много времени, чтобы убить другую сторону), основная идея остается в силе.

Что бы я предложил:

Посмотрите на некоторую меру силы каждой стороны. (Хитпоинты - очевидная отправная точка, но будьте осторожны, у Доминиона есть проблема в этом отношении, когда подсчитывается «потеря» хитпоинтов, которая не имеет смысла - изменение формы, вызов и т. Д., Что приводит к разгрому армий из-за потерь, когда они даже не бери.) Следи за достигнутым минимальным значением и запомни, сколько оборотов было с тех пор, как был установлен новый минимум. Если он идет слишком долго без установки нового минимума, у вас есть какой-то тупик, и атакующий должен отступить.


0

Альтернатива, которую я еще не видел, состоит в том, что, поскольку значение вашей брони делает атаку отрицательной, вы можете добавить немного ГСЧ для истинного блока:

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% детерминированный бой.
Charanor

Тогда блок также может быть основан на поворотах: для каждого уровня истинного блока в течение атаки противник должен атаковать столько раз, чтобы получить царапиный урон. Та же идея может применяться.
Том Блю

@Charanor - исправил ответ, чтобы он был на 100% детерминированным.
Том Блю

-1

Множество трехмерных файтингов позволяют избежать повреждений от царапин. Примерами являются Tekken и Soul Calibur 2. Они избегают этого, затрудняя идеальную защиту. Некоторые атаки слишком быстры, чтобы реагировать на них. Я думаю, что это довольно хорошее решение.


-1

Я думаю, что снижение эффективности обороны не является хорошим вариантом. Депопуляция игрока приводит к плохому игровому опыту. Почему бы не пойти наоборот?

Почему бы не включить Атаку с течением времени. Это увеличивает урон от царапин со временем, уменьшая стимул к блокировке. В середине поздней игры персонаж может убить другого, одновременно крича на него, пока он защищается.

Некоторые pnp rpgs реализуют «механизм натяжения». Каждый ход напряжение увеличивается на единицу. Все броски имеют добавленный модификатор значения натяжения, подталкивая битву к концу.

Другая идея, исходящая из файтингов, - это атака, проходящая через защиту. Я не знаю, является ли ваша игра пошаговой или в реальном времени, но эта атака также может открыть противнику комбо или временно отключить его или некоторые его способности.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.