Ущерб от царапин - это игровая механика, при которой любая успешная атака всегда наносит минимальный урон. Это часто используется в вычитающих боевых системах, где защита вычитается непосредственно из урона, нанесенного атакующим. Поэтому цель всегда будет получать минимальный урон.
Недостатком такой системы, по крайней мере для меня, является то, что это взлом. Он принимает простую формулу , как Damage = Attack - Defense
и превращает его в (немного) более сложный: Damage = max(Attack - Defense, 1)
.
Я также чувствую, что это умаляет умение игрока развивать своего персонажа и т.д. Независимо от того, сколько бонусов защиты они получают, каждая атака будет наносить небольшой урон. Так зачем защищать себя так высоко, если это ничего не значит?
Кроме того, теперь это поощряет использование больших чисел для Hp и урона, так что урон от царапин действительно незначителен. В конце концов, если минимальный урон равен 1, а у вас всего 10 л.с., это все равно 10% вашего здоровья. Даже с 20 л.с. это 5%. И я бы предпочел не использовать такие большие числа, если это не является абсолютно необходимым.
Однако есть одна очень важная сторона повреждения от царапин: это решает проблему тупика.
Тупик возникает, когда ни одна из сторон не может нанести ущерб другой. Если вы вложите все свои ресурсы в оборону, а некоторые - в атаку, ваш персонаж может не получить урон, но он также не сможет наносить значительный урон . Таким образом, вы можете столкнуться с столкновением, в котором ни одна из сторон не сможет нанести урон, поэтому битва продолжается вечно. Это особенно если у вас нет случайной механики, такой как критические удары (что я тоже ненавижу).
По крайней мере, с повреждением царапины, кто- то в конечном итоге победит. Это может быть только тот, у которого больше всего Hp или наибольшее количество атак, но битва закончится.
Поэтому мне нравится иметь боевую систему, в которой всегда будет результат. Но я не люблю иметь царапины. Каковы мои альтернативы?
Альтернативы, которые не включают в себя случайные числа; Я хочу, чтобы бой был на 100% детерминированным. Если ведется та же битва, должен произойти точно такой же исход.
Если вам нужны подробности игрового процесса, подумайте о пошаговом бою, где битва может быть автоматизирована (вы разрабатываете свои силы, а затем настраиваете их против других).
источник
Ответы:
Вы могли бы реализовать систему усталости / выносливости. По мере того, как все больше и больше атак выполняется, игрок становится все более утомленным, и это означает, что он не может поддерживать такую хорошую защиту (когда рука щита внезапно начинает чувствовать себя действительно тяжелой после 50-кратного удара мечом), когда усталость увеличивается, защита падает. Это означает, что игрок, который развил хорошего персонажа, не получит урона в быстрых схватках, но более длительный бой приведет к увеличению урона, предотвращая тупик.
источник
Это кажется очень открытым вопросом. Решения (которые еще не упомянуты) для предотвращения тупиков:
источник
Как вариант, вы можете добавить накопление раны. Конечно, гигантский медный топор не проникает сквозь тяжелую стальную броню, но наносит тупой урон и может даже сломать кости. То же самое верно для пуль и жилетов.
Каждый раз, когда персонаж поражен, превращайте часть пронзительного и рубящего урона в тупой урон, который накапливается. После определенного порога (который зависит, например, от выносливости) накопленный урон будет влиять на боевые навыки персонажа. Некоторые варианты здесь:
Броня может быть менее эффективной при попадании в те же части тела.
Значительные раны: периодические повреждения, слабость из-за боли.
Тяжелые раны: кратковременная потеря сознания (делая персонажа очень уязвимым).
Экстремальные раны: постоянная потеря характеристик (если персонажу удается выжить).
Связанный: Механика повреждения в Крепости Гномов
источник
Реализуйте различные типы урона с помощью брони, которая защищает только от некоторых типов урона. Например, кинетический урон, кислотный урон, урон от огня и т. Д. Никакая броня не должна защищать от каждого типа урона.
Пользователи могут накладывать свои доспехи для защиты от всех типов повреждений, но они не могут защитить от всех типов повреждений одновременно. Это также реализует некоторую стратегию в сражениях, где игрокам приходится переключать типы урона, чтобы пройти через различные уровни брони.
источник
Вы можете просто не иметь защитных характеристик и просто давать большим врагам больше здоровья. Я знаю, что вы хотите избежать гигантских чисел, но если вам нужна детерминированная пошаговая игра, в которой атаки не основаны на непосредственном вводе игроков (нет вероятности, что человеческая ошибка испортит атаку), статистика защиты выглядит немного бессмысленной также.
Если вас беспокоит аспект презентации, вы можете разбить HP на пункты Hearts или Health, например, 100 л.с. = 1 сердце. Сердца начинают чернеть, когда персонаж теряет здоровье, а затем полностью исчезают. Таким образом, игроку легче понять, чем 129301239103123hp, но вам не нужно беспокоиться о балансировке какого-то магического уравнения.
Если вы беспокоитесь о реализме, вы всегда можете оживить его, чтобы он выглядел так, как будто цель атаки успешно блокирует, или только слегка царапается до смертельного удара.
источник
Добавьте изнашиваемую механику для защиты. Сделайте каждую атаку немного ослабленной защитой цели.
В конце концов, даже слабая атака измотает защиту цели достаточно, чтобы нанести реальный урон.
источник
Если вы в порядке с выходом из мира целых чисел и готовы оживить систему вычитания, вы можете использовать алгоритм уменьшения урона от Warlords Battlecry III:
Эта функция ведет себя очень похоже на приведенный выше псевдокод:
Когда DR меньше, чем атака (входящий урон), он ведет себя как атака - k * DR, где k равно 0,693 (
ln(2)
если быть точным). Когда DR близок или больше, тогда входящий урон, чем урон, уменьшается вдвоеDR/attack
. Например, для DR = 30 и атаки = 10, урон будет 1,25 (атака делится вдвое).Это может показаться более сложным и трудным для человека, чтобы оценить, но это без взлома и изменения в обоих параметрах актуальны. Если атакующий получает дополнительную силу атаки или защитник получает или теряет DR даже на небольшие суммы, полученный урон изменится.
источник
Используйте поплавки.
Даже если вы даете игроку целое HP, используйте float для hp и float для урона.
Сейчас я использую фракционные классы брони, где броня 1.0 непобедима, а броня 0.0 означает «полный урон». Урон уменьшается как:
Эта формула дает эффект "двойного урона", устанавливая броню на -1.
Я также классифицировал урон по категориям, см. Например, виды сотрясений / взрывных повреждений Starcraft или систему типов повреждений Евы .
Так что теперь, маленький чертенок царапает вашу броню класса .99 в конечном итоге Cherry Tap вас до смерти, но атаки, как представляется, не наносят урон игроку (он останется на 1 л.с. при переходе с 1.15 л.с. до 1.1499 л.с. следующая атака ..)
источник
График умений может поставить некоторые умения, наносящие урон, в качестве предварительных условий для защитных умений более высокого уровня, чтобы уменьшить способность игрока делать очень асимметричные сборки.
Критические удары могут нанести некоторый урон, если защита не слишком высока. Если вы сделаете их периодическими, а не случайными, у вас все равно будет детерминированный бой.
После нескольких неудачных попаданий вы можете автоматически уменьшить скорость атаки в пользу повышения вероятности попадания и урона. Ваш супербыстрый царапающий персонаж делал десять атак в секунду; теперь, после пятнадцати атак, не наносящих урона, он получает три атаки в секунду при + 50% к удару и + 200% урона. Это похоже на критические попадания, но это быстрее для такой ситуации.
Вы можете использовать процентное снижение урона от брони, но чтобы сделать его более интересным, чем другой способ увеличить максимальный запас здоровья, вы можете сделать так, чтобы процент уменьшения был больше для более слабых попаданий. Например, 90% снижения за 1-20 л.с. урона, 60% за 20-30 и 30% за все остальное.
Наконец, не беспокойтесь о больших количествах. Они дают вам гораздо более высокую степень контроля, чем маленькие. Если персонаж первого уровня начинается с 100 очков жизни, это значит, что вы можете убить его за семь попаданий, но не за пять. Это означает, что вы можете получить урон от яда и другие эффекты с течением времени, которые не будут ужасно разрушительными (а также те, которые, если хотите). Если вам не нравится отображать большие числа, найдите способ не отображать их.
источник
Вы говорите, что хотите, чтобы всегда было решение, но должно ли это быть победой?
Рассмотрим подход, используемый Доминионами 50-м ходу атакующий автоматически разбегается. На 75-м ходу защитник автоматически разбегается. (Маршрут не работает автоматически - некоторые юниты невосприимчивы к маршрутизации, и даже если неподвижный юнит уходит, он не может фактически уйти.) На 100 ходу все, что осталось, погибает.
Хотя я не согласен с тем, как именно он функционирует (есть ситуации, когда просто требуется слишком много времени, чтобы убить другую сторону), основная идея остается в силе.
Что бы я предложил:
Посмотрите на некоторую меру силы каждой стороны. (Хитпоинты - очевидная отправная точка, но будьте осторожны, у Доминиона есть проблема в этом отношении, когда подсчитывается «потеря» хитпоинтов, которая не имеет смысла - изменение формы, вызов и т. Д., Что приводит к разгрому армий из-за потерь, когда они даже не бери.) Следи за достигнутым минимальным значением и запомни, сколько оборотов было с тех пор, как был установлен новый минимум. Если он идет слишком долго без установки нового минимума, у вас есть какой-то тупик, и атакующий должен отступить.
источник
Альтернатива, которую я еще не видел, состоит в том, что, поскольку значение вашей брони делает атаку отрицательной, вы можете добавить немного ГСЧ для истинного блока:
Чем выше дефицит урона после брони, тем больше атак персонаж может заблокировать, прежде чем получит очередной урон от царапин.
Это обеспечивает небольшую дополнительную шкалу для защитных характеристик, но не делает их неуязвимыми, а также позволяет атакам проходить через эту механику блоков, если вы этого захотите, и, естественно, предотвратит тупики.
Поединки могут занять много времени, если вы собрали статистику в своей защите над атакой, но в итоге это получится.
источник
Множество трехмерных файтингов позволяют избежать повреждений от царапин. Примерами являются Tekken и Soul Calibur 2. Они избегают этого, затрудняя идеальную защиту. Некоторые атаки слишком быстры, чтобы реагировать на них. Я думаю, что это довольно хорошее решение.
источник
Я думаю, что снижение эффективности обороны не является хорошим вариантом. Депопуляция игрока приводит к плохому игровому опыту. Почему бы не пойти наоборот?
Почему бы не включить Атаку с течением времени. Это увеличивает урон от царапин со временем, уменьшая стимул к блокировке. В середине поздней игры персонаж может убить другого, одновременно крича на него, пока он защищается.
Некоторые pnp rpgs реализуют «механизм натяжения». Каждый ход напряжение увеличивается на единицу. Все броски имеют добавленный модификатор значения натяжения, подталкивая битву к концу.
Другая идея, исходящая из файтингов, - это атака, проходящая через защиту. Я не знаю, является ли ваша игра пошаговой или в реальном времени, но эта атака также может открыть противнику комбо или временно отключить его или некоторые его способности.
Я считаю, что хитрость не в том, чтобы ослабить оборону. Сделайте другие варианты такими же хорошими, как защита, или сократите время, когда защита является хорошим вариантом.
источник